Why I loath InstallShield.

InstallShield logoIt’s because I’ve had many installs fail when they have been InstallShield-based installations.
What would happen is this:

  1. Start setup.exe in silent mode.
  2. Application would install.
  3. Setup.exe finishes and exits.
  4. I start the next setup.exe.
  5. It fails “an InstallShield installation program is already running”.

What the????
At point 3, setup.exe HAS finished.  But it has left a cleanup program running, such as _isdel.exe.  The next setup.exe (at point 4), sees this and stops with an error message.

The workaround?
Write some code like this, to wait until isdel.exe exits.
while process "_isdel.exe” exists
sleep 5 seconds

How to open an InstallShield Data.cab file – version 12 or later.

Asd commented on my original “How to open …” post:

is that working with InstallShield v12 files ?

A quick Google search, shows up NO.  Flexera changed the format for InstallShield 12 (and later).

Now, I’m not going to check that that’s true myself, as I loath the InstallShield for it’s dodgy installation practices.  Practices such as spawning processes such as _isdel.exe

From those Google search results, this is the option I would pick:

Universal Extractor

uniextract_contextUniversal Extractor is a program designed to decompress and extract files from any type of archive or installer, such as ZIP or RAR files, self-extracting EXE files, application installers, etc.  The full list of supported formats can be found in the table below.  It’s able to support so many varied file formats by utilizing the many backend utilities listed in the credits at the bottom of the page.

Link to Universal Extractor

How to open an InstallShield Data .cab file.

InstallShield logo Some program installations use InstallShield, and the program files are compressed into Data .cab files.  But InstallShield decided to be cute, and use their  own propriety format with older versions of the Data .cab file.  They could have used a standard compression algorithm like .ZIP,  but did not.

My guess is that they didn’t want people fiddling with the raw files.

That’s a bummer for those of us who need to get at the files, such as Application Packagers.  I discussed this a little in the InstallShield Temp Directory Trick.

So it’s a good thing that CDMediaWorld has utilities, such as i6Comp to extract the files.  Just download it (I picked i6comp02.zip) and then run i6comp.  This is what i6Comp looks like when listing files from the data.cab file:

C:\temp\InstallShield>i6comp l -v -r data1.cab
InstallShield 6.x Cabinet Util
Version 0.2 -] fOSSiL & Morlac - 2000 [-

Date       Time   OrigSize  Attr  CompSize   Ind FileName
========== ===== ========== ==== ========== ==== =================
12-16-1999 10:24      28529 ____       5841    0 corecomp.ini
09-05-2001 04:18      77824 A___      29916    1 ctor.dll
09-05-2001 04:13      32768 A___       4483    2 objectps.dll
08-22-2003 17:27     278190 A___     264385  180 PowerDVD.CHM
09-05-2003 16:16      65536 A___      30014  342 AudioFilter\clds.dll
09-05-2003 16:16      45056 A___       8203  343 AudioFilter\clwo.dll
09-05-2003 16:16     245760 A___      81241  344 AudioFilter\CLADR.ax
09-05-2003 16:16     126976 A___      43046  347 AudioFilter\CLAuTS.ax
09-05-2003 16:25      73728 A___      27800  348 AudioFilter\CLAudioCD.ax
09-05-2003 16:25     503808 A___     239856  349 NavFilter\CLNAVX.ax
09-12-2003 18:38     520192 A___     205346  350 VideoFilter\CLVSD.ax
09-05-2003 16:16      45568 A___      23075  351 VideoFilter\CLLine21.ax
----------      ---------- -------------------
49878589        19880422  311 file(s) total


The list output is more interesting than the extract output. which is why I’ve showed list.  Other options are:

Continue reading

The InstallShield “Temp” Directory trick.

But you can use it with other installers as well.

When you click on an Installshield created setup.exe, it will extract it’s contents to your TEMP directory.  These contents include will include the program files (*.exe and *.dll).  If they contain .CAB files like DATA1.CAB, you need to uncompress them to get to the actual content.  There are utilities to do that here.

There are three reasons I can think of, where you might want to use this trick:

  • You want to repackage the contents with another application packaging tool (ie. Wise)
  • You want to examine the individual files
  • You want to modify the setup command parameters.

Bookmark and Share

Installshield uninstall commands

Originally pinched from acresso.com:

The following command line switches can be used with the uninstaller (IsUnist.exe or IsUn16.exe for InstallShield 5.x Professional, and Uninst.exe or Uninst16.exe for InstallShield3 and InstallShield Express).

Note: When passing a path and file name in a command line parameter, as you do with -f, -c, and -d, you must enclose a name containing one or more spaces in double quotation marks. If you don’t, the command line will misinterpret the command.

Suppresses the message box that asks the user to confirm that uninstallation should proceed. The feedback dialog box is still displayed, as is the shared file dialog box (which is displayed when the reference count of a shared .dll is decremented to zero).

Deletes all files, including those core components that normally are not removed. (All user interface elements are displayed.)

-f<log file name>
Specifies the location and name of the uninstallation log file. The syntax is as follows:
-f”C:\Program Files\Company Name\Deisl1.isu”.

-c<DLL file name>
Specifies the location and name of the external DLL that is to be used at the time of uninstallation. The syntax is as follows:
-c”C:\Program Files\Company Name\Custom.dll”.

InstallShield3 users can download the file UnDLL.exe (1,556 KB), which contains the InstallShield white paper “Calling a Custom DLL Function from unInstallShield” (Uninst.doc) and files for creating a complete InstallShield3 sample setup. Download UnDLL.exe to an empty folder. Execute it with the -d command line parameter in order to preserve the folder structure when you extract the files.

Note: This parameter cannot be easily used with InstallShield Express. This switch is already used by Express’s uninstaller and advanced modifications would have to be made to call another external DLL.

When running in silent mode if unInstallShield encounters a shared file for which it would normally display the dialog box asking the user whether to remove the shared file, it will automatically reduce the reference count to zero and not remove the file. Therefore, running unInstallShield in silent mode is functionally equivalent to an uninstallation in which the user selects the “No to all” option when this dialog box first appears.

Identifies a single file that is to be deleted. The display of user interface elements is the same as when the -a switch is used. The syntax is as follows:

(reference: kb.acresso.com/selfservice/viewContent.do?externalID=Q100021)

All about InstallShield command line switches

InstallShield Command Line Switches

Special Installation Modes
/a : Administrative installation
/j : Advertise mode
/x : Uninstall mode
/uninst : Uninstall product (Standard projects only)

Silent Installations
/p : Specify password
/r : Record mode (Standard projects only)
/s : Silent mode
/f1 : Specify alternative response file name (Standard projects only)
/f2 : Specify alternative log file name (Standard projects only)

SMS Data
/m : Generate MIF file (Standard projects only)
/m1 : Specify serial number in MIF file (Standard projects only)
/m2 : Specify locale string in MIF file (Standard projects only)

Download and Cache Locations
/ua : Specify URL for InstMsiA.exe
/uw : Specify URL for InstMsiW.exe
/us : Specify URL to ISScript.msi
/um : Specify URL to .msi package
/b : Cache installation locally
Passing Data to the Installation
/v : pass arguments to Msiexec
/z : Pass arguments to CMDLINE variable

/d : Debug InstallScript (Standard projects only)
/verbose : Generate verbose InstallScript engine log file (Standard projects only)

/f : Specify alternative compiled script (Standard projects only)
/L : Setup language
/w : Wait
/SMS : Wait (Standard projects only)

Information gathered from:

Bookmark and Share