在自定义操作中,我覆盖以下函数并在回滚中获得异常 案例......
“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);
}
}
答案 0 :(得分:1)
将异常处理程序中的“base.Rollback()”更改为“throw;”。您的呼叫者将在正确的时间呼叫回滚。
答案 1 :(得分:1)
您可以使用pinvoke调用基本安装程序上的取消按钮。这将在没有任何installexception错误消息对话框的情况下回滚。