BinPatch (10k)V1.9
(10. offizielles Release für DOS, Win95, NT, OS/2 und Linux am 3.9.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
13. Mögliche Probleme
14. Besonderheiten je Plattform
15. Bugreports
16. Danksagungen

1. Was ist BinPatch?

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 wesentlich 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?")


2. Die Lizenz

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 die Dokumentation 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. Die Benutzer sind aber aufgefordert, bei Gefallen dennoch BinPatch zu registrieren.

f) Die kommerzielle Nutzung von GenPatch ist nicht ohne vorherige Registrierung erlaubt. Eine Einzellizenz berechtigt eine Einzelperson zur kommerziellen Nutzung von GenPatch. Die Firmenlizenz (site licence) berechtigt die Angestellten einer Firma im Umkreis von 160km in deren Auftrag Patches zu erstellen. Die world-wide licence gestattet das sogar weltweit. 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 <Kay@kayhayen.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 garantiert! 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.


3. Was leistet BinPatch konkret?

Der Vorteil, den BinPatch gegenüber der vollständigen Übertragung einer neuen Version bietet, wird anhand von Beispielen schnell deutlich.

(Anmerkung: Die meisten Beispiele betreffen United-Edition ,ein PBEM, das ich derzeit entwickle. Es handelt sich um ein mit Delphi erstelltes Windows-Programm inklusive Hilfe-Datei und was so typisch für diese Plattform ist)

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:

Ich hatte einige Texte im Programm vergessen zu lokalisieren, wollte aber dem nur Englisch-sprachigen Freund nicht zumuten, mit den Deutschen auskommen zu müssen. Daher erstellte ich mit GENPATCH UNITED41 UNITED42 UPDATE.UTP eine Patchdatei. (United41 und United42 sind Verzeichnisse älterer und neuerer Version.) 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 ? Grafisch läßt sich das so veranschaulichen:

Minor bugfix to United-Edition demo
Full packed version 570k
Patch 5.7k
Packed Patch 2.7k

Mein Freund mußte zur Anwendung der Patches nur "DoPatch update.utp -auto" tippern, schon suchte das Programm die alte Version und bot ihm an sie zu aktualisieren.

Beispiel B:

Ich hatte jemandem nach längerer Zeit ein Update zugeschickt, das viele kleine Abweichungen enthielt. Aber auch da leistet BinPatch hervorragendes.

Major update to United-Edition demo
Full packed version 570k
Patch 77k
Packed Patch 35k

Wenn sie keine neuen Komponenten hinzufügen, wächst die Größe des Patches in der Regel mit der Zeit nur noch langsam an, obwohl sie mehr verändern. Das hat damit zu tun, daß Änderungen beim Linken (moderne Linker stellen den Code zwecks Optimierung um) und in der Addressierung der globalen Variablen schnell zu 30K führen. Das Umschreiben einer einzelnen Routine ist aber für BinPatch mit weniger Bytes erledigt.

Beispiel C: 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.

Kleinere Releases durch BinPatch
Full packed version 74k
Full packed version with install using Patch 47k

Diese Anwendung ist zugegeben ziemlich untypisch, zeigt aber ein zusätzliches Potential von BinPatch. Sinnvoll wird so ein Patch durch den Overhead von Programmen, die mit dem gleichen Compiler übersetzt wurden. Wenn sie z.B. ein Programm-Paket aus meheren Delphi-Programmen releasen wollen, dann wird die Bilbiothek, die für eine Größe der Programme von mind. 200K sorgt nur einmal eingebunden und Sie müssen sich nicht um die Größe des Archivs sorgen.

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. Der war damit natürlich auch deutlich kleiner als die beiden Dokumente, aber vorallem war das für mich sehr komfortabel.

Resumee: 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.)


4. Wozu ist BinPatch sonst noch einsetzbar?

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.


5. Anforderungen

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. Unter DOS können sie falls vorhanden QEMM verwenden oder alternativ 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/NT:

