windowsinstallationdriverinstallshieldinstallshield-2013

Installshield errors when trying to install upgrade with driver


(using installshield 2013)

I have a installer that installs software, and now I am adding a brand new shinny device driver to the installer. The caveat is it(driver) should only install on 32bit windows 7 machines, we also want to take advantage of plug and play, so it should be ready to go after installing. However with that in mind, it is perfectly fine for the software to be installed on a Win7-64 bit machine. This is not a scenario "officially" supported outside the company, but necessary for internal developers.

So what I've done is added my component and marked it as a 32bit driver. If I try to install on my laptop (win7 64bit), I get ERROR - You need to use the 64-bit version of DIFXAPP.DLL to install drivers on this machine. Drat! It was suggested by a colleague that I use the following conditions VersionNT >= 601 AND NOT VersionNT64 on the MSIProcessDriver, these same conditions do not seem to work on the component itself, I was told it's too late in the process for those conditions to work. I also had to add those same conditions to MSICleanUpOnSuccess to get upgrades to work on my laptop. I don't know if this is the correct solution, but it works for me and I am able to install & upgrade. And that is where my trouble begins, on the actual hardware platform itself, I was able install once, but I can't upgrade or install any different version of the installer, the app itself install fine, but the installer always returns "interrupted". I get the following

DIFXAPP: ERROR 0x65A creating MsiUninstallDrivers custom action for Win7Drivers
DIFXAPP: RETURN: ProcessDriverPackages() 1626 (0x65A)
CustomAction MsiProcessDrivers returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 15:04:33: MsiProcessDrivers. Return value 3.
MSI (s) (B8:58) [15:04:33:419]: Machine policy value 'DisableRollback' is 0
MSI (s) (B8:58) [15:04:33:419]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2 
MSI (s) (B8:58) [15:04:33:419]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2 
MSI (s) (B8:58) [15:04:33:419]: Calling SRSetRestorePoint API. dwRestorePtType: 13, dwEventType: 103, llSequenceNumber: 29, szDescription: "".
MSI (s) (B8:58) [15:04:33:419]: The call to SRSetRestorePoint API succeeded. Returned status: 0.
MSI (s) (B8:58) [15:04:33:419]: Unlocking Server
Action ended 15:04:33: INSTALL. Return value 3. 

From what I gathered on the net this is possibly due to a bad install putting the registry in a bad state for this driver. I've seen others have ran into this issue, without any resolution posted. I am also at a bit of a loss on what to do, or how to get my test machine back into a working state. I'm hoping you guys can help, or share strategy for a similar scenario that you've found to work.

p.s. I also tried making this a separate feature, and marking required as NO, thinking if it fails (like on my laptop) this should not fail the whole installer. I am not sure what our expected behavior would be on our hardware platform if the driver where to fail to install, I suppose fail?


Solution

  • I was able to resolve my issues, by using Revo un-installer to nuke some troublesome registry settings, so far so good, and I didn't have to re-image my machine in the process.