3

在自定义操作中,我覆盖了以下函数并在回滚情况下出现异常......

“savedState 字典不包含预期值,可能已损坏。”

有没有其他方法可以回滚?

   protected override void OnBeforeInstall(System.Collections.IDictionary savedState)
    {            
        try
        {                

            bool report = false; //Some validation
            if (!report)                
                throw new InstallException("License is not valid.");
            base.OnBeforeInstall(savedState);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            base.Rollback(savedState);
        }

    }
4

2 回答 2

1

将异常处理程序中的“base.Rollback()”更改为“throw;”。您的调用者将在正确的时间调用 Rollback。

于 2011-02-08T22:29:09.377 回答
1

您可以使用 pinvoke 调用基本安装程序上的取消按钮。这将在没有任何 installexception 错误消息对话框的情况下回滚。

于 2011-06-20T20:14:52.170 回答