Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Patches programmieren (https://www.delphipraxis.net/44710-patches-programmieren.html)

MathiasSimmack 23. Apr 2005 17:15

Re: Patches programmieren
 
Sicherer als so ein Versionsnummern-Vergleich ist aber allemal ein binärer Vergleich, so wie das dir mir bekannten Patchmaker machen. ;)

Jelly 23. Apr 2005 17:43

Re: Patches programmieren
 
Zitat:

Zitat von MathiasSimmack
Sicherer als so ein Versionsnummern-Vergleich ist aber allemal ein binärer Vergleich, so wie das dir mir bekannten Patchmaker machen. ;)

Ja, aber eine unterschiedliche Binärdatei heisst aber noch nicht zwangsläufig, daß es eine neue Version darstellt... Es kann ja auch eine veraltete sein... Um einen einleitenden Versionencheck vor dem Patch kommt man meines Achtens nicht herum.

Neben den von dir genannten Delphi Programm (update.exe) gibts auch noch andere Lösungen. Patchfactory ist z.B ein alternatives Tool. Kostet aber leider ein bischen :-(

Aber alles in allem wurde ein Programm bislang noch nicht besprochen. Nehmen wir an, auf einem Webserver liegt ein Patch (also ein richtiges Patch, das nur die Unterschiede beinhaltet), welches eine Version 2.0 zu 3.0 updatet. Das stellt kein Problem dar. Was aber, wenn der Benutzer noch selbst Version 1.0 nutzt, und in einem Schritt auf Version 3.0 updaten will. Das vorliegende Patch ist für ihn sinnlos... MSI Installationsskripte bieten jedoch aúch ein Möglichkeit, dieses Problem zu lösen. Allerdings kriegt man das nicht mit Installshield Express hin, das bei Delphi Prof. beiliegt, sonder man braucht dazu schon die Vollversion oder Wise. Die Dinger kosten aber gleich ein Arsch voll Geld.

Ich bastele gerade selbst an einer Lösung, wie man dieses Problem beheben kann. Das Ganze soll dann irgendwann in Rema einfliessen. Mehr zu dem Programm hier.

Garfield 23. Apr 2005 18:16

Re: Patches programmieren
 
Zitat:

Zitat von PierreB
Das mit nem Hexeditor sollte aber eigentlich auch gehen, oder ?

Dann vielleicht lieber damit: PE Resource Explorer?

3_of_8 23. Apr 2005 18:20

Re: Patches programmieren
 
Zitat:

Zitat von MathiasSimmack
Zitat:

Zitat von 3_of_8
Ich kann für nichts garantieren

Dann lass es lieber. Unter dem genannten Link findet sich irgendwo ein mit Delphi geschriebenes Programm, das den ganzen Patchprozess von sich aus übernimmt. Außerdem kann es Patches mit mehr als nur einer Datei erzeugen. Das heißt, du kannst auf einen Rutsch mehrere Dateien aktualisieren lassen. Ebenso lassen sich neue Dateien hinzufügen und nicht mehr benötigte (obsolete) Dateien entfernen. Und das ganze funktioniert etwas anders als deine Textdatei-Idee. Sorry.

Probieren kann mans ja mal. Wäre eine einfache Möglichkeit, ich probiers gleich mal aus.

MathiasSimmack 23. Apr 2005 18:33

Re: Patches programmieren
 
Ich wollte dich nicht bremsen, so war das nicht gemeint. Probiere ruhig! Nur bedenke bitte, dass die neuere Exe-Datei (oder generell die neue Dateiversion) kleiner oder auch größer als die alte sein kann. Ein Bytevergleich reicht also nicht. Position und evtl. Größe der unterschiedlichen Blöcke müsstest du also auch berücksichtigen, ... usw. usw.

Nicht zu vergessen, dass ein Bytevergleich u.U. ein "Vergleichsprotokoll" erzeugt, das um ein Vielfaches größer ist als die zu patchende Datei. Eine Komprimierung darf´s also auch noch sein. :stupid:

3_of_8 23. Apr 2005 18:44

Re: Patches programmieren
 
:shock: :pale:

Mal schaun. Aber afaik dürfte das die bessere Lösung sein, solange ungefähr die Hälfte der Exe gleich bleibt.

MathiasSimmack 23. Apr 2005 19:15

Re: Patches programmieren
 
Zitat:

Zitat von Jelly
Zitat:

Zitat von MathiasSimmack
Sicherer als so ein Versionsnummern-Vergleich ist aber allemal ein binärer Vergleich, so wie das dir mir bekannten Patchmaker machen. ;)

