我创建了一个安装两个MSI软件包的WIX Bootstrapper应用程序。其中一个是一个简单的应用程序,可以通过关闭已经运行的实例而不重新启动来安装。另一个软件包安装了一个供Windows资源管理器使用的库,应始终需要重新启动。
因此,我想要的是如果简单的应用程序更新(当前正在运行)并且需要重新启动(并且不显示更新资源管理器库时,使用对话框中的文件。
我尝试在安装Explorer库的MSI Installer项目中设置<Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable"/>
但是没有效果。
我还尝试在引导程序应用程序中使用RegistrySearch
来确定是否要更新资源管理器库,然后将ShowFilesInUse
中的WixStandardBootstrapperApplication
设置为“是”或“没有“因此,但遗憾的是我无法提供变量值。
所以我所能实现的是要么总是显示两个MSI包的使用对话文件,要么根本不显示它,并且总是需要重新启动。我能想到的唯一其他选择,可能是将安装Explorer库的MSI Bundle包装到另一个bootstrapper应用程序中并在那里设置ShowFilesInUse="no"
,但这看起来有点麻烦......是否有其他选择可以实现此?
答案 0 :(得分:1)
将<Property Id="MSIRESTARTMANAGERCONTROL" Value="DisableShutdown"/>
添加到您的第一个MSI。这将禁用重新启动管理器,但仍允许“正在使用文件”对话框运行。继续在第二个MSI中使用<Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable"/>
。似乎在安装过程中启用RM后,它将忽略其他要禁用的命令。