2015-09-09 151 views
0

我有一個使用visual studio安裝程序創建的安裝項目。我已經設置了一些自定義操作,這些操作將在複製文件以供進一步安裝後啓動我的定製WPF安裝程序。但我有2個問題:Visual studio安裝程序安裝項目執行從自定義操作回滾

  1. 即使我已經停用所有的窗戶,還是有來自所留下我的WPF程序微星有點加載條我是從一個自定義操作開始(沒有那麼大的一筆交易,我可以忍受這一點)。 UI級別爲3,無提示安裝的級別爲2(這是最小值)。我想知道是否有一種方法可以將默認UI級別設置爲2(即使用戶雙擊msi,也無聲無息)

  2. 這是最大的問題:自定義操作啓動我的WPF進程並等待退出。如果用戶取消安裝(按下WPF中的X按鈕),則WPF將退出,並在我的自定義操作中捕獲某個特定的退出代碼。現在,在這種情況下,我需要一種方法來執行自定義操作中的回滾。 我發現的唯一方法是拋出異常。但是,除了例外情況,用戶會從msi中看到醜陋的對話窗口,而且我絕對不希望這樣。我能否以某種方式強制回滾而不拋出異常?或者至少隱藏msi的用戶界面?

注:我使用的自定義操作是Committed事件,因爲我需要爲我的WPF工作要複製所有文件(包括GAC一些組件)。

我在stackoverflow上找到了幾個答案,但都沒有幫助。最近的一個是這樣的:

Similar question

謝謝

回答

0

你說你有你的啓動程序WPF自定義操作,但你不說,代碼是什麼,是否是NET的VBScript ,C++等。如果這是拋出異常,你應該顯示thaqt代碼。

如果它是託管代碼,則會在您的消息中引發一個InstallException,這只是它們的工作方式,因爲託管代碼CA不是Windows Installer本機,因此有一個處理東西的墊片Dll。

如果調用您的WPF程序的CA是C++或VBScript,那麼有一個API來顯示您自己的消息,MsiProcess4essage或session.message。

一般來說,我不相信你可以強制回滾和壓制所有消息 - 總是產生一條消息。徹底回滾卸載並卸載所有內容似乎並不友好,而沒有說出發生了什麼。

相關問題