2012-03-23 65 views
1

我得到一個安裝程序,安裝應用程序並在安裝完成後立即啓動該應用程序。這適用於我。在用戶提示「手動關閉」之前卸載WiX呼叫應用程序

但是現在我想在卸載應用程序時停止該應用程序,我不希望提示用戶手動關閉應用程序。這應該是全自動的。

爲了使用自定義操作來執行此操作,WM_CLOSE消息在我的方法中不起作用(實際上,我試了幾次)。

我認爲這不是那麼困難,但我沒有得到它的工作。我做了什麼至今:

我定義了一個CustomAction:

<CustomAction Id="CloseTrayApp" ExeCommand="-exit" FileKey="TrayApp" Execute="immediate" Return="asyncNoWait" /> 

,並把它稱爲liek這樣的:

<InstallExecuteSequence> 
... 
    <Custom Action="CloseTrayApp" Before="InstallValidate" /> 
... 
</InstallExecuteSequence> 

但是,這是行不通的。我想我正在調度我的自定義操作錯誤,但我無法弄清楚正確的時間來做到這一點。

是否有任何有關時間/地點來限制自定義操作的建議?我很不確定是否

Before="InstallValidate" 

是正確的做法。

+0

當你說「這不行」 - 你是什麼意思?日誌文件中的任何錯誤? – 2012-03-23 10:15:31

+0

我如何查看日誌文件?不起作用意味着我仍然可以獲得「手動關閉應用程序」對話框,安裝程序說它失敗並且進程仍在運行。 – inva 2012-03-23 10:25:13

+0

爲了生成詳細的日誌文件,您應該使用/ l * v命令行開關運行安裝。像這樣:'msiexec/i MyApplication.msi/l * v MyLogFile.txt' – 2012-03-23 12:41:28

回答

3

根據FilesInUse Dialog幫助主題,在InstallValidate是計劃自定義操作的正確位置之前。但我很困惑,爲什麼WM_CLOSE不適合你。我看到你問了另一個問題,並接受它作爲答案。也許你的TrayApp可以有一個「隱藏」的形式,用戶永遠不會看到,但正在運行接收WM_CLOSE消息。這是我多年來做過很多次的一招。否則,如果您確實想調用您的EXE,我建議您不要使用EXE自定義操作。請使用Quiet Execution Custom Action。有關爲什麼要這樣做的某些原因,請參閱Integration Hurdles for EXE Custom Actions

+0

感謝您的回覆,我已經嘗試使用隱藏的窗體,但我經歷過,每次我從我的任務欄圖標觸發一些動作時,wm_close消息已發送,因此應用程序已關閉,因爲我無法彌補卸載程序wm_close消息和常見的wm_close消息之間的差異 – inva 2012-03-26 14:09:51

相關問題