Programm mit Version (Programmieren)

Programm mit Version (Programmieren)

Hallo,

ich wollte mal fragen.

Ich würde gerne ein Programm erstellen. Das es immer in höheren Versionen gibt.
Also als erstes 1.00 und dann ist im Programm ein Update eingebaut. Der immer online guckt ob es ne neue Version gibt.
Man soll diese Version aber nicht zurücksetzten können. Und wenn man es deinstalliert ist und man ne ältere Version drauf macht, das irgendwo noch ne datei ist, die anzeigt, dass diese Installtion mit der Version nicht funktioniert.

Mit welchem Programm mach ich das?

Danke im Vorraus!
würd mich auch mal interrissieren
Das war nähmlich cool.

Ein Beispiel könnte man von der PSP nehmen.
Nur die hat Flashspeicher.
kannst du überhaupt programmieren? Weil wenn ja, wüsstest du ja wohl, dass man da ganz einfach tricksen muss. Bei der PSP kann man einfach nicht downgtraden, da es keinen USB-Zugang zum Flash gibt...Bei deinem Programm müsste man in der Tat, ganz einfach nur deinstallieren und alles wäre wieder bei NULL. Bei der PSP könnte man ja theoritsch auch ganz einfach alles "deinstallieren" und die niedrigste fw(1.00) draufspielen. Du könntest bei deinem Programm aber vielleicht ne Datei erzeugen lassen(natürlich verschlüsselst), die du dann ohne das Wissen, des Benutzers auf der Festplatte versetckst. In dieser Datei ständen dann die Update-Informationen. Und wenn jemand sich dein Programm installieren will, würde es zuerst in dieser Datei prüfen, ob nicht bereits vorher mal eine höhere Version installiert worden war...
Genau so meine ich das. Nur mit welchem Programm soll ich sowas erstellen.

Ja ich habe schonmal mit porgrammieren angefangen. (Clickexe).

Aber wie meinste das mit dem Verschlüsseln?

Aber vielen dank.

EDIT: Und was ist wenn derjenige Systemwiederherstellung macht? Dann hat er bestimmt wieder die alte drauf.
Du machst deinem Namen nicht gerade Ehre^^

Du programmierst also erstmal dein Programm in Version 1.00(oder was auch immer).

Nun machst du einfach über fstream ne Datei, in der sozusagen dein Spielstand liegt.


#include <iostream>
#include <fstream>
...

string UpdateINformationen;

int main(void)
{
//Direkt zum Start
ifstream IN1("Save.xxx", ios::in);
if( !IN1) //Falls noch keine Vorversion
//installiert wurde
{
ofstream OUT1("Save.xxx");
OUT1 << UpdateInformationen;
}
else
{
IN1 >> UpdateInformationen;
}
if( UpdateInformationen != Aktuell )
{
Update();
}
...//Fortsetzung deines Programms
}


Ich weiß nicht, was du mit "mit welchem Programm soll ich das machen" meinst?

Verschlüsseln geht auch ganz einfach:
Einfach die UpdateInformationen in nem char-Array speichern und jedes Feld um nen bestimmten Wert erhöhen->bzw. beim entschlüsseln wieder erniedrigen-das Prinzip der Ceasar-Verschlüsselung^^



char UpdateInformationen[size];

for( int i = 0; i < size-1; i++)
{
UpdateInformationen += 2;
}


Ich bin mir jetzt nicht ganz sicher, es könnte aber sein, dass du die UpdateInformationen erst in einen Integer konvertieren musst. Das sollte aber per atoi() ganz schnell gehn. Umgekehrt dann mit itoa().

Falls du nichts, oder nur wenig davon verstanden hast, habe ich meinen Zweck erfüllt: Dich dazu zu bringen, erstmal die Grundlagen zu lernen, bevor du dich mit den Kleinigkeiten wie Verschlüsselungen, oder Updates auseinandersetzt...Kannst aber in jedem Fall davon ausgehen, dass du mit dem hier gegebenen Code ohne Verständnis so oder so nichts anfangen kannst...
@DarkAlex
Lerne erst einmal richtig Programmieren;
Wenn Du dann in der Lage bist ein halbwegs anständiges Prog. auf die Beine zu stellen, dann ist Dein jetziges Problem für Dich mit Sicherheit auch nicht mehr vorhanden;

