【问题标题】:WIX Conditional Message on Exit退出时 WIX 条件消息
【发布时间】: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


【解决方案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 为 null(或 false),那么它将在退出对话框中显示消息。否则,将不会显示任何消息。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    相关资源
    最近更新 更多