Amazon Banner

Thursday, October 24, 2013

Deploying Installshield package via SCCM fails, Return Code -3

I recently ran into an issue installing the driver package for some new Interlink "Epad" signature pads we got in at work.  The instructions from the readme file for unattended installs matched the typical method for InstallShield packages:
  1. Run the installer with additional parameters to record the install and create a response file.  Example: "setup.exe /r /f1c:\temp\setup.iss"
  2. Copy the setup.exe and setup.iss files to the computer where the software needs to be installed.  
  3. On the target computer, run "setup.exe /s /f1setup.iss /v/qn"
In theory, this should silently run the installer, using the same responses provided when creating the response file in step 1.  In my case, this worked perfectly.  As long as I was manually running the command in step3 from an administrative command prompt.  When I tried deploying this as an application from system center, using the same command line and the same response file, the installation failed with a return code of "-3". 

Since the command works fine when I run it manually, I decided it had to be a problem of the different context in which configmgr was running the installer.  Configmgr was running the package as system, not as a user.  

When the InstallShield package executes, the first thing it does is extract files into a temporary location.  If I run it manually, those files are placed in c:\users\\appdata\local\temp\ - but it can't use the same path when running in the system context.  I was able to work around this by adding a "/b" parameter, in which is the directory where I want the setup files extracted to.  The final command line used for the application in SCCM looked like this:
"setup.exe" /s /f1setup.iss /bc:\swsetup\ /v/qn
Using that syntax, the application installed successfully from ConfigMgr.  Hopefully this information will be useful to others who might run into the same error.