【问题标题】:WIX bootstrapper files in use dialog for multiple MSI packages用于多个 MSI 包的 WIX 引导程序文件正在使用对话框
【发布时间】:2017-08-25 12:07:36
【问题描述】:

我创建了一个安装两个 MSI 软件包的 WIX Bootstrapper 应用程序。其中之一是一个简单的应用程序,只需关闭已经运行的实例即可安装,无需重新启动。另一个软件包安装了一个供 Windows 资源管理器使用的库,并且应该始终需要重新启动。

因此,如果简单的应用程序已更新(当然当前正在运行)并且需要重新启动(并且 显示正在使用的文件对话框)当资源管理器库更新时。

我尝试在安装 Explorer 库的 MSI 安装程序项目中设置 <Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable"/>,但没有效果。

我还尝试在引导程序应用程序中使用RegistrySearch 来确定是否要更新资源管理器库,然后将WixStandardBootstrapperApplication 中的ShowFilesInUse 相应地设置为“是”或“否”,但不幸的是我无法提供变量作为值。

所以我所能做到的就是要么总是显示两个 MSI 软件包的正在使用的文件对话框,要么根本不显示它并且总是需要重新启动。我能想到的唯一其他选择可能是将安装资源管理器库的 MSI Bundle 包装到另一个引导程序应用程序中并在那里设置ShowFilesInUse="no",但这似乎有点麻烦......是否有另一种选择来实现这一点?

【问题讨论】:

  • 只是为了澄清:如果文件实际正在使用,您希望 MSI#1 显示正在使用的文件对话框。如果资源管理器库已更新,您正在寻找 MSI#2 以强制重新启动。而且这两个动作不是互为条件的,对吗?
  • 这正是我正在寻找的,正确的。
  • 尝试对 MSI#1 使用 DisableShutdown 值,它仍会显示正在使用的文件对话框,但会阻止重新启动管理器参与其中。我的想法是阻止 RM 在第一个 MSI 中使用可能会允许第二个 MSI 成功禁用它(通过值 Disable)。
  • 效果很好,非常感谢!我很乐意接受这是正确的答案;)
  • 很高兴能帮上忙 :)

标签: wix burn wix3.8


【解决方案1】:

<Property Id="MSIRESTARTMANAGERCONTROL" Value="DisableShutdown"/> 添加到您的第一个 MSI。这将禁用重新启动管理器,但仍允许“正在使用的文件”对话框运行。在第二个 MSI 中继续使用 <Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable"/>。似乎在安装过程中启用 RM 后,它会忽略其他要禁用的命令。

【讨论】:

    猜你喜欢
    • 2014-04-10
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2011-08-12
    • 2013-03-02
    相关资源
    最近更新 更多