Was soll man denn für ein Programm brauchen?!?
Du erstllst Deine Update-Datei mit dem gleichen Prog. wie auch Deine Hauptdatei;
@ Yoshi Party Vielen dank.
ich verusche was ich kann.

@ magic mp

Was meinst du damit?
Mit welchem Programm soll ich mein Programm erstellen?

Ich meine so C++ oder so.
@DarkAlex
Was denn an meinem Post so schwer zu verstehen?!?
Du kannst für deine Erweiterungen das selbe Prog. verwenden, wie auch für das Hauptpogramm, dass Du erstellt hast;
sprich:
wenn Du mit c++ Dein Prog erstellt hast, dann kannst Du auch mit C++ Deine erweiterung schreiben;

Wie schon erwähnt:
lerne erst einmal richtig zu Proggen, bevor Du Dir Gedanken über ein Update für ein Programm machst, dass noch gar nicht existiert;
http://www.mogelpower.de/forum/showmsg.php?id=2754165

Das hört sich aber verdächtig nach "was vollkommen falsch verstanden" an. C++ ist kein Programm, sondern eine Programmiersprache, in der man Programme schreibt...
@Yoshi party

so meine ich das auch. Ich weiß was C++.
Und was meinst du dann mit "mit welchem Programm?"?
Willst du wissen, wie man code in eine exe umwandelt?
Einfach nach ner IDE suchen->da sind die Kompiler, die den Code zusammenfassen schon enthalten.
Ich benutze Visual Studio->ist aber shareware(wenn man nicht weiß woher^^)
Gratis, aber gut für Anfänger ist DevC++
Da sind zwar noch ne Menge Bugs drin, aber die stören erst bei größeren Projekten...
Ja ich nheme auch C++. Das dumme ist man braucht noch ein MinGW Studio um die exe richtig zu öffnen.
Also das Programm erstellt sie in ein richtige exe.

Ich guck erstmal was ich so hinkriege.

Melde mich bald nochmal.
wieso benötigst du ein Programm, um eine exe zu starten? google mal nach DevC++
Damit sollten die ersten Programme schnell was herzeigen...
Das programm Comprimiert es irgendwie nochmal richtig.
Wenn ich mein Testporgramm starte, kommt diese MS DOS und schließ sofort wieder.

Weißte Du auch ne Seite wo ich richtig C++ lernen kann?

Danke.
Das sich das Fenster wieder schließt ist ganz normal->brauchst keine extra Proggis also...
Das liegt daran, dass dein Programm nichts mehr zu tun hat und sich folglich selbst beendet. Du musst bloß was hinmachen, was dem Programm ne Aufgabe gibt. Zum Beispiel warten, bis der User ne Taste drückt, oder ne Schleißfe erzeugen.
Am besten du machst am Anfang
#include <conio.h>

und kurz vor return 0; noch ein getch();
Das wartet solange, bis du ne Taste drückst...

Zum Lernen findest du bei google sicher ne Menge tuts, bei denen aber dummerweise fast nie die codes funktionieren->da gehts dann mehr ums Verständnis. Den größten Teil habe ich mit folgenden tuts gelernt:
http://www.volkard.de/vcppkold/inhalt.html
http://tutorial.schornboeck.net/inhalt.htm
http://www.cpp-tutor.de/cpp/intro/hinweise.htm

Wenn du die durch hast, ist dein Grundwissen schonmal vorhanden. Danach kannst du dir ja dann die Feinheiten bei google ersuchen...
Genau meiner meinung.
Die meinsten Codes gehenm nicht.

Okey ich werde sie mal testen.

VIELEN DANK!
Sorry für den Doppelpost, kann nicht mehr Editieren!!!

Ich wollte kurz fragen. Mit C++ kann ich da nur Programme für sowas erstellen kann oder auch so richtige Programme erstellen? <<Das ist nur ein Beispiel.

Ich steige da noch nicht richtig durch.
nur ist gut.

