Запрет удаления в проекте установки с помощью OnBeforeUninstall - PullRequest
3 голосов
/ 28 ноября 2010

Я переопределил OnBeforeUninstall, чтобы остановить проект установки моего приложения от удаления его при определенных обстоятельствах, но кажется, что он просто не вызывается и не имеет никакого эффекта.

protected override void OnBeforeUninstall(IDictionary savedState)
{
    if (ApplicationIsBusy())
        throw new ApplicationException("Prevent uninstall while application busy.");
}

Я могу отменить удаление, переопределив метод Uninstall, но к тому времени проект установки уже закрыл мое приложение. Как «провалить» попытку удаления, когда мое приложение занято до , когда программа установки пытается закрыть его, когда оно работает, и прерывает мой рабочий процесс?

Ответы [ 2 ]

3 голосов
/ 11 мая 2011

Убедитесь, что в проекте установки вы выбрали пользовательское действие для удаления, это, вероятно, ваш случай.

2 голосов
/ 25 марта 2011

Перед вызовом вашего пользовательского кода, вызовите base.OnBeforeUninstall (saveState), чтобы зарегистрированные делегаты получили событие, что позволит вашему пользовательскому коду выполнить перед удалением.

protected override void OnBeforeUninstall(IDictionary savedState)
{
    // Add this
    base.OnBeforeUninstall(savedState);

    if (ApplicationIsBusy())
        throw new ApplicationException("Prevent uninstall while application busy.");
}
...