I've got a 32 bit package that I'm trying to install on a 64bit machine (as a 32bit package). It contains some self-registering 32bit DLLs. My understanding is that this should work, since everything should be registered as 32bit. But I keep getting the error "You need to use the 64-bit version of DIFXAPP.DLL to install drivers on this machine." How do I set the package up so that this works properly?
This appears to be a driver error. Unfortunately, 32-bit drivers cannot be installed on 64-bit systems. The solution would be to make two separate packages for 32-bit and on the 64-bit one, include the 64-bit version of your driver.
I see. I have a 64bit version of that driver. Would a 32/64 mixed package be able to make the distinction and deploy the correct driver with the correct DIFXAPP call? Or is there another way to deploy drivers in this scenario? I really don't want to maintain multiple installs.
Unfortunately, drivers can be installed only in 32-bit or 64-bit packages, not in mixed packages. This improvement has been developed and will be available in the 8.1 release which will be very soon.
Thanks! That's good news! By "8.1 release which will be very soon", are we looking at weeks or months? Just curious because I have to get a release out soon, but I can hold out for a couple of weeks if I know this is coming in that kind of time frame.
Just tried out new 8.1.1 release today ... unfortunately the "DIFX 64-bit" error still occurs.
Is there anything else to consider to avoid this problem when installing a mixed package under 64bit windows?
The correct order for this to work would be to set the package as mixed and after that run the mixed package wizard. If this is not the case can you please give us more details and send us the .AIP (project) and a verbose log of the installation to support at advancedinstaller dot com so we can investigate them?
Our Environment: AI 8.1.1, Windows 7 Ultimate 64-bit
Created a test installation with only driver setup (32/64 driver files) as mixed package (see attachment).
BTW, installation of this project works flawlessly under Windows7 32-bit.
Here is the error part of the log:
MSI (s) (F4:8C) [15:47:26:416]: Doing action: MsiProcessDrivers
Aktion 15:47:26: MsiProcessDrivers.
Aktion gestartet um 15:47:26: MsiProcessDrivers.
MSI (s) (F4:8C) [15:47:26:479]: Note: 1: 2262 2: CustomAction 3: -2147287038
MSI (s) (F4:8C) [15:47:26:506]: Transforming table CustomAction.
MSI (s) (F4:8C) [15:47:26:527]: Note: 1: 2262 2: Binary 3: -2147287038
MSI (s) (F4:8C) [15:47:26:551]: Transforming table Binary.
MSI (s) (F4:98) [15:47:26:594]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI518A.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)
Aktion beendet um 15:47:26: MsiProcessDrivers. Rückgabewert 3.
MSI (s) (F4:8C) [15:47:26:842]: Machine policy value 'DisableRollback' is 0
MSI (s) (F4:8C) [15:47:26:870]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2
MSI (s) (F4:8C) [15:47:26:895]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2
MSI (s) (F4:8C) [15:47:26:914]: Calling SRSetRestorePoint API. dwRestorePtType: 13, dwEventType: 103, llSequenceNumber: 41, szDescription: "".
MSI (s) (F4:8C) [15:47:26:950]: The call to SRSetRestorePoint API succeeded. Returned status: 0.
MSI (s) (F4:8C) [15:47:26:969]: Unlocking Server
MSI (s) (F4:8C) [15:47:27:096]: Note: 1: 2262 2: InstallExecuteSequence 3: -2147287038
MSI (s) (F4:8C) [15:47:27:126]: Transforming table InstallExecuteSequence.
I have looked into your .AIP and it seems you only have one .INF file for both drivers. Advanced Installer only supports separate .INF files added for each driver in the Drivers Page.
The solution would be to implement a compatible driver architecture or install the drivers using your own custom behavior.
splitting the .INF file did the trick, thank you ... though we have a second (similarly structured) driver working fine with single file, so it seems to depend on the specific circumstances.
Can you please follow our "How do I install drivers in a mixed package?" article steps and let us know if this helped? If not, please send us the .AIP (project file) and a verbose log of the installation to support at advancedinstaller dot com so we can investigate them.