WXS自定义动作失效:MSI安装完成后无法打开PDF手册
解决WiX安装完成后自动打开PDF手册的问题
你之前的代码失效的核心问题是错误地将PDF文件指定为BinaryKey,WixShellExec是WiX工具集内置的自定义动作,需要引用WiX自带的WixCA二进制文件,而非你的PDF文档。
修正后的实现步骤
- 确保项目已引用
WixUtilExtension(WixShellExec属于这个扩展,Visual Studio可通过NuGet安装该扩展) - 调整自定义动作配置,直接使用已部署文件的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
相关产品推荐
相关产品推荐

