You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WiX 4.0打包dpInstaller时驱动已安装成功,但返回安装失败

WiX 4.0 Bundle中DPInst驱动安装失败问题排查

我用WiX 4.0和HeatWave Visual Studio扩展构建安装Bundle,用来部署驱动前置程序和主应用。Bundle能正常运行,但其中一个依赖多个文件的DPInst(dpinst64.exe)安装失败,返回模糊错误。

我的WXS配置

<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>

安装日志片段

[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\

问题分析与修复方案

1. DPInst调用参数缺失

从日志能看到,WiX调用dpinst64.exe时没有附加任何参数,而DPInst需要明确参数才能正确工作。比如:

  • /sw:静默安装,不显示UI
  • /path .:指定当前目录为驱动搜索路径
  • /install:明确执行安装操作

修改ExePackage节点,添加必要参数:

<ExePackage Id="dpInstaller" SourceFile="Drivers\BBelectronics\Windows\dpinst64.exe" Permanent="yes"
            Arguments="/sw /path ." />

2. Payload路径格式错误

当前Payload的Name属性使用了\.\Drivers\...这种无效的相对路径写法,WiX会把Payload解压到dpinst64.exe的同目录下,正确的相对路径应该直接对应原文件的目录结构,去掉\.\前缀。比如:

<!-- 错误写法 -->
<Payload Name="\.\Drivers\ftdibus.cat" SourceFile="Drivers\BBelectronics\Windows\Drivers\ftdibus.cat" />

<!-- 正确写法 -->
<Payload Name="Drivers\ftdibus.cat" SourceFile="Drivers\BBelectronics\Windows\Drivers\ftdibus.cat" />

所有Payload的Name都需要调整为这种相对路径,确保DPInst能找到驱动文件和配置。

3. 工作目录配置

可以给ExePackage添加WorkingDirectory="Payload",确保DPInst在Payload解压后的目录中运行,避免路径查找错误:

<ExePackage Id="dpInstaller" SourceFile="Drivers\BBelectronics\Windows\dpinst64.exe" Permanent="yes"
            Arguments="/sw /path ." WorkingDirectory="Payload">

4. 错误码0x200的具体含义

0x200是DPInst的专属错误码,通常表示:

  • 找不到指定的驱动包
  • DPInst.xml配置文件路径错误或内容无效
  • 驱动文件没有有效的数字签名(Windows 10/11默认强制要求驱动签名)

额外检查步骤

  • 手动运行解压后的dpinst64.exe,观察是否有弹窗提示具体错误,这比WiX日志更直观
  • 检查DPInst.xml的内容,确认其中的<SearchPath>等配置和实际解压后的路径一致
  • 验证驱动文件的数字签名是否有效,若系统开启驱动签名强制,未签名驱动会安装失败

内容的提问来源于stack exchange,提问作者Rej Fredericks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 00:07:34