我有一個安裝程序類,這裏是一個片段:自定義安裝類,回滾方法從來沒有所謂的
[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模式」時,我會進行用戶交互模式。
你是什麼意思運行安裝意思在完整的GUI模式?您的ServerWrapInstaller是否被.msi包或安裝應用程序使用?如果是這樣,您使用哪種技術來創建安裝程序? – 2009-09-16 10:33:36
馬克:我編輯帖子 – user88637 2009-09-16 11:18:14