木曜日, 7月 14, 2016

installer - Programmatically extract contents of InstallShield setup.exe - Stack Overflow

I am trying to extract the file-contents of an InstallShield setup.exe-file. (My plan is to use it in a back-office tool, so this must be done programmatically without any user interactions.)
Is this possible?
(Initial research seems to indicate it will fail.)
If it is possible to have a generic solution, for all recent versions of InstallShield that would be best.
Otherwise, if a solution only works for some versions of InstallShield it would be a step on the way. (It would probably be possible to deduce which InstallShield version a setup.exe is by looking at version resources of the exe-file.
found that some InstallShield versions support /b or /extract_all. However there is no good way of knowing, just launching the exe and hoping it will extract and terminate orderly rather then displaying GUI dialogs doesn't seem like a good solution. So I am therefore looking for a more stable way.
Ideas welcome.
shareedit
   
Is this for any setup.exe generated by any version of InstallShield regardless of project type or for a specific setup.exe? – Christopher Painter Dec 30 '11 at 16:30
   
Thanks @Christopher. Attempted to enhance question. – leiflundgren Dec 30 '11 at 17:03 
There's no supported way to do this, but won't you have to examine the files related to each installer to figure out how to actually install them after extracting them? Assuming you can spend the time to figure out which command-line applies, here are some candidate parameters that normally allow you to extract an installation.
MSI Based (may not result in a usable image for an InstallScript MSI installation):
  • setup.exe /a /s /v"/qn TARGETDIR=\"choose-a-location\""
    or, to also extract prerequisites (for versions where it works),
  • setup.exe /a"choose-another-location" /s /v"/qn TARGETDIR=\"choose-a-location\""
InstallScript based:
  • setup.exe /s /extract_all
Suite based (may not be obvious how to install the resulting files):
  • setup.exe /silent /stage_only ISRootStagePath="choose-a-location"
shareedit
   
FWIW Michael works for InstallShield. Also I'm thinking you might be able to infer what kind of setup.exe it is by looking for embedded resources or examining DLL dependencies. I see an MSI setup.exe had a dependency on MSI.dll. I'm guessing an InstallScript EXE would not. – Christopher Painter Jan 3 '12 at 15:58
1 
See a similar answer here with a link to a pdf file with common setup.exe command lines. – Stein Åsmul Aug 27 '14 at 6:28 
Usage: isxunpack.exe yourinstallshield.exe
It will extract in the same folder.
shareedit
installer - Programmatically extract contents of InstallShield setup.exe - Stack Overflow