2013-04-27 18 views
3

使用自定義託管引導程序應用程序時,我無法獲取安裝進度以在單擊取消按鈕時停止。我用「是/否」選項拉出確認視圖。一旦取消確認,安裝程序回滾就好了。或者,如果拒絕,它會繼續。這是根據完成: Cancel Installation and Rollback using wix burn Bootstrapper UIWiX刻錄自定義BA - 取消命令觸發時如何暫停進度?

我注意到了同樣的問題也發生在維克斯安裝套件本身,在那裏你可以點擊取消,等待,設定的,而不是等待用戶確認或拒絕取消,繼續沿着。

所以,我的問題是,如何暫停進度,直到在確認視圖中確認(或拒絕)取消命令?

更新:我試圖通過以下機制來做到這一點: 添加名爲CancelWaiting新的屬性。如果CancelWaiting爲true,則在ProgressViewModel中,更改邏輯,使<PropertyChangedEventArgs>.Result設置爲Result.Suspend。這裏面臨的挑戰是做多個命令綁定。另一種方法是將Cancel和CancelWaiting路徑合併爲一個。無論如何,一旦我完成這個任務,我會更新這個線程。如果有人有任何其他想法,請張貼。

+0

按照羅布的建議下,我最終顯示從進度回調方法取消確認視圖。 – Manas 2013-04-29 22:36:15

回答

3

返回Result.Suspend將指示Burn引擎儘快停止安裝,並使該Bundle註冊以再次執行。這不太可能是你想要做的。

如果要防止進度繼續,那麼您必須有進度回調方法等待而不是返回。您可以通過顯示進度回調方法中的消息框來執行此操作,也可以讓進度回調等待事件並在用戶在UI線程上做出選擇後發出事件信號。

0

我知道這是舊的,但我的方法可能會幫助別人掙扎。我面臨同樣的問題,我不得不暫停自定義刻錄wpf應用程序的安裝/卸載進度。 所以這就是我如何解決它: 我創建了一個彈出窗口通過Window.ShowDialog(),,因爲gui線程將阻塞,直到彈出關閉

當用戶按下退出/取消,你可以做這樣的事情:

ModalWindow newWindow = new ModalWindow(); 
newWindow.ShowDialog(); 

您可以添加新的窗口,並調用它以這種方式。這將暫停UI線程,直到用戶關閉或向ModalWindow提供反饋。

但是,如果你正在尋找其他辦法,這裏是一個很好的閱讀 http://deanchalk.com/wpf-modal-controls-via-dispatcherframe-nested-message-pumps/