Natürlich kannst Du auch "richtige" Oberflächen machen. Für Windows mit der API oder auch plattformübergreifend mit diversen Drittanbieter Produkten.
Google mal nach: C++ GUI
Okey ich gucke mal.

Danke!
Ich lerne im Moment die Win32-API. Ne API ist für die Grafik-Programmierung zuständig. DirectX und OpenGL sind sehr bekannte 3D-APIs und werden häufig für die Spiele-Entwicklung verwendet. Mit der Win32-API kann man Programme wie oben angeführt erstellen.
Ich rate dir aber dringenst davon ab, gleich mit ner API anzufangen. Lern c++ und wenn du das KANNST, überleg dir, welche API du lernen willlst. Es ist deutslich schwieriger und komplexer ein Programm mit graphischer Oberfläche zu erstellen. In etwa als würdest du ne neue Programmiersprache lernen und dann mit c++ verbinden...
Es soll ja aber ein richtiges Programm werden. Nicht soeins (siehe 1. Bild) ohne Version.
Wenschon ein richiges cooles.
ich würd am liebsten auch heute noch mein neues GTAV für die PS4 realesen. Leider hab ich keine Ahnung, wie ich so ein Spiel alleine an einem Tag programmieren sollte...Glaub mir, lern besser erstmal an der Box und später dann mit den APIs. Du kannst dir ja mal nen Source-Codes eines WinAPI-Projekts aus dem Internet ansehn, nur um zu verstehen, was ich meine...

EDIT:
hier mal das Grundgerüst:


#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("Klassenname");
HWND hWnd;
MSG msg;
WNDCLASSEX wndclassex;

wndclassex.cbSize = sizeof(WNDCLASSEX);
wndclassex.style = CS_HREDRAW | CS_VREDRAW;
wndclassex.lpfnWndProc = &WndProc;
wndclassex.cbClsExtra = 0;
wndclassex.cbWndExtra = 0;
wndclassex.hInstance = hInstance;
wndclassex.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wndclassex.hCursor = LoadCursor (NULL, IDC_ARROW);
wndclassex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclassex.lpszMenuName = NULL;
wndclassex.lpszClassName = szAppName;
wndclassex.hIconSm = wndclassex.hIcon;

if(!RegisterClassEx(&wndclassex))
{
MessageBox (NULL, TEXT ("RegisterClassEx fehlgeschlagen!"),
szAppName, MB_OK | MB_ICONERROR);
return -1;
}

hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, // erweiterter Fensterstil
szAppName, // Name der Fensterklasse
TEXT ("Fenstertitel"), // Fenstertitel
WS_OVERLAPPEDWINDOW, // Fensterstil
CW_USEDEFAULT, // X-Position des Fensters
CW_USEDEFAULT, // Y-Position des Fensters
CW_USEDEFAULT, // Fensterbreite
CW_USEDEFAULT, // Fensterhöhe
NULL, // übergeordnetes Fenster
NULL, // Menü
hInstance, // Programm-Kopiezähler (Programm-ID)
NULL); // zusätzliche Parameter

ShowWindow(hWnd, iCmdShow);
UpdateWindow(hWnd);

while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}

UnregisterClass(szAppName, hInstance);

return (int) msg.wParam;
}

// Die Hauptnachrichtenschleife
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;

switch(message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 0, 0, TEXT("Hello World!"), 12);
EndPaint(hWnd, &ps);
return 0;

case WM_CLOSE:
DestroyWindow(hWnd);
break;

case WM_DESTROY:
PostQuitMessage(0);
return 0;
}

return DefWindowProc(hWnd, message, wParam, lParam);
}
Ich weiß nicht.
Eigentlich könnte ich ja wieder mit Clickexe anfangen.
Da gibts auch Option wie: "aus INI lesen" und es ist eigentlich viel leichter zu Pogrammieren.
musst du selber wissen...
Was meinst Du den?

Also C++ zu lernen ist leicht. Aber dann noch mit C++ GUI noch richtig was erstellen? Oh!
Lern am besten einfach mal c++(die Grundlagen). Üb damit und schau mal, was du damit bereits für viele verschiedene, wenn auch noch am Anfang unnütze Dinge erstellen kannst.
Logge dich ein um einen Beitrag zu schreiben.