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

如何在WIX Toolset V4中通过自定义动作调用DirectX redist.exe?

WIX Toolset V4 自动调用DirectX Redist的问题修复

问题根源

你当前的代码存在几个关键问题导致自定义动作失效:

  • 执行模式错误:用immediate模式时,文件还未复制到目标路径,此时调用exe会找不到文件;必须改用deferred模式(文件复制完成后执行)
  • 缺少静默参数:DirectX redist默认是交互式安装,MSI后台运行时无法弹出界面,必须添加静默安装参数
  • 冗余无效代码:自定义动作标签里的your text是无效内容,需删除
  • 权限不足:deferred动作需要系统权限,需添加Impersonate="no"

修复步骤

  1. 修正自定义动作的执行模式与权限配置
  2. 添加DirectX静默安装参数(Jun2010版本可用/Q)
  3. 调整序列位置到InstallFiles之后(确保文件已复制到目标路径)
  4. 添加安装条件,仅在首次安装时执行(避免卸载/修复时重复运行)

修正后的完整代码片段

<Fragment>
    <Component Id="DirectXExe" Guid="PUT-YOUR-UNIQUE-GUID-HERE">
        <File Id="DirectXExe" Source="C:\Unity Projects\directx_Jun2010_redist.exe" KeyPath="yes" Checksum="yes"/>
    </Component>
</Fragment>

<Fragment>
    <!-- 定义自定义动作:调用DirectX redist并静默安装 -->
    <CustomAction Id="InstallDirectX"
                  FileRef="DirectXExe"
                  ExeCommand="/Q"
                  Execute="deferred"
                  Return="check"
                  Impersonate="no"/>

    <!-- 配置执行序列:首次安装时,在文件复制完成后执行 -->
    <InstallExecuteSequence>
        <Custom Action="InstallDirectX" After="InstallFiles">NOT Installed</Custom>
    </InstallExecuteSequence>
</Fragment>

额外说明

  • Return="check"会让MSI等待DirectX安装完成并检查返回码,若安装失败会终止MSI;需忽略失败可改回Return="ignore"
  • 务必替换PUT-YOUR-UNIQUE-GUID-HERE为实际生成的唯一GUID
  • 测试时可启用MSI日志(msiexec /i yourinstaller.msi /l*v install.log),方便排查执行问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:50:24