Erstellen von Exe-Patchen

Antworten
Andreas Kapust
Administrator
Beiträge: 1091
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Erstellen von Exe-Patchen

Beitrag von Andreas Kapust »

Vorwort:

Updates können auf vielerlei Arten erstellt werden. Der gebräuchliche Weg ist per MSI-Paket, als Major- oder Minor-Update. Weiterhin ist aber auch der Weg über Patche möglich, auf die hier eingegangen wird.

Während MSI-Pakete immer den kompletten Datensatz transportieren, befinden sich in Patchen üblicherweise nur die Unterschiede zwischen einem oder mehreren Datenständen von Dateien.

Der AKInstallerMSI ermöglicht es, Patche in der Form MSP und EXE zu erstellen. Für die Erstellung von MSP-Dateien werden immer die kompletten MSI-Pakete für die Basis- und die Ziel-Versionen benötigt.

Als Basis-Version wird bezeichnet, die kleinste Version auf die die Updates aufbauen sollen z. B. das letzte Major-Update.

Als Ziel-Versionen werden die Versionen bezeichnet, die auf dem Zielrechner anzutreffen ist, bzw. die Endversion, die auf dem Zielrechner erzeugt werden soll.

Hierbei müssen alle Versionen berücksichtigt werden, die beim Endkunden anzutreffen sind.

Der Grund für Letzteres sind die oben erwähnten Unterschiede zwischen Dateiständen (Deltas), dazu weiter unten mehr.

Ein MSP führt weiterhin Transformationen für die MSI-Pakete mit, im Grunde interne MST-Dateien zu zuzüglich der Deltas.


Ein Patch speichert (im Allgemeinen) Deltas. Dieses sind Beschreibungen welche Bytes an welcher Stelle einer Datei zu ändern sind, um das erwünschte Ziel, die neue Dateiversion, zu erreichen.

Natürlich gibt es Situationen in denen keine Deltas, sondern die komplette Datei verwendet wird.

Diese kann sein, wenn es per Einstellung gewollt ist, die Datei neu hinzugefügt wurde oder wenn die Summe der Deltas die Größe der Datei übersteigt.

Exe-Patche gehen im Grunde den gleichen Weg ohne das komplette Basis- oder Ziel-MSIs vorhanden sein müssten.

Weiterhin beschränken sich EXE-Patches auf Dateien und Registry, es erfolgt einerlei Transformation der MSI-Pakete oder eine Abarbeitung der MSI-Sequenzen.

Dieses mag auf den ersten Blick eine Einschränkung sein, kommt aber mit einer weitaus einfacheren Handhabung und Erstellung daher.


Ab hier folgt nun eine Beispiel für die Erstellung eines (Quick) EXE-Patches.


Bild

Hierzu wird der entsprechende Projekttyp auf der Neues Projekt-Seite ausgewählt.

Bild

Und um es einfach zu machen, wählen wir hier auch ein komplettes MSI-Paket als Basis (in diesem Fall die Version 5.0.600) und als Ziel die Version 5.1.100 (die Versionen dazwischen lassen wir der einfachhalber weg).

Bild

Ist dieses erledigt, werden die jeweiligen Dateien in den jeweiligen Ordnern angezeigt. Zwar besteht die Möglichkeit, weitere Dateien hinzu zuzufügen oder zu entfernen oder abzuwählen, aber auch dieses belassen wir einfachhalber so, wie es ist.

Bild

Nach dem Klick auf Fertig stellen werden die Dateien in den PatchCache entpackt und unveränderte übergangen.

Wozu der PatchCache?
Zum Einen müssen die Daten aus dem MSI irgendwohin und zum Anderen benötigen wir eine verlässliche Datenquelle. Also ein Ort, an dem die Dateien nicht versehentlich verändert werden.

Bild

Im Anschluss wird die Produkt-Seite angezeigt und an diesem Punkt wäre es möglich, die Version 5.0.600 auf den Stand von 5.1.100 zu bringen. All dieses hätte man natürlich auch manuell anlegen können, so geht es aber am schnellsten.

Bild

Manuell wird nun eine Version 5.1.200 als Beispiel angelegt (und vorher versehendlich eine 5.1.20, die dann aber gleich darauf entfernt wird (siehe Ausgabe nächstes Bild)).

Bild

Im INSTALLDIR wird eine neue Datei hinzugefügt, welche (siehe Ausgabe) auch in dem PatchCache abgelegt wird. Diese Datei dient nur als Beispiel dafür, wie einfach ab diesem Zeitpunkt Updates fortzuführen währen.

Bild

Im Erstellungsvorgang erfolgt eine detaillierte Ausgabe, welche Datei bearbeitet wird und ob ein Delta erzeugt wurde oder ob die Datei komplett übernommen wurde.

Zum AKInstallerMSI
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
Antworten