Das DoPatch für Win95/NT läuft nicht unter purem DOS, aber im DOS-Fenster von Windows 95. Für DOS verwenden Sie bitte DoPatch für DOS.

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 Programme benötigen installierte ELF-Libraries, eine Version für aout ist nichtmehr geplant.


6. Registrierung

Bei Gefallen kann - bei kommerzieller Nutzung muß - BinPatch registriert werden. Dazu gibt es verschiedene Möglichkeiten, die in BinPatch Registrierung erklärt werden, u.a. das sehr komfortable und vielseitige Register.EXE, das BinPatch beiliegen sollte, (wenn nicht bitte 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 alle gewählten Plattformen per EMail zugesandt.
Ein wirklich gutes Produkt!

Eine Standort- oder Weltweitlizenz gilt nur für Produkte der registrierenden Firma. Angestellte dürfen damit keine eigenen Projekte patchen.

Anmerkung: Dieses Angebot bleibt nur bis zum Erscheinen eines neuen Releases gültig. Schauen sie jeweils nach der aktuellsten Version dieses Dokumentes in einer der Bezugsquellen.


7. Bezugsquellen

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 Addresse http://www.kayhayen.com/binpatch/download.htm in ihren Brower eingeben.

2. FTP

Der offizielle anon-FTP Server für BinPatch ist mein eigener: ftp.kayhayen.com. Dort finden sie die neuesten, aber auch ältere Versionen von BinPatch.

3. Filenetze

Das GFD-Filenetz wird regelmässig mit der jeweils aktuellen OS/2-Version zu versorgt. Bei Hinweis werde ich auch andere Filenetze bedienen, teilen Sie mir bitte mit, wenn Sie weitere Filenetze kennen die für die BinPatch geeignet ist.

4. Newsgroups

Die aktuelle Version von BinPatch gehen einige Zeit nach dem Release auch durch die geeigneten Binary-Newsgroups. Momentan geht nur die DOS-Version durch de.alt.binaries.msdos.

Anmerkung: Wer andere Bezugsquellen vorschlagen möchte, ist herzlich eingeladen, das auch zu tun. :-)

8. Distributionen

Dieses Kapitel listet die einzelnen Distributionen auf und erklärt, was genau sie enthalten:

- mkpat19f.zip
: BinPatch für DOS/Windows3.1 als InfoZip-File.

Programmdateien
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 und mit LFN Im DOS-Fenster,
aber keine LFN
Im DOS-Fenster
DOPATCH.EXE 30k (16k) Ja Im DOS-Fenster, keine LFN
DOPATINT.EXE 36k (18k)

Sonstige Dateien
Datei Beschreibung
README.HTM Die BinPatch Dokomentation im HTML-Format
REGISTER.EXE Windows-Programm, um BinPatch über Kagi zu registrieren.
REGISTER.HTM Informationen über die Optionen zum Registrieren von BinPatch.
REGISTER.TXT Ein ASCII-Text, der die Registrierung bei Kagi
(allerdings auf Englisch) erläutert.
BINPATCH.GIF
MINIPNKT.GIF
BK101.GIF
BAR.GIF
Grafiken für die HTML-Dateien.

- mkpat19t.zip: BinPatch für Windows 95&NT als InfoZip-File.

Programmdateien
Datei Größe(gepackt)  DOS Windows 3.1 Windows 95 Windows NT
GENPATCH.EXE k.a. Nein Nein Im DOS-Fenster Auf der Kommandozeile
DOPATCH.EXE 51k (28k)
DOPATINT.EXE 57k (32k)

Sonstige Dateien wie bei mkpat19f.zip.

- mkpat19p.zip: BinPatch für OS/2 V2, Warp3&4 als InfoZip-File.

Programmdateien
Datei Größe(gepackt)  DOS OS/2
GENPATCH.EXE k.a. Nein Im OS/2-Fenster
DOPATCH.EXE 46k (27k)
DOPATINT.EXE 51k (30k)

Sonstige Dateien wie bei mkpat19f.zip.

- mkpat19l.tgz: BinPatch für Elf-Linux als tgz-file.

