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

WXS自定义动作失效:MSI安装完成后无法打开PDF手册

解决WiX安装完成后自动打开PDF手册的问题

你之前的代码失效的核心问题是错误地将PDF文件指定为BinaryKey,WixShellExec是WiX工具集内置的自定义动作,需要引用WiX自带的WixCA二进制文件,而非你的PDF文档。

修正后的实现步骤

  1. 确保项目已引用WixUtilExtension(WixShellExec属于这个扩展,Visual Studio可通过NuGet安装该扩展)
  2. 调整自定义动作配置,直接使用已部署文件的ID来指定路径

完整修正代码

首先在WXS文件顶部的Wix节点添加命名空间(如果未添加):

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">

然后替换你之前的自定义动作代码:

<!-- 用已部署的File ID指定PDF路径,这里的Dummy是你之前定义的File元素的Id -->
<Property Id="WixShellExecTarget" Value="[#Dummy]" />

<!-- 正确引用WiX内置的WixCA二进制文件 -->
<CustomAction Id="ShowManual" 
              Return="ignore" 
              BinaryKey="WixCA"
              DllEntry="WixShellExec" 
              Impersonate="yes" />

<InstallExecuteSequence>
    <!-- 仅在首次安装时打开PDF -->
    <Custom Action="ShowManual" After="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>

关键说明

  • [#Dummy]是WiX的路径格式化语法,会自动替换为doc.pdf的实际安装路径,必须和你之前<File Id="Dummy">的ID保持一致
  • BinaryKey="WixCA"是核心修正点,WixShellExec动作由WiX的WixCA组件提供,不能用PDF文件作为二进制源
  • Return="ignore"保证即使PDF阅读器未安装,也不会导致安装失败,适合手册这类非必要操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:05:21