Entwickler-Ecke
Sonstiges (Delphi) - Binär Patches
thebe - Mo 23.12.02 16:10
Titel: Binär Patches
Moin allesamt
Ich hab wieder nen anliegen, diesma theoretischer Natur. :)
Ich bin immo dran nen Update Programm zu schreiben, was sich aussem Inet Patches runterlädt und diese dann installiert. Soviel zur Vorgeschichte, nun kommt der Kern.
Diese Patchfiles, die ja nur das beinhalten was sich zwischen zwei Datein WIRKLICH ändert, müssen ja irgendwie erstellt werden, daß auslesen und anwenden auffe älteren Datein is ja nit das Ding. Das Berechnen der Patch Datein macht mir Schwierigkeiten.
Allgemein:
-------------------
Patch Datein sind ja wie folgt aufgebaut. Erst komm CRC und Dateigröße von alter Datei, das gleich von der neuen Datei *zum gegen checken*, dann kommt für jede der drei operationen nen ID Byte. Diese Operationen sind: Einfügen, Anhängen, Löschen. Nach diesem ID Byte kommt nen Cardinaler Wert wo die Änderung erfolgt, danach ein Cardinaler wieviele Bytes dann hinzugefügt/eingefügt/gelöscht werden und ggf. kommen danach dann die Bytes die hin/eingefügt werden.
Alles so weit kein Thema
Methoden die Datei zu berechnen:
-----------------------------------------------
Fangen wir mal an mit EINFÜGEN. Dazu benutzen wa 2FileStreams, einer für die jeweilge Version. Die beiden Filestreams lesen die Datein solange byet für byte aus, bis die neuere Datei nimma mit der alten übereinstimmt. Dann speichert der alte Filestream das momentane und das nächste Byte ab und der neue FileStream geht solange durche neue Datei, bis er das abgespeicherte nächste Byte zufassen kriegt. Was zwischen diesen beiden Bytes inner neuen Datei lag, wird abgespeichert inner Patch Datei.
so far so good
Das ANHÄNGEN funktioniert *meiner Theorie nach* so ähnlich. Der einzieg Unterschied ist, daß Daten angehängt werden, wenn der alte FileStream ans EOF der Datei kommt und der neue FileStream noch munter weiterlesen kann.
so far so good
Aber NUN:
Wie kann ich das rauskriegen mit dem Delete ?
Wenn nun inner neuen Datei EIN Byte gelöscht wurde, würde das Prog darauf eingehen als müsse was eingefügt werden, und das kann teilweise ziemlich heftig groß sein. Das Prog sucht ja durch die neue Datei bis es das eigentl. zu löschende Byte wieder gefunden hat. Und wenn das am Ende der Datei is, dann würde das Ding nu ma eben bis zum Ende der Datei alles aufschreiben.
Ich wäre über Hilfe und ggf. Vorschlägen zu besseren Methoden bei INSERT und APPEND sehr verbunden. Ich habe bereits mir andere Quellcodes dazu angeguckt, bin nur leider nit wirklich draus schlau geworden und kann mit ner guten Dosis Theorie-Hilfe das besser verstehen :)
Danke scho ma im Vorraus
MfG
-Thebe
Delete - Mo 23.12.02 17:44
*gääääääääääääähn*
Entschuldige, aber hast du schon mal an die Suchfunktion gedacht? Es gibt nämlich bereits einen Thread dazu, der -welch´ Überraschung!- mit dem schnöden Suchwort
Patches
gefunden werden kann. Voilà:
Software updaten?Welche Möglichkeiten gibt es? [
http://www.auq.de/viewtopic.php?t=2668&highlight=patches] Mittendrin ein Link zu einem bereits fertigen Delphi-Tool, mit dem du Patches erstellen kannst. Dank Quellcode kannst du dir sogar ansehen, wie der Entwickler das gemacht hat.
thebe - Di 24.12.02 03:01
Den Thread sowie die Software drinne hatte ich scho 2 Tage vorher angeguckt.
| Zitat: |
| Ich habe bereits mir andere Quellcodes dazu angeguckt, bin nur leider nit wirklich draus schlau geworden und kann mit ner guten Dosis Theorie-Hilfe das besser verstehen |
Ich wills verstehen und nicht nur nen paar Zeilen kopieren und in mein eigenes Prog einfügen. Ich arbeite auf Lerneffekt und nicht Schnelligkeit bei der Entwicklung.
Trotzdem Danke und frohe Weihnachten
-Thebe
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!