Ja, aber eine unterschiedliche Binärdatei heisst aber noch nicht zwangsläufig, daß es eine neue Version darstellt... Es kann ja auch eine veraltete sein... Um einen einleitenden Versionencheck vor dem Patch kommt man meines Achtens nicht herum.

Entschuldige, ich habe mich nicht richtig ausgedrückt. Die Tools, die ich kenne, erstellen von der zu patchenden Datei eine Art Prüfsumme o.ä., mit deren Hilfe sie die Datei später als berechtigt erkennen. Wenn die Datei jetzt bereits durch einen anderen (neueren) Patch aktualisiert wurde, ändert sich logischerweise auch diese Prüfsumme, und der alte Patch würde gar nicht mehr funktionieren.
Das Problem, das man sich u.U. alte Dateiversionen einfängt, tritt IMHO nur bei Updates auf, die die zu ersetzenden Dateien komplett enthalten. Also keine Patches im Sinn des Wortes. Und da hast du dann natürlich Recht. In solchen Fällen wird nach der Versionsnummer geguckt. Wenn man dann als Entwickler merkt, dass man gar keine Versionsnummer benutzt hat, na ja ... :lol:

3_of_8 24. Apr 2005 10:23

Re: Patches programmieren
 
Bei BMPs und bei TXTs funktioniert es perfekt, aber ich habe noch ein Prob bei EXEn und WAVs. Mal sehen.

3_of_8 24. Apr 2005 14:24

Re: Patches programmieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bittesehr, funktioniert perfekt. Man muss halt immer zuvor schauen, ob es sich rentiert, einen Patch zu erstellen oder die komplette Datei weiterzugeben.

Mit WinRar kann man die Patches oft noch auf mehr als auf die Hälfte der Dateigröße verringern.

Und wundert euch nicht, wenn es bei manchen Dateien ziemlich lange dauert, wenn ihr auf "Patch erstellen" klickt, schließlich werden die beiden Dateien byteweise verglichen.

Es funktioniert übrigens mit ALLEN Dateitypen, nicht nur mit EXEn.

MathiasSimmack 24. Apr 2005 14:29

Re: Patches programmieren
 
Zitat:

Zitat von 3_of_8
Bittesehr, funktioniert perfekt. Man muss halt immer zuvor schauen, ob es sich rentiert, einen Patch zu erstellen oder die komplette Datei weiterzugeben.

Kann man bei einem Patchtool bequemer einstellen. :gruebel: Jetzt muss ich allerdings selbst mal überlegen. Kann MakeUpd den Ordnervergleich (zwischen Ordner "alt" und Ordner "neu"), bei dem alle Dateien automatisch verglichen werden, von sich aus, oder war das eine der Modifikationen, die ich für mich privat gemacht habe? :oops: Ich weiß es nicht mehr. Habe das Ding auch schon ewig nicht mehr gebraucht. Wie auch immer. Man kann den Ordner mit der Version 1.0 angeben und dann den Ordner mit der Version 1.1. Das Tool liest alle Dateien ein, ignoriert die, die sich nicht geändert haben und listet alle auf, die aktualisiert werden müssen, hinzukommen oder entfernt werden sollen. Dann konnte man noch entscheiden, ob eine der zu patchenden Dateien doch lieber komplett integriert sein soll (Vor-Version damit unerheblich), und per Knopfdruck ging´s dann los.

Zitat:

Mit WinRar kann man die Patches oft noch auf mehr als auf die Hälfte der Dateigröße verringern.
:stupid: Üblicherweise ist der Patch selbst gepackt, so dass man keinen externen Packer mehr braucht.

Zitat:

Und wundert euch nicht, wenn es bei manchen Dateien ziemlich lange dauert, wenn ihr auf "Patch erstellen" klickt, schließlich werden die beiden Dateien byteweise verglichen.
Ich weiß nicht, wie MakeUpd vorgeht, aber da geht´s ratzfatz. Ich sagte ja, ganz so einfach ist das Thema nicht. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr.
Seite 3 von 5     123 45      

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