2011-04-05 19 views
3

使用Installshield 2010和Basic MSI項目。使Windows Installer忽略正在運行的進程

我有一個以前由我的安裝程序安裝的exe文件。該exe文件需要在安裝程序升級過程中運行。有沒有辦法保證安裝程序不會嘗試關閉進程?基本上,我想要的行爲是:如果文件不存在,放下它,否則忽略它。

我已經在組件中創建了一個關鍵文件,並將其'永不覆蓋'設置爲true。這應該給我我想要的行爲?

+0

如果你能解釋爲什麼EXE文件必須被使用,那將會很棒。這聽起來像是一個非常奇特的部署策略。 – 2011-04-26 00:39:28

回答

2

未來的安裝程序將使用Never Overwrite來確定文件是否被其他MSI軟件包覆蓋。基本上,應該爲安裝的EXE設置此屬性。

一個好方法是使用file search來確定EXE是否存在。然後可以使用搜索屬性來調整新組件。

Windows安裝程序不會自動關閉應用程序,但會顯示一個FilesInUse對話框,該對話框向用戶提供此選項。

+0

所以基本上我試圖禁用顯示FilesInUse對話框的特定應用程序的用戶。可能嗎? – Web 2011-04-06 11:15:17

+1

僅當沒有正在運行的應用程序需要替換文件時,纔會顯示FilesInUse。因此,您可以嘗試我建議的方法,以查看在EXE條件未滿足時是否仍顯示該方法。如果這不起作用,唯一的解決辦法是手動處理該文件,而不是讓Windows Installer處理它(將其存儲在某處,在安裝過程中將其提取出來)。 – 2011-04-06 11:31:46

+0

根據您的升級模型,您可能還需要將該文件標記爲永久,以便卸載不會嘗試刪除它。 – 2011-04-26 01:29:36