2012-07-24 36 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