2009-12-28 46 views
1

我們有我們的自定義setup.exe程序,它以同步方式啓動一系列個性化MSI。計劃和命令的使用來啓動MSI是:從外部程序管理msi

msiexcehandle = CreateProcess("msiexec.exe /i product.msi /qr") 
WaitForSingleObject(msiexechandle, INFINITE) 

現在,我們要做到以下幾點 - 當用戶在pressess setup.exe程序停止按鈕,然後我們想完全停止安裝。我們可以控制尚未啓動的任何產品msi的安裝,但我們沒有找到將某個事件發送到已經運行的安裝(已經使用CreateProcess啓動)的方法。我們想從setup.exe發送Cancel事件到msiexec.exe創建的進度對話框。

請建議一些技術來執行此操作。是否有可能從命令行調用正在運行的安裝回滾?僅供參考,我們使用Wise創建我們的MSI和VS 2008 MFC來創建我們的setup.exe。

-Kartlee

回答

0

我不認爲這是可能的,因爲你描述。我看到的兩個選項是UI自動化(模擬點擊取消按鈕),或與MsiInstallProduct()而不是CreateProcess()一起使用的外部UI處理程序。

請注意,無論哪種情況,您都不能始終立即取消設置或取消設置。雖然你的設置可能不這樣做,但某些設置會在某些點禁用取消按鈕,因爲他們知道它們不能幹淨地回滾。

相關問題