Liesmich für das LZX-Plugin für Total Commander
Die aktuelle Version des LZX-Plugins ist 2.2 !
Diese Dokumentation erklärt wie man das LZX-Plugin installiert/aktualisiert/deinstalliert.
Es enthält auch die Liste der Funktionen, die Kontaktinfos und die Versionsgeschichte. Sie
wurde zuletzt modifiziert am 13.07.2012.
Für eine englische Version siehe
Readme for the LZX plugin for Total Commander.
Diese Dokumentation ist Teil des Archivs
lzx_plugin.zip
verfügbar auf der Pluginseite
der Website von Total Commander.
Funktionen des LZX-Plugins
Das LZX-Plugin "Unlzx.wcx" ermöglicht es LZX-Archive mit Total Commander
zu entpacken. LZX ist ein populäres AMIGA Packformat. Mehr LZX-Material und Informationen kann man
auf The LZX Page by Jonathan Forbes and Tomi Poutanen finden.
Diese Webseite ist von den Autoren des LZX-Kompressionsalgorithmus und den originalen LZX-Programmen.
Das Plugin (Programmerweiterung) hat folgende Funktionen (Features):
- Unterstützung zum Betrachten des LZX-Archivinhaltes.
Öffne Archivdatei mit Erweiterung .lzx
mit Enter oder Return, Strg+BildAb oder mit einem doppelten Mausklick.
- Extrahiert ausgewählte Dateien von einem
LZX-Archiv oder entpackt alle Dateien mit Pfad mit Alt+F9.
- Testen der Integrität von LZX-Archiven mit Alt+Umsch+F9.
Siehe Frage 1 in der LZX FAQ auf The LZX Page
für eine mögliche Ursache für ein beschädigtes Archiv.
- Unterstützung für eine Textsuche in Dateien in LZX-Archiven
mit Alt+F7 und Optionen "Archive durchsuchen" und "Text suchen" aktiviert.
Siehe im Kapitel Update wie man diese Funktion aktiviert, wenn
man eine Aktualisierung des LZX-Plugins von einer Version vor 2.0 durchführt.
- Handhabung der Dateiattribute kann konfiguriert werden.
Siehe Kapitel Einstellungen für
Handhabung der Dateiattribute in der Dokumentation für die INI-Einstellungen.
- Handhabung des Dateidatums kann konfiguriert werden und
Umgehungslösungen für den Y2K-Bug (Jahr 2000 Programmfehler) von LZX.
Siehe Kapitel Einstellungen
LZXPacker und TouchFiles in der Dokumentation für die INI-Einstellungen.
- Spezialfunktion 1: Setze automatisch
die Archivdateizeit auf die neueste Dateizeit innerhalb des Archivs.
Siehe Kapitel Einstellung ArchiveTime
in der Dokumentation für die INI-Einstellungen.
- Spezialfunktion 2: Speichere Dateinotizen
(Kommentare) nach descript.ion während dem Entpacken von Dateien.
Siehe Kapitel Einstellung SaveFileNotes
in der Dokumentation für die INI-Einstellungen.
Bitte lesen sie die Dokumentation INI-Einstellungen des
LZX-Plugins für detailliertere Informationen über die INI-Datei Unterstützung durch
dieses Entpackerplugin und die speziellen Funktionen.
Bekannte Einschränkungen: Pfade mit Unicodezeichen werden vom Plugin nicht unterstützt!
Kontaktinformation
V2.2 des LZX-Plugins wurde entwickelt von Ing. Ofner Michael.
Falls sie Vorschläge für weitere Verbesserungen haben, oder falls sie einen Programmfehler oder einen
Fehler in den HTML-Dokumentationen gefunden haben, schreiben sie einen Beitrag im Total Commander Plugins Forum unter
Updated version of the LZX packer plugin available.
Das LZX-Plugin wurde zuerst entwickelt von Sebastian Erbert.
Für Entwickler und Programmierer: Der Quellcode des LZX-Plugins ist auch verfügbar
im Archiv lzx_source.zip.
Anleitung für eine Neuinstallation
Falls man bereits eine frühere Version des LZX-Plugins installiert hat,
sollte man beim Kapitel Update des LZX-Plugins weiterlesen.
Seit V6.50 unterstützt Total Commander eine geführte, automatische Installation von
Plugins. Dazu führt man einfach einen Doppelklick auf die auf einem
lokalen Laufwerk gespeicherte "lzx_plugin.zip" aus oder öffnet
diese mit der Taste Enter oder Return und
folgt den Anweisungen, falls das Plugin nicht schon mit dieser Methode installiert wurde.
Man kann ein wenig Plattenspeicher durch Löschen der englischen HTML-Dokumentationen
des LZX-Plugins im Installationsverzeichnis des Plugins einsparen. Man kann auch die deutschen
Dokumentationen löschen, falls man diese nicht in entpackter Form benötigt.
Falls man die Funktion der automatischen Installation mittels AutoInstallPlugins=0 in
Wincmd.ini deaktiviert hat oder wenn man eine Version von Total Commander vor V6.50 hat, ist
folgendes auszuführen, um das Plugin manuell zu installieren und zu konfigurieren:
- Man entpackt zumindest die Datei "Unlzx.wcx"
in das bevorzugte Verzeichnis.
- Nun wählt man vom Menü "Konfigurieren"
den Menüpunkt "Einstellungen" an.
- Dann selektiert man den Zweig bzw. die Kartei "Packer".
- Danach klickt man auf die Schaltfläche
"Packer-Erweiterungen konfigurieren".
- Nun gibt man "lzx" als neue Erweiterung
im kleinen Feld in der rechten oberen Ecke ein.
- Weiters klickt man auf die Schaltfläche "Neu",
sucht nach Unlzx.wcx und öffnet diese Datei.
- Um die Konfiguration des Plugins (Erweiterung) zu beenden, klickt man
zweimal die Schaltfläche "OK" an.
Die beschriebenen Schritte sollten folgendes in die INI von Total Commander hinzufügen:
[PackerPlugins]
lzx=128,Pfad zu unlzx.wcx\Unlzx.wcx
Die Nummer nach dem Gleichheitszeichen ist die Info für Total Commander, dass dieses
Packer-Plugin die Textsuche in archivierten Dateien unterstützt (PK_CAPS_SEARCHTEXT).
Update des LZX-Plugins
Falls man bereits eine frühere Version des LZX-Plugins installiert hat, installiert man die neue
Version entweder mit der automatischen Installationsroutine in das gleiche Verzeichnis als das bereits
vorhandene Plugin oder manuell durch Entpacken der neuen "Unlzx.wcx" mit
Überschreiben der vorhandenen Unlzx.wcx. Falls der Schreibzugriff auf die Datei verweigert wird,
weil diese bereits geladen ist, schließt man Total Commander und startet TC erneut, um das
Plugin aus dem Speicher zu entfernen und somit Schreibzugriff auf die Datei zu erlangen.
Wenn man die Testsuchfähigkeit des LZX-Plugins verwenden will, muss man nun die Packeroptionen
des LZX-Plugins händisch ändern, indem man folgende Schritte ausführt:
- Man wählt vom Menü "Konfigurieren"
den Menüpunkt "Einstellungen" an.
- Dann selektiert man den Zweig bzw. die Kartei "Packer".
- Danach klickt man auf die Schaltfläche
"Packer-Erweiterungen konfigurieren".
- Nun wählt man die Erweiterung "lzx"
im kleinen Feld in der rechten oberen Ecke aus.
- Weiters setzt man den Cursor an den Beginn des großen Feldes
"Verknüpfen mit" und ersetzt die Nummer
0 mit der Nummer 128.
Falls es keine Nummer gibt (nach einer automatischen Installation), ist hier
nichts zu machen. Total Commander wird sich die Packeroptionen vom Plugin
bei der ersten Verwendung holen.
- Um die Neukonfiguration des Plugins (Erweiterung) zu beenden, klickt man
zweimal die Schaltfläche "OK" an.
Man benötigt zumindest V5.51 von Total Commander für die
Verwendung der Textsuchfunktion.
Zusätzlich sollte man die Datei "lzx_read.txt" im Verzeichnis
des Plugins löschen, welche möglicherweise noch von einer früheren Version des
Plugins stammt und entpackt die neuen HTML-Dokumentationen in das Pluginverzeichnis (optional).
Deinstallation des Plugins
Falls das LZX-Plugin nicht mehr benötigt wird und es deinstalliert
werden soll, sind folgende Schritte auszuführen:
- Man wählt vom Menü "Konfigurieren"
den Menüpunkt "Einstellungen" an.
- Dann selektiert man den Zweig bzw. die Kartei "Packer".
- Danach klickt man auf die Schaltfläche
"Packer-Erweiterungen konfigurieren".
- Nun wählt man die Erweiterung "lzx"
im kleinen Feld in der rechten oberen Ecke aus.
- Den Cursor setzt man nun in das große Feld "Verknüpfen mit",
merkt sich den Pfad zu Unlzx.wcx und löscht den kompletten Text in diesem Feld.
- Um das Löschen des LZX-Plugins aus der INI von Total Commander abzuschließen,
klickt man zweimal die Schaltfläche "OK" an.
- Weiters wechselt man dann in das Verzeichnis des LZX-Plugins und löscht dort alle
Dateien, die mit "unlzx" beginnen und auch das Verzeichnis selbst,
falls es nun leer ist. Wenn man das Plugin Unlzx.wcx nicht löschen kann, schließt
man Total Commander und startet TC erneut, um das Plugin aus dem Speicher zu entfernen und
damit Schreib-/Löschzugriff auf die Datei zu erhalten.
- Abschließend sucht man nach "pkplugin.ini" im Verzeichnis von
Wincmd.ini und falls diese INI vorhanden ist, öffnet man diese Datei mit einem Texteditor,
sucht nach dem Abschnitt [Unlzx] und löscht den gesamten Abschnitt, oder
die gesamte INI-Datei, wenn sie keine Einstellungen von anderen Packer-Plugins enthält.
Falls pkplugin.ini nicht verwendet wurde, sucht man nach "Unlzx.ini"
im Verzeichnis von Wincmd.ini oder im Verzeichnis des Plugins und löscht auch diese Datei.
Danke für das Testen/Verwenden des LZX-Plugins!
Versionsgeschichte des LZX-Plugins
V2.2 vom 13.07.2012
64-Bit Version jetzt mit gleicher Funktionalität wie 32-Bit Version verfügbar.
Die verwendeten Funktionen aus den Windows Bibliotheken sind im Plugin der x64 Version
eingebettet, damit es keine Abhängigkeit von msvcr100.dll gibt. Das macht die x64 Version
aber auch wesentlich größer als die x86 Version des Plugins, welche dynamisch mit
kernel32.dll und msvcrt.dll verlinkt ist.
Fehlerkorrektur:
- Kleiner Fehler beim Lesen und Vergleichen der INI-Einstellungen korrigiert. Der Fehler hatte aber
keine Auswirkung auf die Funktionalität des Plugins oder andere Programme und Dateien.
V2.1 vom 28.12.2011
Fehlerkorrekturen:
- Aktualisieren eines bestehenden Kommentars einer Datei in descript.ion mit gesetztem
Attribut "versteckt" hat unter Windows 2000 und höheren Versionen von Windows nicht
funktioniert, da der Zugriff im Überschreibmodus blockiert wird. Erzeugen von descript.ion
und Anhängen eines neuen Dateikommentars funktionierten wie auch eine Aktualisierung unter
Windows 9x. Auch existierte dieses Problem nicht für descript.ion ohne gesetztes Attribut
"versteckt". Eine andere Methode wird nun für das Überschreiben einer versteckten
descript.ion zwecks Aktualisierung eines bereits vorhandenen Dateikommentars in descript.ion verwendet,
welcher nicht identisch mit dem im Archiv gespeicherten Dateikommentar ist.
- V2.0 des Plugins versuchte manchmal nicht ausgefassten Speicher freizugeben, weil eine
Initialisierung fehlte. Und bei einem Fehler während dem Öffnen eines Archivs
wurde bereits ausgefasster Speicher vor dem Verlassen nicht wieder freigegeben.
- Beim Ermitteln des Pfads für den Dateinamen der INI-Datei des Plugins wäre es
theoretisch unter Windows 2000 / XP möglich, dass ein Pufferüberlauf eintritt, wenn
der komplette Dateiname von Unlzx.wzx mit Pfad länger als 259 Zeichen ist (Fehler in
Funktion GetModuleFileName von Microsoft). Dieser unwahrscheinliche Fall wird nun erkannt und damit
eine mögliche Sicherheitslücke verursacht durch einen Pufferüberlauf geschlossen.
Kleine Erweiterungen:
- Ein Dateiname ohne Leerzeichen wird ohne doppelte Hochkommas beim Speichern einer Dateinotiz in
descript.ion gespeichert. Nur Dateinamen mit einem Leerzeichen werden eingeschlossen in doppelten
Hochkommas in descript.ion gespeichert. Sollte ein Anwender die Textdatei descript.ion manuell
mit einem Texteditor modifizieren und einen Dateinamen ohne Leerzeichen in doppelten Hochkommas
einschließen, dann hat V2.0 des Plugins bei der Suche nach dem Dateinamen ohne Leerzeichen
in descript.ion diesen Dateinamen nicht gefunden. Somit konnte es passieren, dass nach dem Entpacken
für eine Datei zwei Kommentare in descript.ion vorhanden sind, da der Dateiname einmal mit und
einmal ohne doppelte Hochkommas in der Datei descript.ion gespeichert ist. Total Commander wertet
in diesem Fall immer den Kommentar von der Zeile mit dem Dateinamen ohne die doppelten Hochkommas
aus. V2.1 des Plugins erkennt nun auch einen manuell in doppelten Hochkommas eingeschlossenen
Dateinamen ohne Leerzeichen in descript.ion und aktualisiert dessen Kommentar bei Abweichung
mit der im LZX-Archiv gespeicherten Dateinotiz. Bei einer Aktualisierung des Dateikommentars
werden aber die manuell hinzugefügten doppelten Hochkommas vom Plugin entfernt.
- Die Zeit des letzten Zugriffs der Archivdatei wird nicht mehr auf die Zeit der neuesten Datei im
Archiv gesetzt, wenn die Einstellung ArchiveTime
mit einem Wert größer 0 verwendet wird. Die Zeit des letzten Zugriffs ist nun immer
die aktuelle Systemzeit, da die Daten von der Archivdatei gelesen wurden. Es gibt eine Ausnahme.
Die Zeit des letzten Zugriffs der Archivdatei wird wie das Erstelldatum und das Datum der letzten
Modifikation auch auf die Zeit der neuesten Datei im Archiv gesetzt, wenn die Dateizeit in der
Zukunft im Vergleich zur aktuellen Systemzeit ist.
V2.0 vom 03.01.2007
Fehlerkorrekturen:
- Falscher Monatswert im Datum von archivierten Dateien korrigiert (0-11 statt 1-12).
- Problem mit Jahr 1978/1979 im Dateidatum durch Setzen auf 1980 gelöst,
weil ein Jahr < 1980 in der Windows FAT Umgebung nicht möglich ist.
- Falsche Extraktion einer Datei korrigiert, wenn der archivierte AMIGA Dateiname (mit Pfad) einen
Backslash enthält. Für AMIGA/UNIX Dateisysteme ist der Schrägstrich das Trennzeichen
für Verzeichnisnamen und der Backslash (Schrägstrich von links oben nach rechts unten) ist
ein normales, erlaubtes Zeichen in Verzeichnis- und Dateinamen. Backslashs in Verzeichnis-/Dateinamen
in AMIGA oder UNIX gepackten LZX-Archiven werden nun zu einem Unterstrich konvertiert. Dies ist ein
spezielles AMIGA/UNIX nach MS-DOS/Windows Konvertierungsproblem.
- Korrigiert wurde auch das Entpacken von Dateien mit einer Größe von 0 Byte
(leere Dateien), welche zwar angezeigt wurden, aber von den früheren Versionen nicht
entpackt wurden.
Dieses Plugin ist derzeit die einzige Unlzx-Routine
für jedes OS (operating system - Betriebssystem), welche in einem LZX-Archiv gespeicherte
leere Dateien und Verzeichnisse korrekt während dem Entpacken handhabt.
- Leerzeichen am Ende eines Verzeichnisnamens werden nun auch automatisch entfernt wie
es auch Total Commander tut. Damit werden Verzeichnisse in einem geöffneten Archiv
so angezeigt wie sie von Total Commander beim Entpacken eines Archivs erzeugt werden.
- Interne Puffer für vollständige Dateinamen wurden von 256 auf den Windows ANSI
Standard von 260 Bytes erhöht und dieses Limit wird auch überprüft bevor
Dateinamen kopiert werden, um Pufferüberläufe zu vermeiden.
Neue Funktionen:
- Unterstützung für eine INI-Datei für verschiedene
Benutzereinstellungen hinzugefügt.
- Umgehungslösungen und Korrekturen hinzugefügt für alle Probleme mit
falschem Jahr/Monat einer Datei, verursacht durch den Y2K-Bug des Original-LZX und den
3 unterschiedlichen Speicherformaten für Dateidaten größer als 31.12.1999
(Original + 2 verfügbare Patches) entsprechend der Anwenderspezifikation
LZXPacker= in der INI-Datei. Siehe Handhabung des
LZX-Datumsproblems mit dem LZX-Plugin für Details über alle Datumsprobleme
und Korrekturen.
- Die Dateien eines LZX-Archivs werden nun standardmäßig mit korrekter Dateizeit
extrahiert, wenn die Einstellung TouchFiles= in der INI den Standardwert 0 hat.
- Das Plugin stellt nun auch die Dateiattribute so weit möglich wieder her. Es
kann in der INI spezifiziert werden, wie die Dateiattribute beim Entpacken eines von
Dateien und Betrachten des Archivinhalts gehandhabt werden sollen.
- Funktion zum Testen der Archivintegrität (Alt+Shift+F9) hinzugefügt
(= Entpacken ohne in eine Datei zu schreiben).
- Das Plugin unterstützt nun auch die Textsuche in archivierten Dateien. Unterprogramm
GetPackerCaps() wurde hinzugefügt, um diese Funktionalität zu aktivieren und eine
Umgehungslösung für einen Programmfehler von Total Commander < V7.00 bei dieser
Funktion. (Entwickler bitte Unlzx.cpp im Quellcodepaket für Details anschauen.)
- Die Dateikommentare (AMIGA filenotes) können auch nach descript.ion während
dem Entpacken geschrieben werden, wenn die Datei nicht von Total Commander für
eine temporäre Verwendung entpackt wird.
Dies ist die erste
Packer-Erweiterung für Total Commander, welche Dateikommentare unterstützt!
- Es ist möglich automatisch die Dateizeit der Archivdatei auf die neueste Dateizeit im Archiv
zu setzen.
Dies ist möglicherweise das erste Packer/Entpacker-Programm,
welches eine derartige Funktion für bereits vorhandene Archive besitzt, bei der nicht eine
üble Umgehungslösung verwendet werden muss.
Weitere Verbesserungen:
- Dateien mit einem Schreibfehler während des Entpackens (Diskette voll?) werden nun
automatisch gelöscht und der Fehler wird auch an Total Commander zurückgemeldet,
welcher dann den Anwender mittels einer Meldung darüber informiert.
- Die Versionsinformation des Plugins ist nun zweisprachig (Englisch und Deutsch). Die Versionsinfo
wird auf der Kartei "Version" der Eigenschaften von der Datei Unlzx.wcx angezeigt. Um diese
zu sehen, klickt man entweder mit der sekundären (rechten) Maustaste Unlzx.wcx an und wählt
den Menüpunkt "Eigenschaften" oder betätigt Alt+Return, wenn die Datei den Fokus
hat. Die Kommentare der Einstellungen in der INI sind ebenfalls zweisprachig entsprechend der aktuellen
Ländereinstellung des Anwenders in den "Ländereinstellungen" von Windows.
- Interne Strukturen wurden reorganisiert, um den Speicherbedarf zu reduzieren und das
Plugin wurde mit der VS6 Linkeroption /FILEALIGN:512 compiliert, um die Größe
des Plugins um ca. 33% zu verringern.
- Umfangreiche und hoffentlich hilfreiche HTML-Dokumentationen in Englisch und Deutsch
wurden auch noch der ZIP-Datei des Plugins beigepackt.
Alle diese Korrekturen und Verbesserungen wurden von Ing. Ofner Michael hinzugefügt.
Alle vorhergehenden Versionen wurden geschrieben und freigegeben von Sebastian Erbert.
Dank geht an Sebastian Erbert und Christian Ghisler für zusätzliche Unterstützung
und Informationen!
V1.1 vom 01.09.2004
Letzte von Sebastian Erbert, dem ersten Autor des LZX-Plugins, freigegebene Version.
Fehler behoben, welcher durch eine fehlende Initialisierung des Ausgabepuffers mit 0
verursacht wurde. (Versionsnummer auf 1.1 geändert, da erste Freigabe 1.0 hatte.)
V0.4 vom 28.08.2004
Umgehungslösung für Dateien mit fehlerhafter CRC, welche weiterhin wie bisher nicht extrahiert,
aber nun an Total Commander gemeldet werden. Damit wird nun dem Anwender signalisiert, welche Dateien
wegen eines CRC-Fehlers nicht entpackt wurden. Hauptgrund für beschädigte Archive - siehe
Frage 1 in der LZX FAQ auf The LZX Page by Jonathan Forbes
and Tomi Poutanen.
V0.3 vom 03.03.2002
Fehlerbehebung: einige Archive wurden nicht korrekt entpackt.
V0.2 vom 12.01.2002
Fehlerbehebung: Unterverzeichnisse in den Archiven wurden nicht erstellt.
Fortschrittsanzeige implementiert (Code von Christian Ghisler verwendet).
V0.1 von 17.12.2001
Erste Testversion.