我有一个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>
然而,这不起作用。我在条件标签上出错,项目不会构建。假设我的注册表搜索设置正确,有人可以告诉我如何在退出对话框中正确添加条件消息吗?谢谢!
答案 0 :(得分:1)
回答我自己的问题......但是这里有。事实证明我的注册表搜索很好......但我需要使用“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为空(或为假),则它将在退出对话框中显示该消息。否则,将不会显示任何消息。希望有所帮助。