Programmdateien
Datei Größe(gepackt)  a-out ELF
genpatch k.a. Nein Ja
dopatch 30k (15k)

Sonstige Dateien wie bei mkpat19f.zip.


9. History

Hier eine Auflistung der Änderungen von Version zu Version.

V1.9 (10. offical release for DOS, Win95, NT, OS/2 and Linux on 3.9.97)

V1.8 (9. offizielles Release für DOS, Win95, NT, OS/2 und Linux am 11.7.97)

- DoPatch hat eine neue Option "-auto", die es veranlaßt, die Festplatten nach potentiellen Zielen des übergebenen Patches selbst zu durchsuchen. Das wird "Autoscan" genannt. Das Feature ist neu und mag noch Fehler haben, also nicht mit allen Spezialfällen umgehen können, da das nur sehr schwer testbar ist.
- GenPatch hat eine neue Option "-z", die das anschliessende Packen mit einem definierten Packer erlaubt. Dieser Packer ist als Vorgabe das freie InfoZip 2.1, kann aber über "-Z" modifiziert werden. Bisher können "-Z1" (LHA 2.13 bis 2.5) oder "-Z2" (RAR2.0) definiert werden, wobei weitere Packer noch folgen werden.
- Eine weitere neue Option "-x" weist GenPatch an den Patch nicht nur zu packen, sondern ein selbstextrahierendes Archiv zu erstellen. Bei InfoZip und LHA werden bisher nur der Patch und das DoPatch entpackt. Im Fall von RAR wird ein Menu samt Hilfetexten angezeigt, daß dem Endbenutzer die wichtigen Optionen von DoPatch zur Verfügung stellt. So sind dann selbstextrahierende und praktisch selbstanwendende Patches möglich.
- Die neue Option "-q" stellt beim GenPatch die Benutzung eines CoProzessors ab. Das ist allerdings nur für die wenigen 386er ohne dieses Bauteil sinnvoll und senkt die Packrate der Patches leider dramatisch.
- Das DoPatch für Windows 95/NT setzt nun ebenfalls das Dateidatum.
- Das DoPatch ist nun als "DoPatInt" erthalten, das eine Erkennung der Systemsprache und Ausgaben in dieser Sprache durchführt. Bisher werder English, Deutsch und (teilweise) Französisch unterstützt. Das DoPatch.EXE versucht nichtmehr die Sprache zu erkennen.
- Das Format der Patches ist mit V1.7 kompatibel.

V1.7 (8. offizielles Release für DOS, Win95, NT, OS/2 und Linux am 18.6.97)

- Ein prinzipieller Fehler im Format der Patches 1.0x wurde aufgedeckt, eine Annahme bzgl. Einbettungen hat sich bei Patches mit besonders ungünstigen Eigenschaften als Fehlerquelle erwiesen. Bei großen Einbettungen und dem Patchen deutlich kleinerer Dateien auf größere Dateien ohne die Option "-r", erzeugt GenPatch Patches, die vom DoPatch abgewiesen werden. Dieser Fehler sollte sehr selten vorkommen, erfordert aber eine sofortige Änderung des Formates der Patches, so daß nun erstmals eine Inkompatiblität auftritt.
- Die alten Version von DoPatch verweisen auf eine Internetseite, wo das neue DoPatch erhältlich ist. Die neue Version verweist auf eine Seite, wo DoPatch 1.06 erhältich ist.
- Das neue Format beinhaltet nun endlich auch das Dateidatum der zu patchenden Dateien. Bis auf DoPatch für DOS/Windows3.1 setzt allerdings derzeit noch kein DoPatch dieses Datum um.

