BinPatch V1.04 (5. offizielles Release für DOS, Win95, OS/2 und Linux am 22.5.97) |
1. Was ist BinPatch ?
2. Die Lizenz
3. Was leistet BinPatch konkret ?
4. Wozu ist BinPatch sonst noch einsetzbar ?
5. Anforderungen
6. Registrierung
7. Bezugsquellen
8. Distributionen
9. History 10. Geplante Features
11. Kurzanleitung
12. Tips&Tricks
12a.Mögliche Probleme
14. Besonderheiten je Plattform
15. Bugreports 16. Danksagungen
Mit BinPatch bezeichne ich mein Programm-Paket zum Erzeugen und Anwenden von Patches auf beliebige binäre Dateien. Ein Programm namens GenPatch kann benutzt werden, um aus zwei Versionen einer Datei (oder zwei kompletten Verzeichnis-Strukturen) eine sogenannte Patchdatei zu erstellen. Diese Patchdatei kann dann einem anderen Programm namens DoPatch zur Vorlage dienen, um die eine vorhandene Version einer Datei oder eines ganzen Programmverzeichnisses in eine andere zu überführen.
Der Sinn dieser Aktion erschließt sich dann, wenn Sie vergleichen, wie klein eine Patchdatei nach der Kompression im Vergleich zur vollständigen neuen Version (auch komprimiert) sein kann. Bei Programmen, Texten oder Datenbanken ist das Verhältnis besonders gut. (Lesen sie dazu auch "Was leistet BinPatch konkret?".)
Im allgemeinen ändern sich bei Programmen von Version zu Version jeweils nur wenige Teile und dann auch nur immer ein wenig. Vieles was durch den Compiler vorgegeben ist, ändert sich sogar gar nicht oder nur minimal. Gerade bei Windows-Programmen ist dieser Anteil recht hoch. Es ist immerwieder überraschend, wieviel BinPatch in der Praxis einspart. Beachten sie aber, daß BinPatch nicht auf gepackten oder verschlüsselten Daten arbeiten kann. Archive müssen entpackt sein und generell ist es die Philosophie von BinPatch lebendige Installationen zu aktualisieren.
Bei Programmen kann es auch sein, daß diese intern gepackt sind. Das erkennen sie z.B. daran, daß ein Packer die Daten nicht weiter komprimieren kann. (Leider erzeugen Packer auch schon bei leicht unterschiedlichen Daten praktisch vollkommen unterschiedliche Archive, so daß BinPatch hier nicht greifen kann.) Dem Packen der erzeugten Patchdatei steht dann aber nichts im Wege und BinPatch arbeitet so, daß es solche Patchdateien erzeugt, die zwar größer sind, als das nötig wäre, aber nach dem Packen dennoch kleiner sind!)
Gerade bei Software-Updates hat sich BinPatch inzwischen vielfach
bewährt, dort kann bei der Datenübertragung eine Menge gespart
werden. Ob via Mail oder WWW, letztlich kostet beides sowohl den Entwickler
als auch seine Kunden eine Menge Zeit. Welche sonstigen Anwendungen es für
BinPatch sonst noch gibt, wird explizit unter "Wozu ist
BinPatch sonst noch einsetzbar ?" diskutiert.
Das Verfahren wurde mir durch die Unix-Programme "diff/patch" bekannt, die
eine ähnliche Aufgabe haben, aber leider auf reine Textdateien
beschränkt sind. Da schließt BinPatch also eine Lücke. (Die
Universalität von BinPatch bedeutet übrigens keineswegs, daß
es nicht auch hervorragend mit Textdateien arbeitet und das sogar noch deutlich
effizienter als "diff", siehe auch hier "Was leistet
BinPatch konkret?")
Die Benutzung des Computerprogrammpaketes "BinPatch" erfolgt ausschließlich zu den nachbenannten Bedingungen. Der Benutzer erkennt mit dem Einsatz des Programmpaketes die nachstehenden Bedingungen als verbindlich an. Im Sinne dieses Dokumentes bezeichnet BinPatch sowohl die Programme als auch dieses Dokument in allen Formaten und auf allen Plattformen. Lesen sie diesen Abschnitt bitte vollständig.
a) Es ist es ausdrücklich erwünscht, daß das vorliegende Release in der unregistrierten Version weitergegeben wird.
Dabei ist nur die vollständige Weitergabe - also insbesondere inklusive dieser Datei - erlaubt. Als Ausnahme davon ist es gestattet, das DoPatch einem Archiv mit einem Patch beizugeben, wobei der Verzicht der Beigabe dieser Datei dann beinhaltet, daß der Weitergebende die volle Haftung übernimmt, bzw. in der Dokumentation des Patches selbst auszuschließen hat. Diese sollte dann einen Verweis auf eine Bezugsquelle für dieses Dokument enthalten oder wenigstens die komplette Lizenz als Ausschnitt enthalten.
b) Die Weitergabe von Keyfiles ist nicht erlaubt. Die gemeinsame Nutzung nur bei einer Firmenlizenz im Auftrag der registrierten Firma.
c) Es ist verboten BinPatch abzuändern. Nur der Autor darf Patches auf BinPatch erzeugten und nur solche, die von ihm erzeugt wurden, dürfen auf BinPatch angewandt werden. Bei Verstoß gegen diese Bestimmung erlischt die Lizenz.
d) Wer eine Übersetzung des Textes oder Programm in eine andere Sprache machen möchte, sollte mir bitte schreiben. Damit nur offizielle Übersetzungen in Umlauf kommen, ist die unauthorisierte Übersetzung nicht gestattet.
e) Die nicht-kommerzielle Nutzung von GenPatch ist auch ohne Registrierung erlaubt. Für militärische, atomtechnische und menschenfeindliche Zwecke darf BinPatch auf keinen Fall benutzt werden. Einen solchen Zweck stellt das Patchen von Daten da, wenn er durch das Patchen neu eingeführt wird oder dieser nicht aufgehoben wird.
f) Die kommerzielle Nutzung von GenPatch ist nicht ohne Registrierung erlaubt. Eine Einzellizenz berechtigt eine Einzelperson (oder Firma mit weniger als 5 Angestellten) zur Nutzung kommerziellen Nutzung von GenPatch. Die Firmenlizenz berechtigt die Angestellten einer Firma in deren Auftrag Patches zu erstellen. Eine Nutzung ist in diesem Sinne kommerziell, wenn die zu patchenden Daten kommerziell sind oder wenn eine Shareware gepatcht wird. Prinzipiell ist es nicht erlaubt, Patches für kommerziellen Daten oder Shareware eines anderen Anbieters mit BinPatch zu erzeugen. Das darf nur der Autor selbst und das dann nur mit der registrierten Version von BinPatch. Das Anwenden von Patches mit DoPatch ist erlaubt, sofern der Patch nicht unter Verletzung der Lizenz entstanden ist. Eine Einzellizenz oder Firmenlizenz muß erworben werden und wird durch ein zu installierendes Keyfile gültig.
g) Eine Registrierung ist jeweils nur entweder für eine Einzelperson oder eine Firma gültig, so daß eine Firma ihre Produkte nicht mit der registrierten Version eines Mitarbeiters erstellen darf. Eine Registrations-Key ist nicht übertragbar und darf nicht an 3. Personen weitergegeben werden.
h) Es ist verboten Bestandteile von BinPatch zurückzuentwickeln, zu entkompilieren oder entassemblieren. Es ist ebenfalls verboten von BinPatch abgeleitete Werke zu erstellen, ohne zunächst die Genehmigung von Kay Hayen <KayHayen@bigfoot.com> einzuziehen.
i) Der Autor ist optimistisch, daß BinPatch angegebene Zwecke erfüllt. Als einzige Eigenschaft von BinPatch wird garantiert, daß es Platz auf der Festplatte belegt. Die Software kann im Rahmen der Lizenz benutzt werden, aber nur so wie sie ist! Keine Funktion wird gerantiert! Für Schäden die durch die Anwendung von GenPatch oder DoPatch entstehen, ist eine Haftung durch den Autor von BinPatch komplett ausgeschlossen! Außerdem erhebt der Autor von BinPatch keinerlei Rechte auf mit BinPatch erzeugte Dateien, trägt aber auch keinerlei Verantwortung für deren Inhalt.
j) BinPatch ist © 1997 Kay Hayen.
Der Vorteil, den BinPatch gegenüber der vollständigen Übertragung einer neuen Version bietet, wird anhand von Beispielen schnell deutlich.
Beispiel: United-Edition (ein PBEM, das ich derzeit entwickle.)
Ein vollständiges Release hat als gepacktes Archiv stolze 570k und wer das per Mail an einen Adressaten irgendwo im Internet überträgt, muß wegen der derzeitigen Internet-Standards sogar damit rechnen, daß 760k übertragen und bezahlt werden müssen. Bei der Beschränkung auf jeweils veränderte Dateien kommen dennoch immer mind. 310k bzw. 413k raus, die das Hauptprogramm dabei belegt.
Beispiel A: Minor-Bugfix. Ich hatte einige Texte im Programm nicht lokalisiert, wollte aber dem nur Englisch-sprachigen Freund nicht zumuten, mit den Deutschen auskommen zu müssen. Was tat ich ? Ja, ich tipperte
GENPATCH UNITED41 UNITED42 UPDATE
und es entstand ein ungepackt 5.7k großes "UPDATE.UTP", das sich noch auf 2.7k packen ließ und als Mail nur 3.6k ausmacht. Mensch sehe den Unterschied von 413k und 3.6k! In Prozent waren es nur noch 0.9%, verschwindend wenig im Vergleich zu vorher, nicht wahr ?
Mein Freund mußte zur Anwendung der Patches nur "DOPATCH UPDATE.UTP UCLIENT" tippern, schon hatte er seine bereits vorhandene Version aktualisiert.
Beispiel B: Major-Bugfix. Ich hatte jemandem nach längerer Zeit ein Update zugeschickt, das viele kleine Abweichungen enthielt. Aber auch da ließ sich dank BinPatch die Datei auf 35k bringen, was nur noch nur 10% des normalen Umfangs sind.
Beispiel C: Ein Bugfix am GenPatch. Durch ein Versehen, konnte ein frühes Demo-Release plötzlich keine Verzeichnisse mehr bearbeiten. Es war nur ein "not" an der falschen Stelle, die Beseitigung mit BinPatch benötigte nur 0.2k!
Beispiel D: In den ersten Releases für DOS war GenPatch.EXE nur als Patch von DoPatch.EXE vertreten. Dadurch hatte das Release gepackt nur 47k statt sonst 74k. Diese Anwendung ist ziemlich untypisch, zeigt aber ein zusätzliches Potential von BinPatch. Sinnvoll wurde der Patch dadurch, daß beide Programme mit dem gleichen Compiler übersetzt wurden und viel Code gemeinsam hatten. (Seit dem 3. Release habe ich dem Umstand Rechnung getragen, daß GenPatch und DoPatch ganz unterschiedliche Anforderungen an einen DOS-Compiler stellen, so daß ein Patch inzwischen für diese Plattform nichtmehr sinnvoll (aber natürlich möglich) ist. Ähnliches gilt auch für das DoPatch.EXE und DoPat95.EXE, auch hier wurden gänzlich verschiedene Compiler eingesetzt, so daß ein Patch nicht sinnvoll wäre.)
Beispiel E: Ein netter Betatester hatte inkorrekte Links in zwei beigegebenen HTML-Dateien entdeckt. Nachdem er sie selbst korrigierte, sandte er mir den gepackt nur 610 Bytes "großen" Patch zu, der beide Dateien für mich korrigierte.
Die ideale Anwendung für BinPatch ist der Betatest von komplexer Software über das Internet. Hier kann BinPatch so richtig zeigen, was in ihm steckt. Auch um Bugfixes und kleinere Updates ins WWW zu stellen, ist BinPatch sehr gut geeignet. Wer schonmal ein 1.4M Archiv von einem langsamen Server geladen hat, weiss wohl, wie froh er gewesen wäre, ein Update mit vielleicht nur 100K downloaden zu müssen, nicht wahr ? (Besonders weil meist nach 1.3M die Übertragung stillsteht.)
Durch eine spezielle Option kann GenPatch angewiesen werden, auch Redundanzen in der neueren Version einer Datei auszunutzen. Das klappt nur selten, kann dann aber dazu führen, daß BinPatch als Vorpacker eingesetzt werden kann. Dazu muß momentan BinPatch eine leere Datei als Vorlage gegeben und dann erzeugt es eine "Patchdatei", die nach dem Packen kleiner ist, als das die Datei sofort gepackt. Was damit zu erzielen ist, hängt stark von der Datei ab. Einen Versuch ist es wert (und spätere Versionen von BinPatch sollen den Einsatz als Vorpacker einmal ohne Umweg über leere Dateien erlauben).
Bei einem Programmpaket, das mit dem gleichen Compiler übersetzt wird, kann BinPatch dafür sorgen, daß der Overhead des Compilers und verwendeter Bilbliotheken nur einmal auftaucht anstatt für jedes Programm einmal.
Wenn sie verschiedene Versionen eines Programmes oder einer Datei rausgeben wollen, dann bietet BinPatch ihnen die Möglichkeit eine Reihe kleinererer optionaler Patches statt meherer kompletter Programme anzubieten. Die Installationsroutine muß dann nur DoPatch aufrufen.
DOS/Windows 3.1:
Das Genpatch für DOS setzt beim Benutzer derzeit einen 386er und einen DPMI-Server vorraus. Von letzterem lassen sie sich bitte nicht erschrecken, diese Bedingung erfüllen sie schon, sobald sie GenPatch in einem DOS-Fenster von Windows oder OS/2 laufen lassen. Alternativ können sie den QEMM dazu verwenden oder aber den freien DPMI-Server CWSDPMI.
Das DoPatch für DOS setzt lediglich ein DOS und einen 286er voraus. An Speicher benötigt es praktisch fast keinen. Es ist dazu entwickelt worden, spontan auf jedem x-beliebigen Rechner zu laufen, ohne daß die Benutzer etwas spezielles wissen müssen.
Die Ungleichheit in den Anforderungen liegt zum einen in der hohen Komplexität der Aufgabe von GenPatch, zum anderen aber darin begründet, daß das DoPatch bei jedem Anwender und ohne zusätzlichen Aufwand von dessen Seite laufen soll.
Windows 95:
Das DoPatch für Win95 (DOPAT95.EXE) läuft nur im DOS-Fenster von Windows 95. Wenn Patches im MS-DOS Modus von Windows 95 durchgeführt werden sollen, so muß das DoPatch für DOS/Windows 3.1 Verwendung finden. Ansonsten gilt das gleiche wie bei DOS/Windows 3.1 gesagte.
Windows NT:
Das Release sollte ab NT3.5 laufen.
OS/2:
Die Version für OS/2 sollte ab OS/2 V2 laufen. Getestet wurden OS/2 V2.1, OS/2 Warp 3 FixPack 26 und OS/2 Warp 4.
Linux:
Die Version für Linux benötigt einen Kernal 2.0.x. Für frühere Versionen kann ich keine sichere Aussage treffen. Die Programme liegen übrigens bisher nur im ELF-Format vor, das aout-Format soll demnächst released werden.
Bei Gefallen kann - bei kommerzieller Nutzung muß - BinPatch
registriert werden. Dazu gibt es verschiedene Möglichkeiten, die in
BinPatch Registration erklärt werden, u.a.
das Register.EXE, das BinPatch beiliegende sollte (wenn nicht
hier clicken) und
die allerdings Englisch-sprachige online
Registrierung mit Kreditkarte bei Kagi (auf Wunsch sicher dank SSL).
Die DM-Preise sind:
Preis | Lizenztyp | Beschreibung |
---|---|---|
40DM |
Einzellizenz | Eine einzelne Person. |
820DM |
Standort | Alle Angestellten einer Firma im Radius von 160km. |
8250DM | Weltweit | Alle Angestellten einer Firma weltweit. |
Wie oben erläutert, ist die nicht-kommerzielle Nutzung frei. Ich
möchte aber an dieser Stelle darauf hinweisen, daß ich eine Menge
Arbeit investiert habe, um BinPatch so effizient und komfortabel wie
möglich zu machen und das auch in Zukunft machen werde. Bitte
unterstützen Sie daher bei regelmäßiger Nutzung von BinPatch
dessen Weiterentwicklung.
Ihren
persönlichen BinPatch Key. Die Anwender ihrer Patches können
sehen, daß Sie den Patch erzeugt haben.
Eine
Registerierung jetzt beinhaltet alle späteren Updates!
Sie erhalten
alle bugfixes und neue Releases für eine gewählte Plattform
per EMail
Ein wirklich
gutes Produkt!
Anmerkung: Dieses Angebot bleibt nur bis zum Erscheinen eines neuen Releases gültig, danach ist es veraltet. Schauen sie jeweils nach der aktuellsten Version dieses Dokumentes in einer der Bezugsquellen.
Eine Standort- oder Weltweitlizenz gilt nur für Produkte
der registrierenden Firma. Angestellte dürfen damit keine eigenen Projekte
patchen.
Zum Registrieren stehen mehrere Möglichkeiten zur Auswahl:
Überweisen sie 40 DM pro gewünschter Einzellizenz bzw. 520 DM für eine Standortlizenz auf mein Konto:
Kay Hayen, Bordesholmer Sparkasse BLZ 21051275, Kontonr. 110050453
und schreiben Sie eine Mail an KayHayen@bigfoot.com, damit ich weiß, an wen ich den Registrations-Key zu schicken habe.
Starten Sie dazu einfach, das BinPatch beliegende Programm register.exe und tätigen Sie dort ihre Eintragungen. Das Program erzeugt einen Ausdruck oder eine EMail. Beides müssen Sie direkt an Kagi senden.
Wählen Sie "Online-Registrierung bei Kagi ohne SSL" oder "Online-Registrierung bei Kagi mit SSL" je nach Fähigkeit ihres Browsers.
Mit SSL werden ihre Daten verschlüsselt zu Kagi übertragen.
Die folgenden Quellen für BinPatch werden von mir mit den jeweils aktuellen Version versorgt. Von dort lassen sich die jeweils aktuellen Versionen für alle Plattformen beziehen. Lesen Sie vorher dazu auch das Kapitel Distributionen, damit Sie wissen, für welches Archiv Sie sich entscheiden sollten.
1. WWW
Wenn sie diese Seite schon online lesen, dann folgen sie einfach dem Link zum Download-Bereich, um zu der entsprechenden Seite im WWW zu gelangen. Ansonsten können sie die Seite
http://binpatch.home.ml.org/index.htm#DownloadBinPatch
in ihrem Brower anwählen und dort ihre Auswahl treffen. Die Addresse wird über einen Zeiger angesprochen und leitet so stets auf die aktuelle Seite weiter. Damit sollte sichergestellt sein, daß bei Verwendung des Zeigers der Kontakt zu BinPatch nicht verloren gehen kann.
2. FTP
Die FTP-Server für BinPatch lautet ftp://www.online.de/home/KayHayen, es gibt allerdings keine Garantie dafür, daß diese Addresse sich nicht ändert. Bevorzugen sie daher das WWW, sofern sie darauf Zugriff haben.
2. Fileserver
Es ist geplant, das GFD-Filenetz mit der jeweils aktuellen OS/2-Version zu versorgen. Welche Area für BinPatch geeignet ist, kann ich momentan noch nicht sagen.
Bei Hinweis werde ich auch andere Filenetze bedienen, teilt mir also ruhig mit, wenn ihr Filenetze kennt, für die BinPatch geeignet ist.
3. Newsgroups
Die aktuelle Version von BinPatch geht einige Zeit nach dem Release auch durch die geeigneten Binary-Newsgroups. Momentan wird nur de.alt.binaries.msdos versorgt, englisch-sprachige Newsgroups werden folgen, sobald BinPatch vollständig übersetzt wurde.
Anmerkung: Wer andere Bezugsquellen vorschlagen möchte, ist herzlich eingeladen, das zu tun. :-)
Dieses Kapitel listet die einzelnen Distributionen auf und erklärt,
was genau sie enthalten:
- bptd104d.zip: BinPatch für
DOS/Windows3.1 als InfoZip-File.
Datei | Größe(gepackt) | DOS | Windows 3.1 | Windows 95 | Windows NT | OS/2 |
---|---|---|---|---|---|---|
GENPATCH.EXE | k.a. | Ja, mit DPMI-Server | Im DOS-Fenster | Im DOS-Fenster | Im DOS-Fenster, aber keine LFN |
Im DOS-Fenster |
DOPATCH.EXE | 30k (15k) | Ja. | Im DOS-Fenster | Im DOS-Fenster, aber keine LFN |
Im DOS-Fenster, aber keine LFN |
Im DOS-Fenster |
DOPAT95.EXE | 49k (27k) | Nein | Im DOS-Fenster | Im DOS-Fenster | Im DOS-Fenster | Nein |
Datei | Beschreibung |
README.HTM | Die BinPatch Dokomentation im HTML-Format |
REGISTER.EXE | Windows-Programm, um BinPatch über Kagi zu registrieren. |
REGISTER.HTM | Informationen zu Registrierung von BinPatch zu registrieren. |
REGISTER.TXT | Ein ASCII-Text, der die Registrierung bei Kagi auf Englisch erläutert. |
MINIPNKT.GIF | Kleine Grafik zur Verwendung von register.htm |
BK101.GIF | Hintergrund für die HTML-Dokumentation |
- bptd104n.zip: BinPatch für Windows 95&NT als InfoZip-File.
Datei | Größe(gepackt) | DOS | Windows 3.1 | Windows 95 | Windows NT | OS/2 |
---|---|---|---|---|---|---|
GENPATCH.EXE | k.a. | Nein | Nein | Im DOS-Fenster | Auf der Kommandozeile | Nein |
DOPAT95.EXE | 49k (27k) | Nein | Im DOS-Fenster | Im DOS-Fenster | Auf der Kommandozeile | Nein |
DOPATCH.EXE | 30k (15k) | Ja. | Im DOS-Fenster | Im DOS-Fenster, aber keine LFN |
Im DOS-Fenster, aber keine LFN |
Im DOS-Fenster |
Sonstige Dateien wie bei bptd104d.exe
- bptd104o.zip: BinPatch für OS/2 V2, Warp3&4 als InfoZip-File.
Datei | Größe(gepackt) | DOS | OS/2 |
---|---|---|---|
GENPATCH.EXE | k.a. | Nein | Im OS/2-Fenster |
DOPATCH.EXE | 42k (25k) | Nein | Im OS/2-Fenster |
Sonstige Dateien wie bei bptd104d.exe.
- bptd104e.tgz:
Datei | Größe(gepackt) | a-out | ELF |
---|---|---|---|
genpatch | k.a. | Nein | Ja |
dopatch | 30k (15k) | Nein | Ja |
Sonstige Dateien wie bei bptd104d.exe.
Hier eine Auflistung der Änderungen von Version zu Version.
V1.04 (5. offizielles Release für DOS, Win95,
OS/2 und Linux am 22.5.97)
- Der Umzug der BinPatch-Seiten wurde vollzogen. Bitte bookmarken sie
stets den Zeiger http://binpatch.home.ml.org, der für sie transparent
umgesetzt wird. Bei AOL kam es zu Meldungen der Art "URL not found on this
server", die für mich inakzeptabel sind.
- Ein komplett englisch-sprachiges Release erfolgt.
- Die Konvention bei der Benennung der Archive wurde geändert.
In der Zukunft wird der Präfix "BPAT" auf "BPT" gekürzt, dafür
dann ein "D" für Deutsch und "E" für Englisch angehängt, was
die Sprache der Dokumentation kennzeichnet. Weitere Sprachen werden folgen,
insofern sich freiwillige Übersetzer anbieten. Dann wird z.B. ein
Englisch/Französisches Release erfolgen.
- Die Registrierung kann nun auch per
Kreditkarte bei Kagi erfolgen. Auf Wunsch kann auch das sichere
Protokoll SSL verwandt werden.
- Das neuerdings beigelegte Programm REGISTER.EXE gestattet dem Benutzer
via Mail oder Post bei Kagi zu registrieren. Bezahlt werden kann mit Kreditkarte,
Schecks, Scheinen und das in fast allen Währungen. Ferner wurde das
Formular zur Online-Registrierung in eine Auflistung der Möglichkeiten
umgewandelt und verweist jetzt u.a. auf Kagi.
- Erstmals sollen auch die großen FTP-Server mit BinPatch versorgt
werden.
V1.03 (4. offizielles Release für DOS, Win95,
OS/2 und Linux am 23.4.97)
- Die OS/2-Version von BinPatch ist jetzt nichtmehr auf eine Runtime angewiesen
und wird daher ab dieser Version erstmals öffentlich released.
- Aufgrund einer verbesserten Arbeitsweise bei Einbettungen erzeugt
GenPatch ab dieser Version um etwa 2-5% kleinere Patchdateien. Möglich
wurde das durch einen bereinigten Algorithmus, der jetzt neue Vorgabewerte
-c20 und -l245 erhält und noch besser auf das nachfolgende Packen
optimiert.
- Diese Version ist dennoch kompatibel zu BinPatch 1.00-1.02.
- Das GenPatch des neuen Release für Windows 95&NT kann unter Windows
NT auch "lange Dateinamen" bearbeiten, läuft dafür aber nur unter
Windows 95 und NT.
- Die WWW-Präsenz von BinPatch hat einen Pointer bekommen, der
die Benutzer vor möglichen Änderungen der konkreten WWW-Addresse
schützt. Die neue Addresse der BinPatch-Homepage ist
http://binpatch.home.ml.org und
zeigt auf die jeweils aktuelle Addresse der BinPatch-Homepage.
- Die Programme geben eine neue Kontakt-Addresse aus, die angeblich "ewig"
gültig bleibt und auf die aktuelle Addresse zeigt. Sie lautet
KayHayen@bigfoot.com, bitte wenden
Sie sich bei Fragen nur an diese Addresse.
- Die Linux-Version des DoPatch ist erheblich geschrumpft. Sie liegt jetzt
bei gepackten 15k und damit in der Region des DoPatch für DOS. So wird
die wichtige Beigabe des DoPatch für Linux ebenfalls praktikabel.
- Ab dieser Version dürfen die Texte von BinPatch-Keys auch Umlaute
enthalten, die von den DoPatch aller unterstützten Plattformen korrekt
angezeigt werden.
- Der Speicherverbrauch von GenPatch bei großen Dateien wurde generell
auf 20% gesenkt. Das steigert die unter DOS/Windows patchbaren
Dateigröße ganz erheblich und erleichtert das Erzeugen von Patches
großer Dateien bei wenig Speicher, weil weniger Speicher ausgelagert
werden muß.
- Die Geschwindigkeit von GenPatch wurde um etwa Faktor 2 gesteigert.
Spührbar wird das vorallem bei großen Dateien, die viele Einbettungen
benötigen. Bei wenig Einbettungen wird kein Unterschied
spührbar.
- Sowohl GenPatch als auch DoPatch zeigen jetzt durchgängig alle Meldungen
mit Umlauten an.
- Ein neuer Switch "-f" für GenPatch erstellt Verzeichnis-Patches, die
auch unveränderte Dateien patchen. Dadurch erstellt DoPatch bei Angabe
eines anderen Verzeichnisses eine vollständige Version. Das kann dazu
dienen beim Enduser auf Wunsch bereinigte Installationen nur mit den
nötigen Dateien zu schaffen.
- Eine neue Enviroment-Variable "BINPATCH_OPTS" wird von GenPatch
berücksichtigt. Ihr Inhalt wird stets an die Kommandozeile angehängt.
Dort können global gültige Einstellungen abgelegt werden.
- Einige optische Details, sowie der Grad der Zweisprachigkeit wurden weiter
verbessert.
- Ein Bug des DoPatch wurde entfernt. Es konnte Patches, die mit der Option
-c und Werten größer 250 erzeugt wurden, nicht korrekt anwenden.
- Das DoPatch für DOS erkennt jetzt LFN-Parameter bzw. Patches für
Dateinen mit LFN und weist auf das DoPat95 hin, anstatt einen Fehler erst
beim Zugriff zu melden.
- Das DoPatch für DOS hat jetzt einen Timeout beim Warten einen Tastendruck.
(Die anderen DoPatch Plattformen folgen später.) Dadurch ist (wird)
DoPatch jetzt auch im Script-Betrieb einsetzbar.
- Die Dokumentation wurde um das Kapitel
"Distributionen" ergänzt, das erläutert,
welche Archive jeweils was enthalten. Außerdem wurde ein
"Anhang A" eingeführt, der wichtige Begriffe
rund um BinPatch erläutert.
V1.02 (3. offizielles Release für DOS, Win95 und Linux am 17.2.97)
- Die WWW-Seiten enthalten jetzt ein neues Formular, daß es erlaubt
über Veränderungen einzelner Seiten via EMail informiert zu
werden.
- Ab dieser Version wird das HTML-Formular zur Online-Registrierung in den
Archiven mitgeliefert. Dadurch ist es unnötig dazu extra Online zu gehen.
Eine ASCII-Version liegt alternativ bei.
- Ab dieser Version kann ein DoPatch bei Patches in neueren oder älteren
Formaten WWW-Addresse ausgeben, unter der ein geeignetes DoPatch zu finden
ist.
- Der neue Parameter "-a" veranlaßt GenPatch auch versteckte Dateien
einzubeziehen.
- Das DoPatch meldete illegale Switches, arbeitete aber dennoch sofern sonst
genug Parameter vorhanden waren. Dieses Fehlverhalten wurde korrigiert.
- Außerdem kann GenPatch jetzt Dateien der Länge 0 patchen.
Sowohl als Quelle als auch als Ziel.
- Die Testsuite wurde um Checks auf die obigen Bugs ergänzt.
V1.01 (2. offizielles Release für DOS, Win95 und Linux am 11.2.97)
- Überarbeitetes HTML-Readme. Vorallem farblich verbessert, teilweise
etwas bessere Formatierungen, die nicht so "zerfleddert" wirken, bessere
Hintergründe und größere Schriften.
- Das ReadMe zu BinPatch wird jetzt als HTML mitgeliefert. Die Archive der
einzelnen Plattformen enthalten zusätzlich Patches, die das HTML in
das plattformspezifische ASCII konvertieren. Bei der DOS/Windows Version
werden dabei sowohl DOS als auch Windows-Zeichensatz unterstützt.
- Der Usage-Text von DoPatch wurde überarbeitet.
- Die DOS/Windows Version 1.00 behauptete frech, sie wäre für Linux,
was natürlich Unsinn ist.
- Das Projekt wird umbenannt. Der Name "BinDiff" führte leider bei einigen
zunächst zu dem Mißverständnis, daß BinDiff nur die
Unterschiede von Dateien aufgelistet werden. Daher wird das Projekt ab jetzt
"BinPatch" heißen.
- Der Registration-Key muß jetzt nichtmehr in einer Enviroment-Variable
angegeben werden, sondern wird auch in dem Verzeichnis von GenPatch gesucht.
Das schont den unter DOS den knappen Speicher für diese Variablen. Vorrang
hat die Angabe in der Enviroment-Variable.
V1.00 (1. offizielles Release für DOS, Win95
und Linux am 5.2.97)
- Eine Testsuite für alle Plattformen hilft dabei, die Funktionalität
von Releases abzuklopfen. Bekannte Bugs früherer Versionen und Fehlerquellen
werden explizit getestet. Genauso die avisierte Funktionalität. Bisher
werden aber nur die Default-Parameter von Genpatch überprüft. Das
wird zunehmend ausgebaut werden.
- Beim Erstellen der Testsuite sind noch einige Kleinigkeiten aufgefallen
und verbessert worden.
- Ab sofort wird die WWW-Präsenz die aktuellste Bezugsquelle sein.
V0.90 (10. Betaversion für DOS, Win95 und
Linux am 31.1.97)
- Die Überprüfung des Registrations-Keys im GenPatch wurde absolut
resistent gegen Irrtümer/Zufälle gemacht.
- Die Ausgabe von DoPatch wurde überarbeitet. Sie passt jetzt unter
DOS auch auf einen 80x25 Bildschirm.
- Die Linux-Version hat eine hoffentlich etwas mehr dem Standard entsprechende
Verzeichnis-Struktur bekommen.
V0.89 (9. Betaversion für DOS, Win95 und
Linux am 22.1.97)
- Ein in 0.88 eingeschlichener Fehler wurde beseitigt. Der Verzeichnismodus
des DoPatch.EXE arbeitete nichtmehr korrekt. Das DoPat95.EXE war davon nicht
betroffen.
- Ab dieser Version ist BinDiff über das WWW zu beziehen. Es finden
sich neben Texten zu BinDiff ein
Registrationsformular und jeweils
die aktuellste Fassung
dieses Textes im HTML-Format.
V0.88 (7. Betaversion für DOS, Win95 und Linux am 20.1.97)
- Der Algorithmus wurde wieder ein wenig verbessert. Für kleinere
Dateien erzeugt BinDiff jetzt nochmals etwa 1% kleinere Dateien.
- Die theoretische Grenze für die Dateigröße von patchbaren
Dateien von bisher 16M wurde auf 2 Gigabyte angehoben.
- Nicht zulässige Registrations-Keys werden im allgemeinen schon von
GenPatch erkannt, vorher hätte eine falsche Konfiguration dazu führen
können, daß erst DoPatch sich verweigert.
V0.87 (6. Betaversion für DOS, Win95 und Linux am 16.1.97)
- Neue Optionen "-r", "-c" und "-l", um das Patchformat von GenPatch
zu kontrollieren
- Der Einsatz von GenPatch als Vorpacker ist jetzt möglich.
V0.86 (5. Betaversion für DOS, Win95 und Linux am 14.1.97)
- GenPatch produziert um ca. 5% kleinere Patches als bisher
- Der Speicherverbrauch von GenPatch wurde auf 60% reduziert
- GenPatch wurde um Faktor 10 schneller, was sich vorallem bei grossen Datei
ab 1M lohnt.
- DoPatch kann jetzt auf bestehenden Daten arbeiten
- DoPatch ist nochmals geschrumpft und ist jetzt in der Version für
DOS/Windows3.1 gepackt kleiner als 16k.
- DoPatch für Windows 95 kann in dessen DOS-Fenster lange Dateinamen
bearbeiten.
- DoPatch überprüft den Patch auf Beschädigung und meldet
diese.
V0.85 (4. Betaversion für DOS und Linux
am 23.12.96)
- Große Dateien wurden nur bei relativ guter Patchbarkeit bearbeitet.
Der Konservatismus wurde da gelockert.
- Das DoPatch ist nochmals einen Tick geschrumpft, jetzt gepackt weniger
als 19k.
V0.84 (3. Betaversion für DOS und Linux
am 19.12.96)
- Neue Plattformen OS/2 und Linux, wobei Linux sehr kleine Programme liefert,
das gleiche aber für OS/2 leider noch nicht erreicht wurde und momentan
eine Runtime benötigt würde, daher noch kein Release.
- Alle Plattformen kompatibel untereinander
- Nochmals einen Tick kleinere EXEs für DOS
V0.83 (2. Betaversion für DOS am 16.12.96)
- Deutlich kleineres DoPatch, gepackt weniger als 20k
- Ausführlichere Fehlermeldungen beider Programme
- Nochmals unfangreichere Dokumentation
V0.82 (1. Betaversion für DOS am 11.12.96)
Alle frühereren Versionen waren rein interne Alpha-Versionen.
V2.00 (Release in Vorbereitung für 5/6.97 )
Anmerkung: Features, die schon implementiert sind, werden durch ein grüne Kodierung gekennzeichnet. Dadurch können Sie besser einschätzen, wie weit die Entwicklung ist. Sie sehen hier quasi meine Todo-Liste. Das erscheinende Release kann daher in Funktion und Implementierung von dieser Ankündigung abweichen. Weiterentwicklung findet zur Zeit nur noch an der Version 2.00 statt, eine zwischenzeitlich 1.04 würde ein reiner Bugfix der 1.03 werden. Freiwillige für den Betatest der 2.00-PreReleases werden übrigens noch gesucht. (Es sei aber vorab darauf hingewiesen, daß während der Betaphase die Weitergabe von Patches nicht erwünscht ist! Das soll bitte nur mit offiziellen Releases erfolgen.)
- Ab dieser Version kann GenPatch auf Wunsch "bidirektionale" Patches
erzeugen. Solche Patches erlauben die spätere Rücknahme eines Patches.
Das dabei verwandte Verfahren ist dem Verwenden zweier getrennter Patches
überlegen, dh. der "bidirektionale" Patch ist wesentlich kleiner. DoPatch
erkennt welcher Zustand vorhanden ist und wendet automatisch die korrekte
Richtung an.
- Mit dieser Version wurde das Format der Patches
modifiziert. Das DoPatch 1.x erkennt das und verweist auf die korrekte WWW-Seite
zum Download.
- DoPatch erkennt sogenannte "Authorisierungen". Diese fälschungssicheren
Dateien können Benutzer der registrierten Version benutzen, um vor dem
Anwenden von Patches von 3. Seite zu warnen. Das DoPatch zeigt dann ihren
Text an und läßt den Anwender entscheiden, was passieren soll.
- Ein Patch enthält das Datum der Dateien und DoPatch
versieht auf allen Plattformen die gepatchten
Dateien mit genau diesem Datum. Bisher macht das nur DoPatch für DOS,
aber alle GenPatch binden jedenfalls das Datum ein.
- Neuer Parameter "-n" setzt das Datum der Dateien im Patch auf das aktuelle
Datum.
- Eine Progress-Anzeige für GenPatch und
DoPatch ist vorhanden.
- Es können Patches erstellt werden, die beim Verzeichnispatch Dateien
umbennen, also "ProgrammV1.0.EXE" zu "ProgrammV1.1.EXE" umbenennen.
- Das DoPatch erkennt auf allen Plattformen ein Timeout beim Warten auf einen
Tastendruck.
- Das DoPatch erzeugt nochmals kleinere Dateien (etwa 5%)
- Der Redundanz-Modus wurde beschleunigt und liefert nun in der Regel keine
größeren Ergebnisse mehr.
- Das DoPatch unterstützt endlich auf allen Plattformen, insbesondere
unter OS/2 und Linux das Anwenden von Redundanz-Patches.
- Neuer Parameter "-b" erlaubt Anpassung des Patch-Algorithmus an Texte.
- Neuer Parameter "-p" erlaubt eine Anpassung des Patch-Algorithmus an eine
mehr oder weniger konstante Struktur des Patches
- Das DoPatch für Win95, OS/2 und Linux ist jetzt fähig paralell
zu arbeiten, dh. mehere DoPatch können gleichzeitig ausgeführt
werden. Für das DoPatch für DOS bleibt es beim alten, da ich nicht
von gleichzeitigen Patchen und/oder Batcheinsatz bei dieser Plattform rechne
und die Dateigröße für DOS minimal halten will.
- Unter Windows 95 kann ein eigenes Icon für BinPatch's UTP-Dateien
beim System angemeldet werden. Bei Doppelclick startet dann DoPat95.EXE.
Unter OS/2 soll das gleiche erreicht werden, hierfür wird noch Know-How
recherchiert.
- Ein "Autoscan-Modus" des DoPatch sucht zu einem gegebenen Patch die Dateien,
auf die der Patch anwendbar ist. Besonders im Zusammenhang mit dem Start
per Doppelclick im Explorer macht dieses Feature Sinn.
Anmerkung: Praktisch alle diese Features benötigen die Erweiterung des Formates der Patchdateien und erzwingen damit eine Inkompatiblität zu den Versionen 1.0x, die ich aber unbedingt innerhalb der 1.0x vermeiden möchte. Daher kommen essentielle Features wie die Übernahme des Datums auch erst mit der 2.0. Für die 2.0 wird dann versucht ein erweiterbares Format zu definieren, daß dann erlaubt optionale Daten wie eben das Datum eigentlich eines wäre, auch in eine 2.1 mit minimalen Aufwand einzubauen, ohne daß die Kompatiblität leiden müßte.
Es fehlt was? Ein Feature brauchen Sie unbedingt? Eine wichtige Option fehlt
noch? Sie halten ein geplantes Feature für einen Fehler? Sie können
Information anbieten? Dann schreiben
Sie mir! Ich bin für Anregungen immer offen. :-)
Die einfachste Anwendung ist das Erstellen eines Patches von einer Datei auf eine andere. Nehmen wir an, wir haben zwei Dateien ALT.EXE und NEU.EXE. Wenn wollen einen Patch erstellen, der aus der Datei ALT.EXE die Datei NEU.EXE erstellt.
Dazu braucht GenPatch die Namen der beiden Dateien als Parameter und für den Patch noch eine Benennung, sagen wir "ALT2NEU". Der Name des Patches sollte dem späteren Anwender ungefähr sagen, was das für ein Patch ist, wobei "Update" meist weniger aussagekräftig ist als "V21_V22". Der stets verwendete Suffix ".UTP" für BinPatch Patches muß bei der Benennung an dieser Stelle übrigens weggelassen werden. Für unser Beispiel reicht also die Eingabe am DOS-Prompt:
GenPatch ALT.EXE NEU.EXE ALT2NEU
und schon legt das Programm los. An die Stelle von ALT.EXE kann jeder beliebige Pfad auf eine Datei treten, das gleiche gilt für NEU.EXE. Auch der erzeugte Patch darf eine Pfadangabe beinhalten, normalerweise werden aber die Dateien im aktuellen Verzeichnis gesucht.
Eine beim Vertrieb einer Software-Paketes übliche Praxis ist das Patchen ganzer Verzeichnisse. Im Prinzip funktioniert das ganz ähnlich wie oben gesehen bei einzelnen Dateien. Geben sie statt Dateinamen einfach die Pfade von Verzeichnissen an und schon löst GenPatch auch diese Aufgabe für sie:
GenPatch ALT_DIR NEU_DIR ALT2NEU
Dabei scannt es NEU_DIR und sucht nach *namensgleichen* Dateien in ALT_DIR, die dann verglichen werden und im Falle von Ungleichheit, wird der Patch um die Information ergänzt, wie diese Datei zu aktualisieren wäre. Bei gleichen Dateien werden diese ignoriert und wenn keine Datei dieses Namens in der alten Version existiert, dann wird die Datei komplett in den Patch eingebettet. Bei der Suche bezieht GenPatch übrigens auch Unterverzeichnisse mit ein.
Beim Anwenden eines Patches muß dem Dopatch neben der Patch noch mitgeteilt werden welche Daten er patchen soll. In den obigen Beispielen sind das die älteren Daten ALT.EXE bzw. ALT_DIR. Natürlich darf der Name auch anders als beim Erzeugen des Patches lauten, wichtig ist nur, daß in ALT_DIR dann die Dateien wirklich den gleichen Namen haben. Der Aufruf
DoPatch ALT2NEU.UTP ALT.EXE MIAU.EXE
würde aus ALT.EXE und ALT2NEU die Datei MIAU.EXE erzeugen. Bei einem Verzeichnis-Patch würde
DoPatch ALT2NEU.UTP ALT_DIR NEU_DIR
ein Verzeichnis NEU_DIR anlegen (sofern es noch nicht existiert) und dort die neuen Dateien reinschreiben. Sollen die Veränderung direkt an den alten Daten durchgeführt werden, dann würde
DoPatch ALT2NEU.UTP ALT_DIR
die alten Daten mit den neuen überschreiben. Und wenn Sie das aktuelle Verzeichnis patchen wollen, dann reicht sogar ein noch kürzeres
DoPatch ALT2NEU.UTP
aus, um die alten Daten im aktuellen Verzeichnis durch neuere zu ersetzen.
Bei GenPatch können sie bisher 4 Optionen angeben. Hier wir der Versuch gemacht, eine kurze Erläuterung zu geben:
Mit "-r" erlauben sie BinPatch auf bereits abgebildete Teile des Ergebnisses Bezug zu nehmen. Das kann Sinn machen, ist aber in der Voreinstellung nicht aktiviert. Probieren sie einfach im konkreten Fall aus, was in ihrem Fall passiert. Eine generelle Empfehlung kann nicht gegeben werden, da sowohl bei Programmen als auch Textdateien beides, Verbesserungen und auch Verschlechterungen im Ergebnis beobachtet wurden. Achten sie auch darauf, daß im Normalfall die gepackte Dateigröße maßgebend ist. Obwohl die Dateigröße des Patches mit "-r" Option kleiner ist, sagt das häufig nichts über die Verhältnisse nach dem Packen beider Dateien aus.
Mit "-c" legen sie die Schrittweite beim Optimieren von nicht abbildbaren Teilen fest. Grössere Werte produzieren kleinere Patches, die dann aber wiederum schlechter zu packen sind. Im Normalfall ist die Voreinstellung von 20 für EXE-Dateien sehr gut, für Textdateien sollten sie eher mit grösseren Werten experimentieren, da Textdateien recht stabile Eigenschaften im Vergleich zu EXE Dateien haben. Werte oberhalb von 10000, machen kaum noch Sinn. (Wenn sie vorhaben, ihre Patches für DoPatch 1.02 und davor zu erzeugen, sollten sie beachten, daß ein Bug des DoPatch 1.00-1.02 verhindert, daß Patches mit Werten größer 250 korrekt angewandt werden können).
Mit "-l" legen sie den Grad der Lokalität beim Optimieren von nicht abbildbaren Teilen fest. Dieser Wert beeinflußt nicht die Grösse des Patches, wohl aber dessen Größe nach dem Packen! Für EXE-Dateien ist die Voreinstellung von 245 recht vernünftig. Bei höheren Werten steigt dann die Größe der gepackten Datei an. Der Idealwert hängt hier von der Datei ab. In der Regel lohnt es sich nicht oder kaum, die Voreinstellung von Hand zu ändern, Ausnahme dabei sind Textdateien, dort gibt ein Wert von 2000 wesentlich bessere Ergebnisse, noch höhere Werte erzielen dort meist nur wenig bessere Ergebnisse, zumal "Warp 3:" dadurch enorm verlangsamt wird.
Anmerkung: Im Verzeichnis-Modus können sie momentan nicht individuelle Parameter für jede Datei einzeln einstellen. Ich bin auch unsicher, ob sich der Aufwand hierfür lohnen würde. Stattdessen soll GenPatch zukünftig über eine Analyse-Funktion verfügen, die für jede Datei relativ gute Parameter zu wählen versucht. Dazu wäre ich dankbar, wenn Anwender von BinPatch mit ihre Erfahrungen mit BinPatch mitteilen würden.
Noch eine Anmerkung: Es scheint kein Zufall, daß 245+20 die Grenze markieren, ab der die Leistung des Vorbereiten auf das Packen wieder abfällt, anscheinend betrachten Packer bei ihrer Arbeit nur so um die 256 Bytes zur Zeit. Wenn BinPatch darüber hinaus arbeitet, dann nutzt das dem Packer nichtmehr, sondern schadet sogar. Wer einen Packer mit einer von 256 abweichenden "Sichtweite" verwendet, wird u.U. andere Werte erhalten. Ich würde mich sehr freuen, wenn die "BinPatchologen" mich über ihre Tests in dem Bereich unterrichten würden. Vielleicht mag ja auch ein Packer-Autor dazu Stellung nehmen?
Mit "-f" wird GenPatch angewiesen, beim Verzeichnis-Patch auch Dateien, die nicht verändert wurden, zu patchen. Die Information dafür ist sehr kurz, hat aber zwei Konsequenzen: Zum einen verweigert DoPatch seine Arbeit, wenn die Datei fehlt, zum anderen kann DoPatch so dazu gebracht werden, dem Anwender aus einer "benutzten" Installation eine saubere Installation mit nur den unbedingt notwendigen Dateien zu erzeugen.
Tip: Es kommt vor, daß eine "automatische" Zuteilung von DPMI-Speicher unter Windows fehlschlägt, weil Windows unter automatisch nicht "nach Bedarf" versteht, sondern einen Wert, der auf der physisches Speichermenge beruht. Legen Sie dann eine spezielles DOS-Fenster an, der sie die benötigte Menge Speicher fest zuteilen. Tragen sie ruhig 32000 oder auch 60000 ein, ich hatte damit bisher keine Probleme, kann dafür aber keine Garantie geben. Sollte auch das nicht helfen, so können sie notfalls auf GenPatch für NT, OS/2 oder Linux ausweichen. Diese Betriebssysteme sind großzügiger, was den Bedarf von Speicher angeht. Die damit erstellten Patches lassen sich dann ohne weiteres von einem DoPatch für DOS anwenden.
Tip: Die Enviroment-Variable "BINPATCH_OPTS" wird von GenPatch in jedem Fall an die Befehlszeile angehängt. Tragen Sie dort die Parameter ein, die sie immer verwendet haben möchten.
Tip: Achten sie darauf, daß sie beim Übersetzen ihrer Programme immer die gleichen Einstellungen beim Compiler haben, ansonsten entstehen nur unnötige Unterschiede, die sich negativ auf den Patch auswirken.
Tip: Die Option "-r" erreicht bei manchen Patches wesentlich bessere Ergebnisse, wenn von der zu erzeugenden Datei bekannt ist, daß sie Redundanzen (Teile treten in ähnlicher Form auf) enthält, die in den alten Daten noch nicht drin waren. Das Erzeugen und insbesondere das Anwenden der Patches wird dadurch zwar langsamer, aber es kann sich sehr lohnen. Eine Anwendung hierfür ist z.B. das Patchen von ZConnect-Puffern. Viele Puffer enthalten Nachrichten und Antworten darauf. Das kann GenPatch -r mit anschliessendem Packen besser als ein Packer allein ausnutzen.
Tip: Wenn sie Texte patchen wollen, dann verwenden sie die beiden Optionen -c2000 und -l5000, die das Standardverhalten von GenPatch modifizieren. Normalerweise ist GenPatch nämlich auf EXE Dateien optimiert, was derzeit etwa -c20 und -l245 entspricht. Das bedeutet im wesentlichen, daß GenPatch sein Verhalten lokaler optimiert, was bei Texten aber garnicht nötig ist, im Gegenteil sogar schädlich ist.
Tip: Wenn sie Windows 95 verwenden, bevorzugen sie in jedem Fall das DoPat95.EXE, da es zumindest beim Überprüfen des Patches wesentlich schneller ist. Es erlaubt darüber hinaus auch die sogenannten "langen Dateinamen".
Unter DOS oder im DOS-Fenster kann es vorkommen, daß GenPatch sich mit dem Hinweis beendet, daß leider nicht genug Speicher vorhanden sei und Sie die DPMI-Einstellungen überprüfen sollten. Eine Lösung hierfür finden sie in den Tips oben.
Dateien grösser als 2 Gigabyte bearbeitet BinPatch leider nicht, was allerdings noch nicht genau überprüft wurde. ;-)
DOS/Windows3.1: Die "langen Dateinamen" anderer Plattformen können unter DOS und der älteren Windows-Version nicht erzeugt werden. Daher sind Verzeichnis-Patches mit langen Dateinamen auch nicht anwendbar.
Windows 95&NT: Die "langen Dateinamen" stehen unter Windows 95 nur im DOS-Fenster, nicht aber im sog. MS-DOS Modus zur Verfügung.
Linux: Bisher ist Linux die einzige BinPatch-Plattform, die bei Dateinamen die Gross/Kleinschreibung unterscheidet. Das führt zu Problemen führen, wenn mit dem GenPatch einer anderen Plattform erzeugte Patches durch das DoPatch für Linux angewandt werden sollen. Ein mit GenPatch für Linux erzeugter Patch wird diese Probleme nicht haben, geben sie also beim Patchen von Nutzdaten für mehrere Plattformen dem GenPatch für Linux den Vorzug. (Auf einem (v)fat-Filesystem besteht das Problem für DoPatch für Linux übrigens nicht.)
Außerdem unterstützt die aktuelle Linux-Version keine Redundanz-Patches mit der Option "-r". Sie können zwar mit dem GenPatch für Linux erzeugt werden, aber beim Anwenden mit DoPatch für Linux kommt es zu einer Fehlermeldung. Hintergrund ist derzeit, daß ich die Standard-Pascal IO-Routinen für diese Plattform mit eigenen C-Routinen simuliere. Leider beherrschen diese Routinen noch keine wechselnde Ein/Ausgabe. Dies soll in einer späteren Version der Fall sein.
OS/2: Für das DoPatch der OS/2-Version gilt das gleiche wie für die Linux-Version. Es sind keine Patches anwendbar, die mit der Option "-r" erzeugt wurden, obwohl auch das GenPatch der OS/2 sie erzeugen kann. In einer späteren Version wird dieser Mangel behoben sein.
Die OS/2-spezifischen "Erweiterten Attribute" werden von BinPatch leider momentan noch völlig ignoriert. Die nötige Erweiterung des Patchformates hierfür wird erst in der V2.0 von BinPatch erfolgen, eine Implementierung wird u.U. aber erst verzögert in einer V2.1 erfolgen, da die Materie recht komplex zu sein scheint.
Wenn Sie nur DoPatch anwenden, dann fragen Sie bitte den Ersteller des Patches! Kein verantwortungsvoller Autor wird Patches rausgeben, die er nicht selbst getestet hat.
Wenn sie einen vermeintlichen Fehler in GenPatch oder DoPatch gefunden haben, dann lesen sie bitte unbedingt vorher die Kapitel "Besonderheiten je Plattform" und "Mögliche Probleme", um zu sehen, ob es sich um ein bekanntes Problem handelt. Dann schauen sie bitte vorher in einer der Bezugsquellen nach, ob das Problem in einer neueren Version behoben ist.
Dann versuchen sie bitte zunächst das Problem zu reproduzieren.
Bei zu patchenden Verzeichnissen entfernen sie alle Dateien, die nicht
nötig sind, um das Problem zu reproduzieren. Sofern der Fehler bei einer
einzelnen Datei auftritt, versuchen Sie bitte auch, einen Dateipatch genau
dieser Datei zu machen und sehen sie, ob das Problem auch dort auftritt.
Sofern möglich versuchen sie bitte auch die Versionen anderer Plattformen,
um zu sehen, on das Problem nur für eine Plattform besteht. Toll wäre
auch, wenn sie ältere Versionen von BinPatch ausprobieren könnten,
ob das Problem da schon bestanden hat.
Dann versuchen Sie bitte ein Mail an mich zu fomulieren, die folgende Punkte beinhaltet:
a) Welche Version von BinPatch auf welchen Plattformen verwenden sie konkret ?
Diese Information ist sehr wichtig! Nur so kann ich gezielt nach Ursachen für ihr Problem Aussschau halten.
b) Welche Fehlermeldung geben GenPatch bzw. DoPatch aus ?
Auch diese Information ist sehr wichtig! Auch wenn die Fehlermeldung ihnen nicht verständlich ist, so kann ich doch u.U. sofort erkennen, was schiefgegangen ist.
c) Welche genauen Parameter haben sie verwendet ?
Auch diese Information ist recht wichtig! Manche Fehler mögen nur bei best. Parametern auftreten. Probieren sie bitte auch die normalen Parameter.
d) Was genau haben sie zu patchen versucht ?
Waren es Programme, Bilder oder Texte ? Diese qualitative Information kann auch hilfreich sein.
Schicken sie diese Mail an <KayHayen@bigfoot.com> und wählen sie den Betreff "Bugreport BinPatch Vx.xx", so daß es mir möglich wird, eine Vorsortierung zu machen. Die binären Dateien schicken sie BITTE NICHT gleich mit. Wenn es dazu Grund gibt, werde ich Sie dazu auffordern. Die registrierten Benutzer mögen selbst abwägen, ob ihr Anliegen wirklich dringend ist. In der Regel wird das Zusenden der Binärdateien aber nicht nötig sein.
Mein genereller Dank gilt in ersten Linie meinem Bruder Andree, der mir über seine Site Edition das Tor zum Internet geöffnet hat. Sein brüderlicher Rat hat mir oft geholfen und mich vor mancher Dummheit bewahrt.
Außerdem seien DJ Delorie und Eli Zaretski gedankt. Ihnen verdanke ich viel Support was 'djgpp' einem GNU-Port des gcc für DOS angeht.
Ferner danke an Daniel Friedmann, der sich bereit erklärt hat, BinPatch für OS/2 im GFD-Netz zu uploaden.
Und last but not least geht ein Danke an alle Betatester von BinPatch, die meisten guten Ideen, habe ich ihren Anregungen entnommen: Ich habe hier diejenigen unter Ihnen mit besonders großer Hilfsbereitschaft in alphabetischer Reihenfolge aufgezählt:
Viel Spaß beim Ausprobieren!
Gruß, Kay Hayen
PS: Für Hinweise auf Defizite oder Verbesserungen im Inhalt, Layout oder HTML-Code dieser Doku bin ich mehr als dankbar!
BinPatch: Bezeichnet das Programmpaket zum Erzeugen und Anwenden von Patches. Manchmal werden auch die erzeugten UTP-Dateien BinPatch(es) genannt.
Compiler: Ein Programm, das von Entwicklern genutzt wird, um Programme zu erzeugen. Normalerweise geben sie einem Programm gewissen Standard-Funktionalität mit, die bei allen Programmen, die den gleichen Compiler nutzen, vorhanden sind.
DoPatch: Bezeichnet das Programm zum Anwenden von Patches, Teil von BinPatch.
DPMI: Methode mit der DOS-Programme auf mehr Speicher zugreifen können als DOS früher einmal vorgesehen hatte. Jedes DOS-Fenster von Windows oder OS/2 hat einen sog. DPMI-Server auf den die DOS-Programme zugreifen können und genau das macht auf GenPatch.EXE für DOS/Windows.
GenPatch: Bezeichnet das Programm zum Erzeugen von Patches, Teil von BinPatch.
Lange Dateinamen: So werden die mit Windows 95 eingeführten Dateinamen genannt, die nichtmehr den Konventionen von DOS 6 und davor genügen müssen. Insbesondere dürfen Dateinamen länger als 8 Zeichen sein, mehr als einen Punkt enthalten und danach auch mehr als 3 Zeichen. Nur DoPatch für Windows 95/NT kann diese Dateinamen bearbeiten und nur GenPatch für NT kann unter NT diese Dateinamen bearbeiten.
Patch(datei): Eine Datei (bei BinPatch eine mit der Endung ".UTP", daher auch UTP-Datei genannt) mit der es möglich ist aus einer älteren Version einer Datei eine neuere Version zu erstellen. Bei BinPatch kann ein Patch sich auf eine gesamten Verzeichnis mitsamt Unterverzeichnissen beziehen.
Redundanz: So wird es genannt, wenn Information sich in gleicher Weise wiederholt. Für BinPatch ist auch z.B. auch ein zitierten Newsartikel redundant, weil BinPatch kleine Abweichungen gut kompensiert. Solche Redundanzen werden auch von modernen Packern nicht erkannt, wohl aber von GenPatch, wenn Sie die Option "-r" aktivieren.
Overhead: Anteil eines Programmes, der eigentlich keine Funktion hat, aber aus technischen Gründen dennoch im Programm drinsteckt.