我在WiX 3.6 中使用 <MajorUpgrade> 在安装较新版本时强制卸载我的应用程序的先前版本。我的应用程序将扩展 DLL 文件安装到 Windows 资源管理器中,因此卸载 Files In Use 列表资源管理器并默认关闭列出的应用程序。当我的 shell 消失时,这确实会杀死 Windows 资源管理器(这对用户来说有点刺耳),但是我仍然收到一个错误消息,指出并非所有应用程序都可以关闭,并指出需要重新启动。我的偏好是避免这种颠簸并跳过 Files-In-Use 对话框,只是在最后通知用户需要重新启动。有没有办法告诉 WiX 跳过 Files-In-Use 对话框?
3 回答
<Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable"/>
这对我有用,但我不想杀死任何系统服务。
您是否也尝试过“DisableShutdown”?
" Windows Installer 使用 FilesInUse 对话框。当安装尚未授权使用重新启动管理器的 Windows 安装程序包时,此设置禁止重新启动管理器尝试减轻重新启动。安装程序仍使用重新启动管理器来检测应用程序正在使用的文件。 ”
http://msdn.microsoft.com/en-us/library/aa370377%28v=vs.85%29.aspx
我还有一种情况,尝试关闭和重新打开应用程序总是会失败。需要重新启动。我尝试使用这里提供的所有解决方案。他们都没有工作。我能够简单地解决这个问题。这篇文章是线索。https://msdn.microsoft.com/en-us/library/aa369546(v=vs.85).aspx
我在 InstallValidate 标准操作中添加了一个始终解析为 false 的条件。动作永远不会运行。标准操作仅处理磁盘成本计算和打开进程,停止调用该操作会停止所有关闭事物的提议。我还必须将 Windows Installer REBOOT 属性设置为 FORCE,以便在安装结束时提示重新启动。
我的应用程序占用的磁盘空间很小。如果由于磁盘已满而导致我的安装在稍后的过程中失败将是一个大问题,我会找到一种方法来自己计算成本。