- Neuer Parameter "-n" des GenPatch setzt das Datum der Dateien im Patch auf das aktuelle Datum.
- Die Ausgabe des DoPatch wurde überarbeitet und paßt jetzt komplett in ein 80x25 Zeichen Fenster, so daß auf den Tastendruck bei "DoPatch -h" verzichtet werden kann. Nebenbei sollten die Texte jetzt wesentlich verständlicher sein
als vorher.
- Der Englische Text für unreg. Versionen war leider fehlerhaft formuliert und wurde nochmals geändert.
- Die Erkennung der Systemsprache durch GenPatch sollte nun besser funktionieren, ist aber zugegeben noch nicht fehlerlos.
- Die Option "-c" läßt nur noch Werte von 10..255 zu. Andere Werte sind nicht sinnvoll. Vorgabe ist weiter 20.
- Sowohl Warp 2 als auch Warp 3 haben nochmals Detailverbesserungen erfahren, die bei relativ vielen Einbettungen einen Gewinn von fast 1% bedeuten.
- Der neue Parameter "-p" erlaubt die Lokalität des Patches in anderer Hinsicht als "-l" zu beeinflußen. Mit ihm kann von mehr oder weniger kostanten Eigenschaften bzgl. der Struktur des Patches profitiert werden. Vorgabe ist 190, teilweise können höhere oder niedriger Werte das Ergebnis verbessern.
- Der neue Parameter "-b" kann bei sehr gut packbaren Dateien wie z.B. Texte oder Hilfedateien die Packrate des Patches dramatisch erhöhen, besonders bei Patches mit vielen kleinen Änderungen. Ansonsten bleibt er fast bis ganz wirkungslos, bei Programmdateien schadet er eher. Auch dieser Parameter ändert nur das Packverhalten des Patches, nicht direkt seine Größe.

V1.06 (7. offizielles Release für DOS, Win95, NT, OS/2 und Linux am 16.6.97)

- Ein Fehler im GenPatch wurde bereinigt. In (seltenen) Fällen konnte es unter Linux "coredumpen" oder auf anderen Plattformen Patches erzeugen, die vom DoPatch abgewiesen werden.
- DoPatch für Windows 95/NT benutzte nicht das richtige Verzeichnis für seine temporären Dateien. Das wurde korrigiert.
- Der Text für Patches, die mit unreg. Versionen von GenPatch erzeugt wurden, ist deutlich abgemildert worden und formuliert jetzt positiv.
- Schwächen in der Erkennung der Systemsprache für DOS/Windows3.1 und Win95/NT wurden beseitigt.

V1.05 (6. offizielles Release für DOS, Win95, NT, OS/2 und Linux am 9.6.97)

- GenPatch zeigt nun einen prozentualen Fortschrittszähler für Warp 1 an, der ohne nennenswerte Performance-Kosten integriert werden konnte.
- Ab dieser Version darf der Suffix ".utp" bei der Angabe der Patchdatei bei GenPatch drinstehen, vorher wurde dann unnötigerweise "test.utp.utp" angelegt, was unter DOS/Windows3.1 zu einem Fehler führt, da das dort ein illegaler Dateiname ist.
- BinPatch erkennt die Sprache des Systems und wählt seine Texte entsprechend. Die Zweisprachigkeit von BinPatch wurde beendet. Die Erkennung erfolgt nicht für Linux, dort wird nur Englisch unterstützt. Zudem wurden einige Texte geändert, ergänzt oder eleganter formuliert.
- Die Patches werden etwas schneller erstellt. Die Option "-r" des GenPatch wurde vorübergehend für eine Neuimplementierung deaktiviert.
- Bei einem logischen Fehler, der zum Abbruch von GenPatch führte (etwa eine nicht lesbare Quelldatei), wurde die bis dahin erzeugte Patchdatei nicht gelöscht. Der Abbruch mit STRG-C führt nun in der Version für DOS/Windows3.1 und Linux zu dessen Löschung. Für die anderen Plattformen wird hier noch recherchiert.
- Das DoPatch für Win95, OS/2 und Linux ist jetzt fähig parallel zu arbeiten, dh. mehere Patches können gleichzeitig angewendet werden. Das DoPatch für DOS erlaubt das nicht, um die Dateigröße minimal zu halten.
- Der Timeout für den Tastendruck funktioniert jetzt auch unter OS/2.

V1.04 (5. offizielles Release für DOS, Win95, NT, OS/2 und Linux am 22.5.97)

