public override void Install(IDictionary stateSaver)
        {
         .....
        }我在这里加入了检测的代码,如果检测失败就进行回滚,在这个方法里加入 “this.Rollback(stateSaver);”好像不行,请问该这么做?

解决方案 »

  1.   

    savedState
    IDictionary,它包含计算机的安装前状态。 IDictionary stateSaver = new Hashtable();
    myAssemblyInstaller.Install( stateSaver );
    this.Rollback(stateSaver);”
      

  2.   

    myAssemblyInstaller.Install( stateSaver );在调用此方法前须传入状态值即stateSaver。
      

  3.   

    好像抛出个异常就可以throw new Exception("原因");
      

  4.   

    this.Rollback(stateSaver);
    这段代码写到哪里?
      

  5.   

    throw new Exception("原因"); 这个只能出现安装失败,但不能回滚。
      

  6.   

    抛出异常后捕获它并执行rollback
      

  7.   

    你在执行install方法的时候捕获异常
    this.Rollback(stateSaver); 这句不能放在重写的方法内的
      

  8.   

    为什么还要执行后面的代码。回滚的代码应该放在
    public override void Rollback( IDictionary mySavedState )
      

  9.   

    如果用捕获异常,throw就没意义了,这个方法不行啊
      

  10.   

    问题是使用throw后并没有触发 public override void Rollback、Rollback事件
      

  11.   

    throw InstallException参考http://www.codekeep.net/snippets/2923ee77-bd65-4881-ad95-22c39caa869a.aspx