1

I'm building a bundle to install some driver prerequisites along with my main application using WiX 4.0 and the HeatWave Visual Studio extension.

I've got the bundle up and running, and all the prerequisites install fine, but one of the three EXEs is causing a pretty vague error:

My WXS file:

<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal ="http://wixtoolset.org/schemas/v4/wxs/bal">
  <Bundle Name="MINEiMiniSetupBundle" Manufacturer="TODO Manufacturer" Version="1.0.0.0" UpgradeCode="ba8f7558-8d8e-497c-95c7-aca4bc5cb362">
    <BootstrapperApplication>
      <bal:WixStandardBootstrapperApplication LicenseUrl="https://www.example.com/license" Theme="hyperlinkLicense" />
    </BootstrapperApplication>

    <Chain>
        <ExePackage Id="Corel" SourceFile="Drivers\easyvhstodvdv3driverx64_kz06axd1ful.exe" Permanent="yes"/>
        <ExePackage Id="Phidget" SourceFile="Drivers\phidget22-x64_1.6.20201218.exe" Permanent="yes" />
        <ExePackage Id="dpInstaller" SourceFile="Drivers\BBelectronics\Windows\dpinst64.exe" Permanent="yes">
            <Payload SourceFile="Drivers\BBelectronics\Windows\DPInst.xml" />
            <Payload Name=".\Drivers\ftdibus.cat" SourceFile="Drivers\BBelectronics\Windows\Drivers\ftdibus.cat" />
            <Payload Name=".\Drivers\ftdibus.inf" SourceFile="Drivers\BBelectronics\Windows\Drivers\ftdibus.inf" />
            <Payload Name=".\Drivers\ftdiport.cat" SourceFile="Drivers\BBelectronics\Windows\Drivers\ftdiport.cat" />
            <Payload Name=".\Drivers\ftdiport.inf" SourceFile="Drivers\BBelectronics\Windows\Drivers\ftdiport.inf" />
            <Payload Name=".\Drivers\ftd2xx.h" SourceFile="Drivers\BBelectronics\Windows\Drivers\ftd2xx.h" />
            <Payload Name=".\Data\eula0409.txt" SourceFile="Drivers\BBelectronics\Windows\Data\eula0409.txt" />
            <Payload Name=".\Data\SideImage.bmp"  SourceFile="Drivers\BBelectronics\Windows\Data\SideImage.bmp" />
            <Payload Name=".\Data\TopImage.bmp"  SourceFile="Drivers\BBelectronics\Windows\Data\TopImage.bmp" />

            <Payload Name=".\Drivers\i386\ftser2k.sys"  SourceFile="Drivers\BBelectronics\Windows\Drivers\i386\ftser2k.sys" />
            <Payload Name=".\Drivers\i386\ftserui2.dll"  SourceFile="Drivers\BBelectronics\Windows\Drivers\i386\ftserui2.dll" />
            <Payload Name=".\Drivers\i386\ftcserco.dll"  SourceFile="Drivers\BBelectronics\Windows\Drivers\i386\ftcserco.dll" />
            <Payload Name=".\Drivers\i386\ftbusui.dll"  SourceFile="Drivers\BBelectronics\Windows\Drivers\i386\ftbusui.dll" />
            <Payload Name=".\Drivers\i386\ftd2xx.dll"  SourceFile="Drivers\BBelectronics\Windows\Drivers\i386\ftd2xx.dll" />
            <Payload Name=".\Drivers\i386\ftd2xx.lib"  SourceFile="Drivers\BBelectronics\Windows\Drivers\i386\ftd2xx.lib" />
            <Payload Name=".\Drivers\i386\ftdibus.sys"  SourceFile="Drivers\BBelectronics\Windows\Drivers\i386\ftdibus.sys" />
            <Payload Name=".\Drivers\i386\ftlang.dll"  SourceFile="Drivers\BBelectronics\Windows\Drivers\i386\ftlang.dll" />

            <Payload Name=".\Drivers\amd64\ftser2k.sys"  SourceFile="Drivers\BBelectronics\Windows\Drivers\amd64\ftser2k.sys" />
            <Payload Name=".\Drivers\amd64\ftserui2.dll"  SourceFile="Drivers\BBelectronics\Windows\Drivers\amd64\ftserui2.dll" />
            <Payload Name=".\Drivers\amd64\ftcserco.dll"  SourceFile="Drivers\BBelectronics\Windows\Drivers\amd64\ftcserco.dll" />
            <Payload Name=".\Drivers\amd64\ftbusui.dll"  SourceFile="Drivers\BBelectronics\Windows\Drivers\amd64\ftbusui.dll" />
            <Payload Name=".\Drivers\amd64\ftd2xx64.dll"  SourceFile="Drivers\BBelectronics\Windows\Drivers\amd64\ftd2xx64.dll" />
            <Payload Name=".\Drivers\amd64\ftd2xx.lib"  SourceFile="Drivers\BBelectronics\Windows\Drivers\amd64\ftd2xx.lib" />
            <Payload Name=".\Drivers\amd64\ftdibus.sys"  SourceFile="Drivers\BBelectronics\Windows\Drivers\amd64\ftdibus.sys" />
            <Payload Name=".\Drivers\amd64\ftlang.dll"  SourceFile="Drivers\BBelectronics\Windows\Drivers\amd64\ftlang.dll" />

            <Payload Name=".\Drivers\Static\amd64\ftd2xx.lib"  SourceFile="Drivers\BBelectronics\Windows\Drivers\Static\amd64\ftd2xx.lib" />
            <Payload Name=".\Drivers\Static\i386\ftd2xx.lib"  SourceFile="Drivers\BBelectronics\Windows\Drivers\Static\i386\ftd2xx.lib" />
        </ExePackage>
        
        
    </Chain>

  </Bundle>
