Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

InstallShield 2011 Basic MSI install fails for 64 bit system


4 replies to this topic

garyflet

garyflet
  • Full Members
  • 36 posts

Posted 22 January 2015 - 18:22

My InstallShield Basic MSI project runs fine on 32-bit Windows 7 but not on 64-bit Windows 7.  It stops installing at a certain point, with a message that the InstallShield Wizard was interrupted and the program not installed.  I ran with a verbose log which included the following lines: 

****

MSI (s) (54:FC) [11:20:48:617]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI5046.tmp, Entrypoint: ProcessDriverPackages

DIFXAPP: ENTER: ProcessDriverPackages()

DIFXAPP: ERROR - You need to use the 64-bit version of DIFXAPP.DLL to install drivers on this machine.

CustomAction MsiProcessDrivers returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)

Action ended 11:20:48: MsiProcessDrivers. Return value 3.

****

After doing a search on my computer, I didn’t find a DIFXAPP.DLL but I did find a DIFXAPI.DLL, both 32 and 64 bit versions, the former in C:\Windows\system32 and C:\Windows\SysWOW64.  I guess that’s the dll the log is referring to.  But how do I get my setup.exe to use the 64-bit dll?  I changed the Template Summary from “Intel;1033” to “x64;1033” but got the same result when attempting to install.  Any ideas on how to proceed from here?  Thanks for any replies.



deramor

deramor
  • Full Members
  • 187 posts

Posted 22 January 2015 - 18:59

From your log, it looks like you are attempting to install a device driver.  Calls to DIFXAPP will install a device driver.  The bitness of the device driver must match the bitness of the operating system.  You will not get a build error when this occurs but rather runtime errors.  If you want to install on a 64-bit OS, you must author the device driver settings to target an x64 operating system.

 

This setting is in the component with the device driver package (inf).

 

Toggling this setting will cause your installer to stop working on 32-bit Win7 or any other 32-bit OS for that matter.

You will need to author 2 installs.  One that targets 32-bit OSs, includes a 32-bit driver, and contains an Intel Template Summary.

A second installer that targets 64-bit OSs, includes a 64-bit driver, and contains x64 Template Summary.



garyflet

garyflet
  • Full Members
  • 36 posts

Posted 22 January 2015 - 19:33

Thanks for your swift and informative reply. The install does have the option to install a 32-bit driver, however I am running the install without that option.  However, perhaps the install balks at even the possibility of installing the 32-bit driver on a 64-bit system.  As you say, I apparently have to create two different installs for the 32-bit and 64-bit cases.  Although I am told that some installs are able to detect the bitness of the system they are on and respond appropriately.  I wonder why that's impossible for InstallShield installs?  At any rate, thanks again for your quick response.



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 23 January 2015 - 13:07

One msi package can only target either 32 or 64 bits. the trick is to create two msis and wrap them in one (non-msi) package that will detect the OS's bitness and launch the appropriate msi. In InstallShield you could use a Universal or a InstallScript project to wrap the msis.



deramor

deramor
  • Full Members
  • 187 posts

Posted 24 January 2015 - 00:50

The reason for the error you are getting is the bitness of the Device Driver does not match the bitness of the Kernel.  32-bit dlls and sys files can only be installed on 32-bit Windows.  64-bit, only 64-bit Windows.

 

As far as wrapping 2 MSIs, you can write a simple console app that lauches one install over another.  You can get as creative here as you want but the quick and dirty is just a console app. (or even batch file)