2011-02-27 36 views
4

我正在使用Microsoft Visual Studio 2010爲我的簡單.EXE應用程序創建一個簡單的.MSI安裝程序。MSI創建:升級前終止應用程序

問題是,如果您在.EXE仍在運行時安裝升級,則事情會出錯(直到重新啓動)。

我希望.MSI安裝程序在安裝/升級之前終止我的過程。

請問有人能告訴我如何在Orca做到這一點?

編輯:我見過這種情況是由於我的.EXE正在使用,但我也看到它,因爲.CHM幫助文件在升級時也是打開的,所以任何進程終止都不是足以解決這個問題。

回答

1

您可以嘗試創建一個custom action,它停止您的應用程序(由您編寫的自定義EXE或DLL)。例如,您可以將WM_CLOSE發送到主應用程序窗口(您的應用程序應處理此消息)。

此自定義操作應該安排在InstallExecuteSequence表中的InstallValidate操作之前。

+0

謝謝,根據我的編輯,這個答案是不夠的。但是,它直接回答了我原來的問題,這裏有一個+1。下一次,我會專注於我的問題,而不是關於我的想法。 – servermanfail 2011-02-28 08:00:29

3

您應該將MsiRMFilesInUse Dialog廣告給您的安裝人員。

+0

這會檢測我的幫助文件是否打開? – servermanfail 2011-02-28 08:01:15

+0

如文檔中所述:「可以創建MsiRMFilesInUse對話框,以顯示當前正在運行的文件需要被安裝覆蓋或刪除的進程列表。」您可以依賴RestartManager發佈的事件來安全關閉您的應用。但是,此對話框可以用於Windows Installer 4.0或更高版本。對於較低版本,您可以使用FilesInUse對話框。 – Ciprian 2011-02-28 11:03:04

+0

我已到處尋找,但我無法找到一些關於如何將內置對話框添加到設置的幫助。你能幫我嗎 ?我在說VS安裝程序 – 2016-05-24 09:40:23

0

您可以編寫一個自定義操作來關閉您的應用程序以及您的幫助文件。

你應該能夠找到的窗口句柄的這兩種使用FindWindow函數: http://msdn.microsoft.com/en-us/library/ms633499(v=vs.85).aspx

爲可執行文件,你應該能夠使用適當的窗口類或爲標題FindWindow函數。 對於幫助文件,您應該能夠爲FindWindow使用適當的幫助窗口標題。

我希望這有助於!