</Wix>

The issue is with the .exe that has all of the dependencies: dpInstaller.

Here is the error generated in the install log:

[5CE0:467C][2023-06-14T10:55:02]i301: Applying execute package: dpInstaller, action: Install, path: C:\ProgramData\Package Cache\367B4EA5A422D7C8FA14832B08DA119C60A43E9B7C493385587DCF69AF6FF42B\dpinst64.exe, arguments: '"C:\ProgramData\Package Cache\367B4EA5A422D7C8FA14832B08DA119C60A43E9B7C493385587DCF69AF6FF42B\dpinst64.exe"'
[5CE0:467C][2023-06-14T10:55:08]i366: The process for package: dpInstaller exited with code: 0x200. The exit code has been translated to type: Error and restart: None.
[5CE0:467C][2023-06-14T10:55:08]e000: Error 0x80070200: Process returned error: 0x200
[64F8:1D64][2023-06-14T10:55:08]e000: Error 0x80070200: Failed to configure per-machine EXE package.
[64F8:1D64][2023-06-14T10:55:08]i319: Applied execute package: dpInstaller, result: 0x80070200, restart: None
[5CE0:467C][2023-06-14T10:55:08]e000: Error 0x80070200: Failed to execute EXE package.
[64F8:1D64][2023-06-14T10:55:08]e000: Error 0x80070200: Failed to execute EXE package.
[5CE0:467C][2023-06-14T10:55:08]i351: Removing cached package: dpInstaller, from path: C:\ProgramData\Package Cache\367B4EA5A422D7C8FA14832B08DA119C60A43E9B7C493385587DCF69AF6FF42B\

Does anything silly/obvious standout here that I might be missing? I'm very new to application deployment/packaging.

Note: this is for a super legacy product, and unfortunately I don't have much access to the files I'm packaging - I have to simply automate the prerequisite install process.

  • Can you also check the MSI log file at "C:\Users\username\AppData\Local\Temp{logfilename}.log". {logfilename} for the MSIpackage will be based on the MSIPackage → LogPathVariable - Name of a variable that will hold the path to the log file. You can retry the install then order by date modified descending in the folder and it will be right at the top – peterpie Jun 14 '23 at 17:37

2 Answers2

2

The log file tells you everything we know:

The process for package: dpInstaller exited with code: 0x200.
The exit code has been translated to type: Error and restart: None.

Why did dpInst64.exe return 0x200? What does 0x200 mean to dpInst64.exe? If 0x200 is not an error, then use the ExitCode element to interpret 0x200 correctly. If it is an error... well, see the first question.

Note: Maybe this dpInst documentation helps but at that point, you've switched to a dpInst question, not a WiX question.

Rob Mensching
  • 33,834
  • 5
  • 90
  • 130
  • This is actually super helpful to me. The returned code seems to be stating that the drivers didn't install correctly, but they seem to be working on my machine, so I'll have to see what's going on with the driver install package. Thank you very much for your time. – Rej Fredericks Jun 16 '23 at 19:16
  • It's going to take multiple ExitCode rules to handle the strange beast DPInst is. – Christopher Painter Jun 17 '23 at 22:47
1

The documentation for dpinst exit codes is here:

https://learn.microsoft.com/en-us/windows-hardware/drivers/install/dpinst-return-code

Exit code x200 means that two driver packages were present and copied to the Difx store but not installed. If that's a beheavior then that's success.

They also have different codes for different things and how many of those things were processed. It's a mess from an exit code perspective. If you can't write enough ExitCode rules to handle this you might have to write your own installer.exe that calls dpinst and then does masking on the exit code to calculate how many of each type of return and logic to determine of you consider that success or not.

Also, Difx is deprecated.

https://learn.microsoft.com/en-us/windows-hardware/drivers/install/difx-guidelines

Christopher Painter
  • 54,556
  • 6
  • 63
  • 100
  • Thanks Christopher! Insightful reply. We're sort of at a standstill now until the client works out their driver install situation - it's out of my hands! Glad to learn a bit more about the process regardless, though. – Rej Fredericks Jun 21 '23 at 19:53