【发布时间】:2016-01-19 03:56:06
【问题描述】:
我有一个 WIX 安装程序,我还需要安装 VC++ 2015 运行时可执行文件。我使用的是 vcredist_x64.exe 而不是合并模块 (see this thread)。在我的 msi 使用自定义操作完成安装我的应用程序后,我可以成功启动 vcredist_x64.exe ......但是,我想做的是首先检查运行时文件是否已经存在。如果他们这样做,那么我将在不运行 vcredist_x64.exe 的情况下完成。否则,我将运行自定义操作来安装运行时。
经过一番挖掘,我发现 2015 运行时有一个如下所示的注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64
如果存在,Installed 值为 1。
所以,在我的 .wxs 文件中,我有以下注册表搜索:
<!-- Visual C++ 2015 x64 -->
<Property Id="VCREDISTRUNTIMES2015INSTALLED">
<RegistrySearch Id="VCREDISTRUNTIMES2015SEARCH" Root="HKLM" Key="SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" Name="Installed" Type="raw" />
</Property>
现在,我想做的是在退出对话框中显示一条消息,如果未检测到运行时,它将启动安装程序以在退出时安装它们。像这样的:
<Property Id="WIXUI_EXITDIALOGOPTIONALTEXT" Value="Visual C++ Redistributable for Visual Studio 2015 is Required. Installation will proceed on exit.">
<Condition>VCREDISTRUNTIMES2015INSTALLED</Condition>
</Property>
但是,这不起作用。我在条件标签上收到错误,并且项目无法构建。假设我的注册表搜索设置正确,有人可以告诉我如何在退出对话框中正确添加条件消息吗?谢谢!
【问题讨论】:
-
如果您采用这种方式(我会改用 WiX 引导程序),请确保以下情况不会导致重新安装 VC 运行时。 1) 安装您的应用程序。 2) 卸载 VC 运行时。 3) 卸载您的应用程序。
-
@TomBlodget 我明白你在说什么。但是,我尝试了您的用例,它似乎仍然可以正常工作。如果我安装我的应用程序(使用 VC 运行时),然后卸载 VC 运行时,然后卸载我的应用程序......它不会在卸载时重新启动 VC 运行时安装程序。我有点期待它会,但它只是卸载了我的应用程序,仅此而已。
标签: wix