【发布时间】:2015-02-04 21:22:18
【问题描述】:
我想在我的 WiX 安装程序完成后打开一个 PDF 文件。
我目前拥有的相关 WiX XML 是:
<Property Id="WixShellExecTarget" Value="[#Manual.pdf]" />
<CustomAction Id="ShowManual"
Return="ignore"
BinaryKey="WixCA"
DllEntry="WixShellExec"
Impersonate="yes" />
<InstallExecuteSequence>
<Custom Action="ShowManual" After="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>
这一切都可以在安装了 PDF 阅读器的机器上正常运行。但如果不是,Windows 会闪烁一条消息说“Windows 无法打开这种类型的文件”。
如果有与 PDF 文件关联的应用程序,有什么方法可以让 WiX 仅尝试调用 ShellExecute?或者是否可以让调用静默失败而不显示任何错误?
【问题讨论】:
-
您能否进行 RegistrySearch 以查看是否处理了扩展并使其成为您的 CustomAction 的条件
-
@CheGueVerra 我没有想到这一点,但我知道所需的注册表项可能会根据 Windows 的版本而改变。如果可能的话,我宁愿避免使用注册表
-
您可以检测Windows的版本搜索相应的注册表值。否则,我看不到您如何检查是否可以打开 PDF
-
我认为位置在不同版本的 Windows 上没有变化,但我没有检查。在 HKCR\.pdf 下寻找一些东西是一个开始的地方,但你是对的,它可能不可靠。否则,您需要先运行在 pdf 上执行 ShellExecute 的代码,然后再尝试打开 pdf。
-
@PhilDW 我查过了,Windows 8上没有设置HKCR\.pdf值,所以不同版本有区别
标签: wix shellexecute wix3.8