抑制 MSI 错误代码

Suppress an MSI error code

我得到 error 2803: dialog view did not find a record for the dialog。这是因为我已经明确地从我的安装程序中删除了 FilesInUse 对话框。当存在文件锁定时,msiexec 有时会请求显示此对话框。我的安装程序逻辑从未明确尝试显示此对话框。我的安装程序有自定义操作来终止锁定文件的进程,因此忽略此消息然后进行安装永远不会有问题(但对于此进程终止我需要权限,因此延迟的自定义操作必须 运行 在请求对话框之后)。这个对话框对我的所有意图和目的来说基本上是无用的。当出现此错误代码时,我不显示致命错误对话框,而是如何抑制此错误代码?有谁知道在 WiX 中是否有任何方法可以做到这一点,也许是通过 C# 自定义操作或其他形式?有什么方法可以捕获和处理错误代码?

我认为您无法抑制该错误,除非您准备使用自己的 UI 并忽略 FilesInUse 对话框请求。或者修改 WiX 代码(如果允许的话)。基本上你会收到消息并对它们做出反应(或不做出反应):

https://msdn.microsoft.com/en-us/library/aa370573(v=vs.85).aspx

您会 return 忽略响应而不是显示对话框。

您能否使用启动时提升的引导程序以及 运行MSI?在这种情况下,整个安装都会提升,并且您的 CA 在 InstallFinalize 之前 运行 时也会提升,即使它们是即时的。

如果它们是您的应用程序,那么另一种解决方案是将它们与 Restart Manager 集成,以便告知它们关闭,并增加了它们可以保存状态并在必要时恢复状态的功能。您不需要您的 CA。