2011-02-08 35 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對話框如果他們仍然可以使用那時候。