使用OnBeforeUninstall阻止在安装项目中卸载

时间:2010-11-28 09:32:49

标签: c# setup-project uninstall

我覆盖OnBeforeUninstall以阻止我的应用程序的安装项目在某些情况下卸载它,但它似乎只是没有被调用而且没有任何效果。

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

我可以通过覆盖Uninstall方法来取消卸载,但到那时安装项目已经关闭了我的应用程序。如何在我的应用程序忙之前“失败”卸载尝试安装项目在运行时尝试关闭它并中断我的工作进程?

2 个答案:

答案 0 :(得分:3)

确保在安装项目中选择了卸载的自定义操作,这可能就是您的情况。

答案 1 :(得分:2)

在调用自定义代码之前,请调用base.OnBeforeUninstall(savedState),以便已注册的委托接收事件,从而允许在卸载之前执行自定义代码。

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

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