views:

44

answers:

1

I am working on writing a WiX installer that needs to install a driver as a prerequisite. There is an executable that needs to be run that installs the driver on the PC. I don't want to install this executable on the host machine. There is both a x64 and x86 version and, depending on the platform, one or the other needs to be installed.

The executable is currently run using the command line: C:\Comp\code\install\canned\tabload\x86>tabload install "*tab1394" "C:/Comp/code/install/canned/tab1394/x86"

The last argument is the location of the .cat, .sys and .inf files for the driver

The current code I have is:

<!-- Install correct device driver -->
<?if $(var.Platform) = x64?>
  <Property Id="Win64">1</Property>
<?else?>
  <Property Id="Win64">0</Property>
<?endif?>

<Binary Id="tabload64EXE" SourceFile="C:/Tableau/code/install/canned/tabload/x64/tabload.exe"  />
<Binary Id="tabload32EXE" SourceFile="C:/Tableau/code/install/canned/tabload/x86/tabload.exe" />
<CustomAction Id="LaunchFile64" 
              BinaryKey="tabload64EXE" 
              ExeCommand='tabload "*tab1394" "C:/comp/code/install/canned/tab1394/x64 "' 
              Return="asyncNoWait" />
<CustomAction Id="LaunchFile32" 
              BinaryKey="tabload32EXE" 
              ExeCommand='tabload install "*tab1394" "C:/comp/code/install/canned/tab1394/x86 "' 
              Return="asyncNoWait" />

<InstallExecuteSequence>
  <Custom Action="LaunchFile64" After="InstallFinalize">Win64</Custom>
  <Custom Action="LaunchFile32" After="InstallFinalize">NOT Win64</Custom>
</InstallExecuteSequence>

I've looked at the tables in Orca. The Win64 property seems to be getting set correctly. The custom actions and binaries appear and the Target for the custom action is the indicated command line. The custom action is type 196 and I can't find any documentation for that online. When I build and install the installation package, the program is installed but the driver component is not installed. Please advise on how to remedy the situation.

Thanks!

A: 

The MSI SDK CustomAction table has the links to decipher the Type. I'm going to guess the root issue is that the custom actions are not deferred so they are not be executed by the elevated transaction.

Rob Mensching
Thanks for the response! I've tried adding Execute="deferred" to CustomAction and that did not resolve the issue.
Katelyn