Der Aufbau ist ein wenig anders.
Die Exe ist eine Ausführbare-7z Datei. So aber "[0]" ist nochmal eine Datei. Die ist vom Format Cab.
Wenn du die Exe mal mit WinRar öffnest steht oben das Format. Villeicht hilft dir das weiter.
Es ist ein SFX Cab Archive. Die Exe ist mit 7z anscheinend gepacked, und diese enthält eine Datei namens "[0]". Und diese "[0]" ist wie schon erwähnt eine CAB-Datei;
EDIT: Jcl, erkennt die Datei falsch, bzw. sie erkennt das oberste Format. Und nicht das eigentlich "gewollte" Format.
Edit2: Ich habe es mal so versucht, jedoch entpacket er mir nicht die Datei, vermutlich weil die Dateinamen einen "\" am Anfang haben.
Diese SFX Cab Format stammt irgendwie von 7z ab, bzw. Jcl arbeitet damit.
Delphi-Quellcode:
procedure Extract7ZipFolder(ZipFilePath,TargetFolder:
String);
var
archive: TJclCabDecompressArchive;
item: TJclCompressionItem;
s:
String;
i: Integer;
begin
archive := TJclCabDecompressArchive.Create(ZipFilePath);
try
if not (archive
is TJclSevenZipDecompressArchive)
then raise Exception.Create('
This format is not handled by 7z.dll');
archive.ListFiles;
s := Format('
test.zip Item Count: %d'#13#10#13#10, [archive.ItemCount]);
for i := 0
to archive.ItemCount - 1
do
begin
item := archive.Items[i];
case item.Kind
of
ikFile : s := s + IntToStr(i+1) + '
: ' + item.PackedName + #13#10;
ikDirectory : s := s + IntToStr(i+1) + '
: ' + item.FileName + '
\'#13#10;
end;
end;
if archive.ItemCount > 0
then
begin
archive.ExtractAll(TargetFolder);
end;
finally
Archive.Free;
end;
end;
Gruß NickelM