Hallo, der link ist recht gut, aber die Methoden sind meiner Meinung nach etwas zu komplex und unflexibel, also ich finde es geht auch einfacher. Binary Diff hatte ich mir auch überlegt, da Repositories damit arbeiten. Also habe ich mir mal einen kleinen Plan zurecht gelegt, auf was es beim patchen ankommt. Ich gehe jetzt nur von meiner Arbeitsweise aus aber eventuell hilft dem einen oder anderen das sogar. Das was ich hier beschreibe funktioniert sowohl unter Linux als auch unter Windows und MAC.
Meine Software hat immer eine 3 stellige Versions nummer.
x.x.x
Der Version im Programm kann man mit
setzen.
Wenn man eine Autoupdate funktion haben will, sollte man mit einem Installer arbeiten. Der Installer macht im Grunde nichts anderes als Daten zu kopieren. Bei der erst Installation müssen natürlich auch die ganzen Qtlibs mit kommen, falls man die nicht voraussetzen will. Das bläht den Installer natürlich auf. Und es ist sinnlos die beim patchen immer mit zu liefern. Also habe ich eine patch-config für meinen Installer, der dann mal statt 20MB 2MB ist.
In dem Artikel über Binary Diffs kam die Idee mit einer externen Starter Applikation. Das halt ich nicht für gut, da man das auch einfacher lösen kann. Mann muss im Endeffekt nichts anderes machen, als den Installer aus der Applikation aus starten und diese dann Beenden. Somit kann man auch Dateien ohne Probleme ersetzen. Jedoch muss der Installer da flexibel genug sein:
- Er sollte wissen wohin das Programm installiert wurden ist.
- Er muss Softlinks für Linux libs setzten können.
- Er muss auf Konfigurationen zugreifen können (Windows bsp Registry)
- Er muss postInstall-Skripte unterstützen (mit Argumenten)
- Er muss eine Applikation starten können, damit ein automatischer Programmstart gewährleistet ist.
Der Benutzer muss dann nur noch 2Mal auf weiter klicken.
Im Endeffekt muss man sich nur aktiv darum kümmern welchen Patch man von version x zu version y benötigt, der Rest sollte der Installer wissen.
Ich verwende als Installer BitRock for Qt der kann das alles und noch vieles mehr.
Falls es erwünscht ist, kann ich das ganze auch noch ausführlicher machen Wie man einem Programm einen Autoupdater verpassen kann. Dann würde ich das mit Code Beispielen machen und mit BitRock Konfiguration.
so long
jd