PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cabinet Files entpacken


Felix Kaiser
12.07.2002, 02:04
Mir mags aus eigener Kraft nicht zuverlässig gelingen. Ich habe Cabinet Files, erstellt mit Microsoft Cabinet Maker, aktuelles Build unter Verwendung der höchsten Kompressionsstufe. Zum Entpacken wollte ich eigentlich die in der Win32 SDK beschriebene Funktion SetupIterateCabinet benutzen. Dies ging auch recht einfach, arbeitet nur leider nicht zuverlässig. Auf einem doch bedenklichen Anteil Rechner kann diese Funktion aus der SETUPAPI.DLL die Dateien nicht entpacken und gibt einen Fehlercode 13 (?) zurück. Tritt z.B. auf einem der Win95 Rechner hier auf. Seltsamerweise hat das DOS Komandozeilen Utility 'extract' keinerlei Probleme damit. Ich meine das alte DOS Programm was bei Win95 beliegt und auch vom Setup benutzt wird teilweise.

Nun war ich auf der Suche nach Alternativlösungen, habe mir dazu die Microsoft Cabinet SDK (http://msdn.microsoft.com/library/en-us/dnsamples/cab-sdk.exe) runtergeladen, welche eine DLL 'cabinet.dll' enthält, mit FCI und FDI Funktion (Kompression & Dekompression). Nur kann ich mit den Samples nicht viel anfangen, da ich diese weder unterm C++ Builder von Borland zum Laufen bekomme, noch eine brauchbare Delphi Übersetzung in Aussicht ist. Durch den doch recht umständlichen Aufbau der Funktionen aus der DLL, bekomme ich nur unbrauchbare Resultate und Exceptions. :mauer:

Wer kann mir helfen eine stets zuverlässige Methode zu finden zum Entpacken von Cabinet Files? Wäre doch echt wichtig und mir mags nicht glücken :(


Patrik Graf
12.07.2002, 03:18
Hab mich nochmal umgeschaut und hab dir hier ne kleine Delphi-Kompo gesaugt...

Schau dir mal an wo der Unterschied zwischen seiner Methode und deiner ist... :D

xOOn
12.07.2002, 08:44
also hast du mal ueberprueft ob das prob nicht mit der installierten msi zusammenhaengt weil SetupIterateCabinet ist glaube ich eine api daraus

errorcode 13 =
13 The data is invalid. ERROR_INVALID_DATA
oder

Felix Kaiser
12.07.2002, 14:58
Ja, setupapi ist ein Bestandteil von der MS Installer API. Aber ich kann nicht einfach die von meinem OS mitliefern, weil die z.B. nur auf NT Systemen funktioniert. Von daher kann ich SetupIterateCabinet knicken.

Ich schau mir dann mal die Delphi Kompo an.

xOOn
12.07.2002, 15:02
ich wollte damit nur sagen, dass ich vermute dass es mit aeltern msi versionen probs gibt

Felix Kaiser
12.07.2002, 15:39
Sag ich doch ;)

Die Kompo funzt perfekt, thx.