我有一个 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
已安装值为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>
但是,这不起作用。我在条件标记上收到错误,并且项目无法构建。假设我的注册表搜索设置正确,有人可以告诉我如何在退出对话框中正确添加条件消息吗?谢谢!
最佳答案
回答我自己的问题...但是就这样了。事实证明,我的注册表搜索很好......但我需要使用“SetProperty”。所以,像这样:
<SetProperty Id="WIXUI_EXITDIALOGOPTIONALTEXT" After="AppSearch" Value="The Visual C++ Redistributable Package for Visual Studio 2015 is Required. Installation will now install run-time components that are required to run C++ applications built using Visual Studio 2015.">
NOT VCREDISTRUNTIMES2015INSTALLED
</SetProperty>
现在,如果 VCREDISTRUNTIMES2015INSTALLED 为 null(或 false),那么它将在退出对话框上显示该消息。否则,将不会显示任何消息。希望有帮助。
关于WIX 退出时的条件消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34856982/