1

我有一个 .NET 4 桌面应用程序和一个用 Wix 开发的 MSI 安装程序。

目前,当我的应用程序最小化到系统托盘运行并且用户尝试从控制面板卸载它时,卸载通过,ProgramFiles 位置的文件被删除并且仍在运行的应用程序给我抛出了一堆异常。

为了防止这种情况,我在我的 wxs 文件中设置了一个自定义操作,定义如下:

<Custom Action="CheckForRunningInstance" After="ValidateProductID">(REMOVE="ALL") OR NOT(REMOVE="ALL")</Custom>

这是检查我的应用程序的任何实例当前是否正在运行以防止安装程序继续进行。如果我尝试运行我的 MSI 文件,它可以正常工作,但是当用户尝试从“控制面板”>“添加/删除程序”卸载应用程序时,该 CA 不会运行。在这种情况下有什么办法强制它吗?

4

1 回答 1

2

您需要将自定义操作放在 InstallExecuteSequence中,以便即使包未使用完整 UI 运行时也会调用它。

于 2012-05-22T09:14:01.020 回答