Registriert seit: 9. Feb 2005
285 Beiträge
Delphi 7 Personal
|
Entwickeln eines Patchers / Updaters
12. Jan 2009, 19:14
Hallo,
ich möchte einen Patcher schreiben, wie solche bei Online-Spielen verwendet werden um manipulierte oder veraltete Dateien, die Teil des Spiels sind, auf den neuesten Stand zu bringen. Der Patcher soll jedes Mal vor dem Programmstart ausgeführt werden.
Dazu hab ich mir folgende Gedanken gemacht:
1) Situation:
a) Auf einer Patch-Server-Maschine liegen die aktuellsten Dateien, die überhaupt jemals gepatcht werden sollten.
b) Daneben liegt der eigentlicher Patcher patch.exe, der auf einem Client ausgeführt wird (die Datei ist möglichst klein).
c) Auf dieser Maschine läuft der Patch-Server, der zum Patchen von den Clients angesprochen werden kann.
d) Auf einem Client liegen alte Dateien, die zum Programm gehören und möglicherweise gepatcht werden müssen.
e) Gestartet wird das Programm (auf dem Client) mit der Anwendung start.exe.
2) Ausführung des Patches:
a) Wenn der Anwender also start.exe startet, verifiziert es zuerst ihre eigene Identität beim Patch-Server (durch einen Hash-Wert oder so) und lädt dann patch.exe für den Client herunter.
b) Auf dem Client wird patch.exe ausgeführt.
c) patch.exe überprüft, welche Dateien auf dem Client "veraltet" sind, lädt diese über den Patch-Server herunter und ersetzt die alten Dateien durch die neuen.
d) Nachdem der Patch-Vorgang beendet ist, wird das eigentliche Programm program.exe gestartet und der Anwender kann mit der aktuellsten Version des Programmes arbeiten.
Dass patch.exe heruntergeladen wird, dient dazu, dass keine gecrackte Version des Patchers ausgeführt wird.
3) Fragen:
a) Ist das eine gute Vorgehensweise ? Oder gibt es noch eine Lücke, die ohne zu viel Aufwand behoben werden kann ? Oder ist etwas überflüssig ?
b) Wie überprüfe ich am besten die richtige Identität von start.exe auf dem Client ?
c) Wichtig !!! Wie kann ich überprüfen, welche Dateien auf dem Client veraltet sind ? Selbe vorgehensweise wie bei start.exe ?
d) (Hat eigentlich noch keine Priorität) Wie kann ich verhindern, dass program.exe vom Anwender einfach ohne Patchen gestartet wird ?
e) Ist das Herunterladen von patch.exe in Ordnung oder ist das ein zu großes Risiko für den Client ?
(Bestimmt gibt es zu einzelnen Fragen bereits Lösungen im Forum (die ich nicht finden konnte), aber mir ist der Gesamtvorgang wichtig und ich wollte alles hier für mich und für andere auf einem Blick haben.)
Ich verlange keine vollständige Lösung. Hilfe an einzelnen Punkten wäre nett.
|