WIX 引导程序文件正在使用多个 MSI 包的对话框

WIX bootstrapper files in use dialog for multiple MSI packages

我创建了一个 WIX Bootstrapper 应用程序,它安装了两个 MSI 包。其中之一是一个简单的应用程序,只需关闭一个已经 运行 的实例即可安装,无需重新启动。另一个包安装了一个供 Windows Explorer 使用的库,应该总是需要重启。

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

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

我还尝试在引导程序应用程序中使用 RegistrySearch 来确定是否要更新 Explorer 库,然后将 WixStandardBootstrapperApplication 中的 ShowFilesInUse 设置为 "yes" 或 "no",但不幸的是我无法提供变量作为值。

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

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