我正在使用< MajorUpgrade>在WiX 3.6中,在安装较新版本时强制卸载以前版本的应用程序。我的应用程序将扩展DLL文件安装到Windows资源管理器中,因此卸载“正在使用的文件”列表资源管理器并默认关闭列出的应用程序。这确实会杀死Windows资源管理器,因为我的shell消失了(这对用户来说有些刺耳),但是我仍然会收到一条错误消息,说明并非所有应用程序都可以关闭并指出需要重新启动。我的偏好是避免这种颠簸并跳过“使用中的文件”对话框,只是告知用户最后需要重新启动。有没有办法告诉WiX跳过“使用中的文件”对话框?
答案 0 :(得分:6)
您可以通过将MSIRESTARTMANAGERCONTROL
属性设置为"Disabled"
(来自MSI SDK)来禁用重新启动管理器集成。您也可以尝试删除FilesInUse
对话框,但静态Internal Consistency Evaluator(ICE)验证会抱怨。我希望禁用重启管理器就足以停止尝试从explorer.exe
中提取资源。
答案 1 :(得分:6)
<Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable"/>
这对我有用,但我不是想杀死任何系统服务。
你也尝试过“DisableShutdown”吗?
“ Windows Installer使用FilesInUse对话框。此设置禁用重启管理器在安装尚未创作使用重新启动管理器的Windows Installer程序包时缓解重新启动的尝试。安装程序仍使用重新启动管理器检测应用程序使用的文件。“
http://msdn.microsoft.com/en-us/library/aa370377%28v=vs.85%29.aspx
-Robin
答案 2 :(得分:1)
我还有一种情况,即关闭和重新打开应用程序的尝试总是会失败。需要重新启动。 我试图使用这里提供的所有解决方案。他们都没有工作。我只是简单地解决了这个问题。这篇文章是线索。 https://msdn.microsoft.com/en-us/library/aa369546(v=vs.85).aspx
我在InstallValidate标准操作中添加了一个始终解析为false的条件。行动永远不会运行。标准操作仅处理磁盘成本计算和打开进程,停止调用操作会停止所有关闭事务的提议。我还必须将Windows Installer REBOOT属性设置为FORCE,以便在安装结束时提示重新启动。
我的应用程序占用磁盘空间很小。如果我的安装在后续过程中因为磁盘已满而失败将是一个大问题,我会找到一种方法来自行计算成本。