![]() |
SFXer - Ein SFX-zlib-Packer
Liste der Anhänge anzeigen (Anzahl: 2)
Auf längere Sicht habe ich vor, mir ein eigenes Setup-Tool zu schreiben. Als Vorbereitung auf dies, habe ich jetzt erst einmal ein SFX Tool entwickelt, welches (auch mehrere Dateien) mit Hilfe der zlib packt und an eine Echse dranhängt, so dass sich das ganze von selbst auch wieder entpacken lässt.
Was noch fehlt:
Ich habe 2 Verschiedene Versionen erstellt. Die erste (SFXer) werden die zu packenden Dateien per Parameter übergeben (as ganze soll später über Senden An laufen) Die zweite (ODSFXer) hat einen OpenDialog, in dem die Dateien ausgewählt werden können. Ich würde mich freuen, wenn einige das Tool mal testen könnten. Die angehängten Dateien wurden übrigends auch mit diesem Tool erstellt. EDIT: Nur die Packer.exe ist wichtig. SFX.exe ist das Modul, wo die Dateien rangehängt werden. Und das erwartet, das mindestens eine Datei rangehängt ist. Daher sollte es nicht so ausgeführt werden. |
Re: SFXer - Ein SFX-zlib-Packer
Wie bedient man das? Ich habe ein sfx-Archiov erstellt und ahtte dann im Verzeichnis eine SFX.exe (48 KB) und eine ODPacker.exe (408 KB).
Nach dem Ausführen der SFX.exe bekam ich folgende Fehler: Zitat:
Zitat:
Kannst du mir mal das Prinzip erläutern? Ich habe bei meinem SFX-Tools einen Dateiheader mit den den im Archiv enbthaltenen Dateien und deren Größen. Du müsstest dann ja beim Erstellen des SFX-Archives wissen, wie großt die dateien genau sind, wenn sie gepackt sind oder? |
Re: SFXer - Ein SFX-zlib-Packer
:oops: Hab vergessen zu sagen, dass nur die Packer.exe wichtig ist. SFX.exe ist das Modul, wo die Dateien rangehängt werden. Und das erwartet, das mindestens eine Datei rangehängt ist.
In dem nachher erstellten inputDialog kannst du dann den Dateinamen des SFX archieves angeben. Beim aneinanderhängen der Dateien muss ich zugeben, dass ich etwas geschummelt habe. Dafür habe ich folgenden Code aus dem EDH benutzt:
Delphi-Quellcode:
Und zum splitten
procedure Join(Main_FileName, Hidden_Filename : string);
var MainFile : TFileStream; HiddenFile : TFileStream; SizeOfFile : Cardinal; SearchWord : string[10]; begin MainFile := TFileStream.Create(Main_FileName, fmOpenReadWrite or fmShareDenyWrite); try SizeOfFile := MainFile.Size; HiddenFile := TFileStream.Create(Hidden_Filename, fmOpenRead or fmShareDenyNone); try MainFile.Seek(0, soFromEnd); MainFile.CopyFrom(HiddenFile, 0); MainFile.Seek(0, soFromEnd); finally HiddenFile.Free; end; SearchWord := IntToStr(SizeOfFile) + #0; MainFile.Seek(0, soFromEnd); MainFile.WriteBuffer(SearchWord, SizeOf(SearchWord)); finally MainFile.Free; end; end;
Delphi-Quellcode:
Das einzige was man im SFX Modul sieht ist Der Pfadauswahldialog. Diesen habe ich mittels der WinAPI Funktion SHBrowseForFolder aufgerufen.
procedure Split(Main_FileName, NewFromMain_Filename : string);
var MainFile : TFileStream; SplitFile : TFileStream; HelpStr : string[10]; GetSize : integer; begin MainFile := TFileStream.create(Main_FileName, fmOpenReadWrite or fmShareDenyWrite); try SplitFile := TFileStream.Create(NewFromMain_Filename, fmCreate or fmShareDenyNone); try MainFile.Position := MainFile.Size - 11; MainFile.Read(HelpStr, 10); GetSize := StrToInt(HelpStr); MainFile.Position := GetSize; SplitFile.CopyFrom(MainFile, MainFile.Size-GetSize); SplitFile.Size := SplitFile.Size - 11; MainFile.Size := GetSize; finally SplitFile.Free; end; finally MainFile.Free; end; end; Ansonsten habe ich einfach die zlib eingebunden, die zusammengepackten Dateien (Ich habe noch ne Datei, wo alle Dateinamen drinstehen mit angehängt) damit komprimiert und das ganze dann an das SFX-Modul angehängt. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz