![]() |
Re: Patches programmieren
Zitat:
Das mit nem Hexeditor sollte aber eigentlich auch gehen, oder ? |
Re: Patches programmieren
Das ganze muss nicht sein wenn man die Ressourcen aus DLL's läd!
|
Re: Patches programmieren
wenn man viel auslagert sind die einzelenen dateien kleiner, dann muss man nur die änderungen weitergeben.
problem beim patchen ist wenn sich z.b. die größe einer exe ändert,dann wirds komplizierter. Wollte mal so einen patchersteller schreiben wenn ich in den nächsten tagen mal zeit habe mach ich das mal :) |
Re: Patches programmieren
Zitat:
Fakt ist: sobald sich ein Programm aendert, muss man die Aenderungen zum Kunden bringen. Ob ich eine DLL patche oder eine EXE macht keinen Unterschied ;) Greetz alcaeus |
Re: Patches programmieren
DLL patchen ginge bei mir auch nicht weil ich keine DLL's verwende. Und die Endanwendung ist mittlerweile 3500KB groß, wenn ich da jedesmal die richtige EXE austauschen müsste... ;)
|
Re: Patches programmieren
Hallo,
da ich das grad für mein aktuelles Projekt umgesetzt habe, hier mal, wie ich das gelöst habe. Ich habe ein Zusatzprogramm (Updater.exe) geschrieben, daß aus dem Hauptprogramm aufgerufen wird. Das Hauptprogramm wird dann geschlossen (eine offene Datei zu patchen wird schwer). Das Update-Programm läd sich dann von meiner Homepage das aktuelle Update herunter, das kumulativ ist. Alle relevanten Daten werden dann getauscht und das Update-Programm ruft dann das Hauptprogramm wieder auf und beendet sich selber. Das ganze habe ich noch mit einer Art Scriptsprache versehen, falls doch noch andere Programme vor dem Hauptprogramm ausgeführt werden müssen, oder falls andere Dateien in anderen Verzeichnissen kopiert werden müssen. Jetzt muß ich mir nur noch überlegen, wie ich das mache, wenn ich das Updater-Programm updaten will. Vermutlich prüfe ich noch vor dem Aufruf des Updater-Programms, ob auch dort eine neue Version existiert und tausche es vor dem Aufrufen auf. Ist zwar kompliziert und mit viel Arbeit verbunden, aber bei klappt das einwandfrei. Ablauf: * User oder Programm prüft auf Updates * Update wird gefunden und das Updater-Programm wird geprüft, ob auch hier neue Updates vorliegen * Wenn ja -> aktuelles Updater-Programm wird heruntergeladen * Hauptprogramm ruft Updaterprogramm auf und beendet sich selbt * Updater-Programm läd Dateien herunter und aktualisiert * Updater-Programm ruft wieder Hauptprogramm (oder andere) auf und beendet sich selbst Symantec macht das mit Live-Update ganz ähnlich. Die Scriptdatei sieht bei mir z.B. so aus:
Code:
Das Wort <UPDATE> leitet das Update ein
<UPDATE>
<FILES> /update/ramdefrag/onlineupdate/;ram_defrag.zip;[PROGRAMDIR];true </FILES> <START> [PROGRAMDIR]ram_defrag.exe;0 </START> </UPDATE> Unter <FILES> stehen die Dateien, die heruntergeladen werden, und wohin entpackt werden soll. "True", ob überschrieben werden soll, oder nicht. Unter <START> alle Programme, die danach wieder aufgerunfen werden sollen. Die Zahl dahinter in Sekunden wielange gewartet werden soll, bis sich das Updateprogramm dann selbst beendet. Bei weiteren Fragen - frag ;) |
Re: Patches programmieren
Zitat:
Wenns wie bei mir 3,5 MB sind, was hast du für nen Traffic im Monat ? |
Re: Patches programmieren
Zitat:
Im Prinzip machen beide das gleiche. Nur ein normaler Patch erwartet eine ganz bestimmte Version, weil er logischerweise immer nur zwei Dateien miteinander vergleichen kann. Bitte nicht falsch verstehen. Der Patch selbst kann meinetwegen 1000 Dateien aktualisieren. Aber bei jeder dieser 1000 Dateien wird immer nur die zu patchende alte Version (1.0, bspw.) mit der neuen 2.0 verglichen. Wer also bereits die Version 1.1 benutzt, kann den Patch 1.0->2.0 nicht verwenden, bzw. bestimmte Dateien, die nicht der erwarteten Version entsprechen, werden nicht aktualisiert. Und da kommt das kumulative Update, das alle Updates enthält. Kennt man ja auch von den IE-Sicherheitsupdates. Meist reicht es, das jeweils aktuellste Update zu ziehen. Die vorher veröffentlichten sind mit drin. Darum kann so ein Update von einem User angewendet werden, der eine vollkommen ungepatchte Version hat. Und es kann ein User anwenden, der die vorher veröffentlichten Patches schon drauf hat. In solchen Fällen werden die Dateien, die sich innerhalb der einzelnen Versionen verändert haben (1.0->1.1->1.2->...->2.0) komplett reingepackt, weil eben der gezielte Vergleich zwischen Version X und 2.0 nicht möglich wäre, ohne Benutzer anderer Versionen auszuschließen. |
Re: Patches programmieren
zum erstellen von patches nehme ich derzeit Patchmaker (s kumulative Update), ist sogar kostenlos.
![]() Rauf auf den Webserver damit. Ein Kleines updateprogramm fragt mit einem code an, ob eine neue version vorhanden ist. wenn ja wird das entsprechende File geladen. Die Frage ist jetzt nur, wie vergibt man diese prüfcodes. Das kann a) die Anwendung mit der Version sein, davon einen md5 machen b) wie a) nur dass noch lizenz (Free,Privat,Pro) unterschieden wird, wenn man bestimmte Patches nur speziellen Lizenznehmern gönnen will/darf. Man kann hier auch einen Berechtigungs-key einbinden, der nur 1 Jahr gilt. b) md5 über jede Datei und diese einzeln auf dem Server abfragen bei a) und b) muss das update-programm den code irgend wo herholen und bei dem update muss dieser auch aktuallisiert werden. |
Re: Patches programmieren
Zitat:
Im März hatte ich 5125033 KB bei knapp 130.000 Hits - war aber teilweise schon das 10-fache :wink: Zum prüfen, ob eine aktuelle Version vorliegt: In meinem Programm gibt es bestimmte Variablen, die mit jeder neuen Version geändert werden. z.B.
Delphi-Quellcode:
usw...
ProgVersion := '2.80';
ProgRevision := 'Alpha2'; ProgCopyrightYear := '©2002 - 2005'; ProgCopyrightFirm := 'Catbytes Software'; ProgCopyrightAuthor := 'Armin Cristalli'; ProgName := 'RAM Defrag'; ProgType := 'SHAREWARE-VERSION'; Diese Variablen nutze ich dann im ganzen Programm - sei es um die Caption zu erzeugen oder eben die Version zu prüfen. So vermeide ich auch, daß irgendwo noch eine alte Versionsnummer im Programm steht. Auf dem Server liegt dann eine Textdatei, in der die Version auf dem Server gespeichert wird. Die wird per "HttpCli" aus den FPiette-Komponenten runtergeladen und verglichen. Stimmen beide überein, ist die Version noch aktuell - wenn nicht, startet eben auf Wunsch der Download wie oben beschrieben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz