我改写了OnBeforeUninstall来阻止我的应用程序的安装项目在某些情况下被卸载,但似乎只是没有被调用并且没有效果。

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


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

最佳答案

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

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

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

09-26 12:03