2011-02-08 94 views
1

如何修改我的MSI,以便它不需要关闭所有其他正在运行的应用程序?有趣的是,如果我的应用程序在卸载结束前手动关闭,它不会要求关闭outlook,firefox等。MSI - 不要求应用程序关闭

回答

2

由InstallValidate操作自动显示提示,因此您无法修改该行为。相反,您可以通过使用在InstallValidate之前关闭应用程序的自定义操作来阻止它。

通常这是通过将WM_CLOSE发送到主应用程序窗口(应用程序应该处理此消息以使其工作)来完成的。

其他应用程序(Outlook,Firefox等)也显示在提示符中,因为Windows安装程序不太擅长检测正在运行的应用程序。它基本上检查文件依赖性(例如,如果多个应用程序使用相同的DLL或运行时),则可能会发生误报。

1

MSI会自动使用重启场景处理锁定的文件。要求关闭应用程序是为了防止重新启动。您可以禁止重新启动,但是直到重新启动后才会实际更换文件。

你在找什么行为?

BTW,推荐阅读:

FilesInUse Dialog

从那里跟随链接到InstallValidate和系统重新启动。

+0

我想设置要么忽略自动运行的应用程序,或评估运行的应用程序之前结束我的应用程序 - 试图做的是与自定义操作,见注释到@Cosmin – Marin 2011-02-09 09:52:08

+0

我试图把我的customaction到installexecutesequnce下50号(之前的一切) ,但它没有执行。它有一个条件= 2,这应该是正确的? – Marin 2011-02-09 11:22:37

0

由于mrnx在这里写这个检查运行的应用程序发生在InstallValidate。 但是,在它不是个好主意之前停止应用程序。其他检查可能会失败,MSI必须能够将系统恢复到运行MSI之前的状态,包括正在运行的应用程序。

再加上这些检查运行“立即”,而不是“延期”。

IMO自定义操作,以停止应用程序应该运行之前“RemoveFiles”和“推迟”,以确保它运行作为管理员。

我们防止对话框,从中显示出下面的属性可用于:

<Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable" /> 

在我的理解它仍然会在RemoveFiles回落到FilesInUse对话框如果他们仍然可以使用那时候。