如何修改MSI,以便不需要关闭所有其他正在运行的应用程序?有趣的是,如果我的应用程序在卸载关闭之前手动关闭,它将不会要求关闭outlook,firefox等。
答案 0 :(得分:2)
InstallValidate操作会自动显示提示,因此您无法修改该行为。相反,您可以通过使用在InstallValidate之前关闭应用程序的自定义操作来阻止它。
通常这是通过将WM_CLOSE发送到主应用程序窗口来完成的(应用程序应该处理此消息以使其工作)。
其他应用程序(Outlook,Firefox等)也会显示在提示符中,因为Windows Installer不是很擅长检测正在运行的应用程序。它基本上检查文件依赖性(例如,如果多个应用程序使用相同的DLL或运行时),因此可能会出现误报。
答案 1 :(得分:1)
MSI将使用重启方案自动处理锁定的文件。要求关闭应用程序是尝试阻止重新启动。您可以禁止重新启动,但在重新启动之前,文件实际上不会被替换。
您正在寻找的行为究竟是什么?
BTW,推荐阅读:从此处按照InstallValidate和System Reboots链接进行操作。
答案 2 :(得分:0)
正如mrnx在这里写的那样,在 InstallValidate 期间检查运行应用程序。 但是在它之前停止应用并不是一个好主意。其他检查可能会失败,MSI必须能够将系统恢复到运行MSI之前的状态,包括运行应用程序。
此外,这些支票的运行时间为"立即"而不是"延期"。
用于停止应用程序的IMO自定义操作应该在" RemoveFiles "之前运行。和" 延期"确保以管理员身份运行。
现在为了防止对话框显示可以使用以下属性:
<Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable" />
根据我的理解,如果当时仍然使用 RemoveFiles ,它仍会回退到 FilesInUse 对话框。