- Das erste komplett englisch-sprachiges Release ist erfolgt.
- 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, Geldscheinen und 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.

V1.03 (4. offizielles Release für DOS, Win95, NT, 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 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. Bei großen Dateien, die viele Einbettungen benötigen, kommt das zum tragen.
- 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.
- Das DoPatch für DOS erkennt jetzt LFN-Parameter bzw. Patches für Dateinen mit LFN und weist auf ein geeignetes DoPatch hin, anstatt einen Fehler erst beim Zugriff zu melden.
- 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)

- 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.
- 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)

- Das ReadMe zu BinPatch wird jetzt als HTML mitgeliefert.
- Der Infotext von DoPatch wurde überarbeitet.
- 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 (9. Betaversion für DOS, Win95 und Linux am 31.1.97)

- Die Überprüfung des Registrations-Keys im GenPatch wurde resistenter 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 (8. Betaversion für DOS, Win95 und Linux am 22.1.97)

- 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 Dateien 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 kleinere EXEs für DOS

V0.83 (2. Betaversion für DOS am 16.12.96)

- Wesentlich 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.


10. Geplante Features

Anmerkung: Erscheinende Releases können in Funktion und Implementierung von dieser Ankündigung abweichen.

V2.0 (Release in Vorbereitung für 8/9.97)

- 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.
- Eine Progress-Anzeige auch für DoPatch ist vorhanden.
- Das DoPatch erkennt auch unter Linux einen Timeout beim Warten auf einen Tastendruck.
- 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 werden DoPatch und dem EAs beigefügt, die ohne besondere Anmeldung auskommen.

- Die Versionen für Windows95/NT beinhaltet nun eine kleine Installtion für das DoPatch, die nur ausgeführt werden muß, wenn die neuen Icons für UTP-Dateien beim System angemeldet werden sollen.

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. :-)


11. Kurzanleitung

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 5 Optionen angeben. Hier wird 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. Anmerkung: In der momentanen Version bleibt diese Option wirkungslos, weil sie bis zu einer Neuimplementierung deaktiviert wurde.

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 wie 200 experimentieren, da Textdateien recht stabile Eigenschaften im Vergleich zu EXE Dateien haben. Zugelassen sind nur Werte von 20..200, andere machen kaum Sinn.

Mit "-l" legen sie den Grad der Lokalität beim Optimieren von nicht abbildbaren Teilen fest. Dieser Wert beeinflußt nicht direkt die Grösse des Patches, sondern nur dessen Größe nach dem Packen! Für EXE-Dateien ist die Voreinstellung von 245 recht vernünftig. Bei kleineren Werten steigt dann in der Regel 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.

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

Mit "-n" weisen sie GenPatch an, das Datum der eingetteten oder zu patchenden Dateien nicht auf das der Vorlage, sondern auf das aktuelle Systemdatum zu setzen.

Mit "-z" veranlassen sie GenPatch nach dem Packen die Datei direkt an einen Packer zu übergeben. Das erspart ihnen den Aufruf des Packers. Dieser Packer muß auf ihrem Rechner installiert sein und wird mit "-Z" ausgewählt. Mit "-x" können sie sogar ein selbextrahierendes Archiv mit einem DoPatch dabei erzeugen, wobei Sie beachten sollten, daß nicht jeder Packer auf jeder Plattform selbstextrahierende Patches erzeugen kann.


12. Tips&Tricks

Tip: Es kommt vor, daß eine "automatische" Zuteilung von DPMI-Speicher unter Windows fehlschlägt, weil Windows unter "automatisch" eben nicht "nach Bedarf" versteht, sondern einen Wert, der auf der physischen Speichermenge beruht. Legen Sie dann ein spezielles DOS-Fenster an, dem 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 müssen Sie 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 -c250 und -l2000, die das Standardverhalten von GenPatch modifizieren. Normalerweise ist GenPatch nämlich auf EXE Dateien optimiert, was derzeit -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.


13. Mögliche Probleme

Unter DOS oder im DOS-Fenster kann es bei sehr großen Dateien 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. ;-)

