【发布时间】: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)。
-
效果很好,非常感谢!我很乐意接受这是正确的答案;)
-
很高兴能帮上忙 :)