У меня есть класс установщика, вот фрагмент:
[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);
}
}
Теперь я запускаю установку в режиме полного графического интерфейса, а затем нажимаю кнопку «Отмена» в середине процесса, вызывая откат установки. Проблема в том, что метод RollBack не вызывается. Я не вижу ожидаемой записи в журнале событий.
Я хочу упомянуть, что если я позволю завершить установку, я увижу сообщение «Install» в журнале событий, а если я удалю его, я вижу сообщение «uninstall» в журнале событий. Но если остановить процесс установки посередине, нажав кнопку «Отмена», я вижу, что индикатор выполнения движется назад, но метод отката не вызывается.
что я делаю не так? заранее спасибо за любую помощь.
Edit:
Предоставление более подробной информации ...
Установщик представляет собой пакет MSI.
Пакет встроен в vs2009 с использованием проекта установки. Класс установщика используется как настраиваемое действие в проекте установки.
Поскольку это пакет MSI, у меня есть возможность запускать его в автоматическом режиме или в интерактивном режиме. Когда я писал «Режим полного графического интерфейса», я имел в виду интерактивный режим пользователя.