views:

1462

answers:

4

Hello,

I'm using InstallShield 2010 Premiere.

I have a basic MSI project that install an application and a 32 bit driver using the Driver wizard and DifxApp.

I'm trying to add a 64 bit driver that will be installed if the system is 64 bit. However, when adding this 64 bit driver, the installation (On a 32 bit system) fails, and the only thing I found in the MSI log was:

MSIProcessDrivers return value 3.

I didn't even get to try it on a 64 bit system.

Is there a way of accomplishing this using a single installer file?

EDIT: I've noticed that the problem is with the DifxApp.dll. The installshield holds only 1 dll according to the LAST architecture selected for a driver: If I have 2 drivers and I set one of them to target x64, the DifxApp.dll would be the one of the x64, and the other way around when selecting x32.

I can manually insert both x64 & x32 DifxApp.dll, but I can't figure out a way to make the custom actions created by Installshield to conditionally take the x32 or the x64 dll.

Any ideas?

A: 

It seems that your installer is missing a component condition. You should have both x32 & x64 drivers set within different components, and conditionally install each driver by testing the VersionNT64 property.

E.g.: the x64 component will have "VersionNT64" as condition while the x32 component will have "Not VersionNT64".

KMoraz
That's what I've done originally. However, Installshield only saves a single copy of DifxApp.dll (x32 OR x64). I need it to use different dll according to my conditions.
Eldad
Is your installer uncompressed? if so you need to set the source location property -http://helpnet.flexerasoftware.com/robo/projects/installshield16helplib/IHelpCompSrclocation.htm
KMoraz
I already set 2 different source location. But the DifxApp.dll is not a file I put there, but InstallShield Wizard.
Eldad
A: 

Well, as I failed to find a proper solution using the InstallShield wizard, I came back to my own custom actions which called the DPInst.exe instead. Each Custom action is triggered conditionally depending on the type of the operating system. 64bit custom action will call the DPInst.exe 64bit version and the same goes for 32bit.

Eldad
A: 

You should note that in the general case, a single installer for both 32 bit and 64 bit is not possible. Check this out for more information.

On Freund
A: 

DIFx configuration for x86 and x64 in one installer is not possible. Must be two packages and within these packages modify the references of the difxapp(a).dll depending on OS favor.

So my approach is:

  • 1 Installation package
  • 2 release flags x86 and x64 containing references to drivers (both e.g. configured to x86)
  • Build x86 package with the related release flag
  • mofify by automation the difx references to x64
  • Build x64 package with the related release flag

Also both packages must have the related launchconditions not to run them on the other OS flavor.

Tobias