activescott / lessmsi

A tool to view and extract the contents of an Windows Installer (.msi) file.
https://lessmsi.activescott.com
MIT License
1.29k stars 150 forks source link

Cannot extract cab from InstallShield msi's (Extract failed: Failed to close cab extract object, errror: 2) #6

Open activescott opened 11 years ago

activescott commented 11 years ago

from https://code.google.com/p/lessmsi/issues/detail?id=27

Reported by alibhai.ashiq, Sep 11, 2012 I have an MSI-based InstallShield 10 MSI that I want to extract the files from. I can view the files in the LessMSI application, but when I attempt to extract them, I get this error:

Error: System.Runtime.InteropServices.COMException (0x00000002): Failed to close cab extract object, error: 2 at Microsoft.Tools.WindowsInstallerXml.Cab.WixExtractCab.Close() at LessMsi.Msi.Wixtracts.ExplodeAllMediaCabs(Database msidb, DirectoryInfo baseOutputPath) at LessMsi.Msi.Wixtracts.ExtractFiles(FileInfo msi, DirectoryInfo outputDir, MsiFile[] filesToExtract, AsyncCallback progressCallback) at LessMsi.Program.DoExtraction(String msiFileName, String outDirName) at LessMsi.Program.Main(String[] argStrings)

I cannot provide a file (employer's IP), but I am very keen to resolve this. Jan 27, 2013 Delete comment Project Member #1 activescott Installshield uses a proprietary cab format. No easy way to deal with this. There is an open source library (mentioned in the libmspack source code AFAIR) that maybe could help but will require quite a bit of effort. Labels: -Priority-Medium Priority-Low Jan 27, 2013 Delete comment Project Member #2 activescott Could at least improve the error message. I know I can detect these cabs now using libmspack. Summary: Cannot extract cab from InstallShield msi's (Extract failed: Failed to close cab extract object, errror: 2) (was: Extract failed: Failed to close cab extract object, errror: 2) Aug 1, 2013 Delete comment Project Member #3 activescott Can someone attach an installshield msi here and I'll try to at least improve the error message by detecting installshield's cabs and writing out an informative error. Status: Accepted

activescott commented 9 years ago

The least it could do is detect installshield MSIs and display an actionable error message to the user. As a follow-up issue we could investigate implementing installshield extraction support.

activescott commented 5 years ago

Maybe this lib can actually allow extracting files from cabs in installshield installers: https://github.com/twogood/unshield