2012-07-24 38 views
2

我有一些條件,我必須檢查在卸載時,如果條件匹配,然後我想停止安裝過程,並希望回滾卸載過程。自定義卸載行動c#

目前我正在使用使用安裝程序類進行卸載的自定義操作。我在哪裏檢查條件是否匹配?如果匹配,那麼我已經完成回滾,否則卸載將繼續。

我在卸載腳本操作中使用了以下代碼。

public override void Uninstall(IDictionary savedState) 
     { 
      if (Condition) 
      { 
       Rollback(savedState); 
      } 
      else 
      { 
       base.Uninstall(savedState); 
      } 

     } 

但是,此代碼無法回滾卸載過程。讓我知道這段代碼有什麼問題。如果有任何新的想法,然後讓我知道。

回答

2

拋出一個InstallException它會回滾。閱讀this

public override void Uninstall(IDictionary savedState) 
{ 
    if (Condition) 
    { 
     throw new InstallException("blah blah"); 
     // What ever you want to do after 
    } 
    else 
    { 
     base.Uninstall(savedState); 
    }    
} 

您的代碼將無法使用。爲什麼?

回滾時發生回滾自定義操作被調用。

它沒有其他方式調用回滾自定義操作將導致回滾。

+0

thx for replay.I嘗試拋出一個異常,但現在的問題是,它顯示一個異常錯誤窗口。有沒有什麼辦法可以隱藏那個窗口。 – 2012-07-24 12:15:14

+0

不幸的是,該窗口告訴用戶爲什麼會調用回滾。在我的代碼中,它會顯示「blah blah」 – 2012-07-24 12:16:16

+1

好的謝謝你給我你的寶貴時間。 – 2012-07-24 12:18:41