Beim Abbruch mit STRG-C bleibt eine "angefangene" Patchdatei stehen. Das DoPatch kann damit aber nicht umgehen. Ab der 1.05 ist dieses Problem zumindest beim GenPatch für DOS/Windows3.1 und Linux behoben. Ab 1.8 habe ich es für Linux wieder einführen müssen, weil die Routine vermutlich die "coredumps" (unten) hervorrief.

Alle Versionen von DoPatch sind auch für den parallelen Betrieb geeignet, eine Ausnahme stellt das DoPatch für DOS dar. Nutzen sie stattdessen das DoPatch für andere Plattformen.

Für die Linux Version 1.05/6/7 wurde gemeldet, daß GenPatch nach jedem erzeugten Patch einen "coredump" liefert. Die erzeugten Patches sind aber ohne Probleme anwendbar. Ab 1.8 sollte das Problem behoben sein.

Das Datum für Einbettungen wird in den Versionen 1.7 und 1.8 nicht gesetzt, nur gepatchte Dateien erhalten das Datum des Originals.


14. Besonderheiten je Plattform.

DOS/Windows 3.1: Keine.

Windows 95/NT: Keine, aber DoPatch für Windows95/NT erfordert bei Win95 den GUI-Modus. Benutzen sie DoPatch für DOS, wenn Sie Patches im MS-DOS Modus anwenden möchten.

Linux: Momentan ist Linux die einzige unterstützte Plattform, die bei Dateinamen die Gross/Kleinschreibung unterscheidet. Das kann zu Problemen führen, wenn mit dem GenPatch einer anderen Plattform erzeugte Patches durch das DoPatch für Linux angewenden. Erzeugen Sie Verzeichnis-Patches mit GenPatch für Linux bis das Problem behoben ist.

OS/2: Keine, nur beachten Sie bitte, daß GenPatch unter OS/2 noch nicht richtig mit STRG-C umgeht und eine unvollständige Patchdatei nicht löscht.


15. Bugreports

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:

  1. Welche Version von BinPatch auf welchen Plattformen verwenden sie konkret?
    Diese Information ist very wichtig! Mit diesem Wissen kann ich wesentlich gezielter nach der Ursache des Problems Ausschau halten.
  2. 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.
  3. 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.
  4. 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 <bugreport@kayhayen.com> und wählen sie den Betreff "Bugreport BinPatch Vx.xx", so daß es mir ist, 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, zumal Sie mit schneller Antwort von mir rechnen können.


16. Danksagungen

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.

Mein Dank auch an den hilfsbereiter Übersetzer Roger Malin, der mir bei der Übersetzung von BinPatch in das Französische hilft.

Und last but not least geht ein Danke an alle Betatester und Kunden von BinPatch, sehr viele guten Ideen in BinPatch, 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!

Anhang A: Begriffe

Ausführbare Patches: Normalerweise ist zum Anwenden von Patches ein spez. Programm names DoPatch nötig. Anders bei ausführbaren Patches. Diese müssen als Programme nur gestartet werden und aktualisieren dann die vorhandenen Daten. Diese Patches enthalten quasi selbst ein DoPatch und sind daher auch größer als Patches, die nicht ausführbar sind.

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 auch GenPatch für DOS/Windows 3.1.

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.

Multipatch: Für gewöhnlich werden Patches für eine bekannte Quelle auf ein festgelegtes Ziel erzeugt. Beim Multipatch handelt es sich um Patches, die mehr als eine Quelle auf ein Ziel aktualisieren können. Damit lassen sich dann z.B. 1.0a und 1.0b mit dem gleichen Patch zur 1.1 aktualisieren.

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.


Dies ist Seite http://www.kayhayen.com/binpatch/liesmich.htm

Copyright © 1997 Kay Hayen. Letzte Änderungen 23.9.1997. Alle erwähnten Namen und Warenzeichen sind Eigentum der jeweiligen Firmen. Verantwortlich ist webmaster@kayhayen.com, Kay Hayen Software, Hamburger Ch.114, 24113 Kiel - Germany.