2011-07-05 45 views
0

CANCEL按鈕在默認安裝程序UI中的工作原理是什麼?MSI安裝:取消不起作用

如果我點擊取消按鈕,有時候我可以看到「是否要取消設置」對話框,有或沒有選項。

但是有些情況下,這個彈出窗口不會顯示並且安裝繼續。

我看到這個問題,如果我只在第一階段結束時單擊取消按鈕。狀態消息是「應對新文件」。

「應對新文件」是延遲操作。第一階段如何顯示此消息?

回答

1

您確定它實際上正在運行「複製新文件」操作,還是在沒有發佈任何進度更新之後的操作?如果它是一個自定義操作,要小心,它的兩兩件事之一:

  • 從來不打電話MsiProcessMessage(或同等學歷)
  • 注重MsiProcessMessage的返回碼和把手取消適當

如果該動作從不調用MsiProcessMessage,則Windows安裝程序將處理該操作的取消操作,但無法在操作中取消該操作。如果該操作調用MsiProcessMessage(具有eMessageType的某些值),則Windows Installer會假定該操作將處理取消操作,並且該操作必須返回ERROR_INSTALL_USEREXIT或者Windows Installer會感到困惑。

+0

幾乎所有的自定義動作,在開始實際任務之前,調用MsiProcessMessage來設置狀態。返回類型處理不當。 – Rajeshaz09

0

CANCEL按鈕在默認安裝程序UI中的工作原理是什麼?他們在WindowsForms .NET中使用多個線程,如BackgroundWorker。一個用於UI的線程和一個用於安裝的線程,如果您單擊取消(UI),它將嘗試在某個特定時間點停止另一個線程(安裝)。

+0

我錯過了什麼嗎?這個問題纔會出現,如果我在第一階段結束時點擊取消按鈕,狀態消息顯示在用戶界面上是「應對新文件」。 – Rajeshaz09

+0

我發現這個,這可以幫助http://en.wikipedia.org/wiki/Windows_Installer – dpp

0

將分兩個階段執行MSI安裝過程的順序運行:

應執行
  1. 首先所有操作都寫在一個臨時的安裝腳本。這是直接的,它總是顯示取消彈出窗口。
  2. 第二階段運行該腳本並實際執行安裝。它按延期運行。取決於您何時按取消,彈出窗口可能會顯示,也可能不顯示。

例如,當提交操作開始執行時,安裝不能再取消。

+0

這個問題出現在第一階段。如果我在第二階段點擊取消按鈕,我得到取消彈出窗口。但唯一的問題在第一階段結束。一個重要的提示是,如果我直接在第二階段點擊取消按鈕,我可以看到彈出窗口。但是,如果我點擊第一階段結束,我看不到......並立即如果我再次嘗試在第二階段,我冷看不到取消彈出窗口(安裝跳過進一步取消按鈕點擊)。 – Rajeshaz09