Programmatically extract contents of InstallShield setup.exe
Asked Answered
W

5

32

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.

I 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.

Waterfall answered 30/12, 2011 at 15:50 Comment(2)
Is this for any setup.exe generated by any version of InstallShield regardless of project type or for a specific setup.exe?Blairblaire
Thanks @Christopher. Attempted to enhance question.Waterfall
C
41

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"
Coincidental answered 1/1, 2012 at 16:41 Comment(3)
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.Blairblaire
See a similar answer here with a link to a pdf file with common setup.exe command lines.Fleshy
Check my answer here : superuser.com/a/180980/47628 for tools that may work with some older non-MSI based IS setups.Haggadah
R
13

http://www.compdigitec.com/labs/files/isxunpack.exe

Usage: isxunpack.exe yourinstallshield.exe

It will extract in the same folder.

Renfred answered 30/12, 2011 at 17:17 Comment(3)
That was the only program that worked for me in unpacking an ISv12 installer. This program reported a problem, but it extracted everything anyways.Knotted
Great tool, thanks for sharing - works fine for my current installer reversing whereas the hints mentioned by @MichaelUrman unfortunately did not.Tacho
This tool is flagged as virus after downloadingCathleencathlene
J
5

On Linux there is unshield, which worked well for me (even if the GUI includes custom deterrents like license key prompts). It is included in the repositories of all major distributions (arch, suse, debian- and fedora-based) and its source is available at https://github.com/twogood/unshield

Jeniferjeniffer answered 21/10, 2016 at 15:9 Comment(2)
Indeed, you can also use libunshield without any exe.Linsang
Doesn't work with a recent InstallShield .exe that has Lenovo BIOS updates. download.lenovo.com/consumer/mobiles/glcn46ww.exeVasty
I
3

Start with:

setup.exe /?

And you should see a dialog popup with some options displayed.

Interpellation answered 24/5, 2013 at 21:17 Comment(0)
M
0

The free and open-source program called cabextract will list and extract the contents of not just .cab-files, but Macrovision's archives too:

% cabextract /tmp/QLWREL.EXE
Extracting cabinet: /tmp/QLWREL.EXE
  extracting ikernel.dll
  extracting IsProBENT.tlb
  ....
  extracting IScript.dll
  extracting iKernel.rgs

All done, no errors.
Mariquilla answered 24/11, 2013 at 7:39 Comment(2)
cabextract will unpack anything that contains Microsoft cabinet files, but typically InstallShield does not, despite having files called "data1.cab". Instead, to unpack InstallShield "cab" files, use the unshield program that's part of the SynCE project.Symbology
SynCE seems to be abandoned these days, unshield is now hosted at githubSymbology

© 2022 - 2024 — McMap. All rights reserved.