我有一个安装程序类,这是一个片段:
[RunInstaller(true)]
public partial class ServerWrapInstaller : Installer
{
public override void Install(IDictionary stateSaver)
{
EventLog.WriteEntry("Installer", "Install", EventLogEntryType.Information);
base.Install(stateSaver);
}
public override void Commit(IDictionary savedState)
{
EventLog.WriteEntry("Installer", "Commit", EventLogEntryType.Information);
base.Commit(savedState);
}
public override void Rollback(IDictionary savedState)
{
EventLog.WriteEntry("Installer", "Rollback", EventLogEntryType.Information);
base.Rollback(savedState);
}
public override void Uninstall(IDictionary savedState)
{
EventLog.WriteEntry("Installer", "UnInstall", EventLogEntryType.Information);
base.Uninstall(savedState);
}
}
现在我以全 GUI 模式开始安装,然后在过程中间单击“取消”按钮,导致安装回滚。问题是没有调用 RollBack 方法。我在事件日志中没有看到预期的条目。
我想提一下,如果我让安装完成,我会在事件日志中看到“安装”消息,如果我随后卸载,我会在事件日志中看到“卸载”消息。但是如果中途停止安装过程,按“取消”按钮,我确实看到进度条向后退,但没有调用回滚方法。
我究竟做错了什么 ?提前感谢您的帮助。
编辑:
提供更多细节...
安装程序是一个 MSI 软件包。
该软件包是使用安装项目在 vs2009 中构建的。安装程序类用作安装项目的自定义操作。
由于这是一个 MSI 包,我可以选择在静默模式或用户交互模式下运行它。当我写“全 GUI 模式”时,我提到了用户交互模式。