WIX 安装程序未 运行 C# 正确处理

WIX Installer do not run C# process properly

我们有一个很大的 WIX 安装程序。安装后,大约有 2800 个脚本应该 运行 升级数据库。为此,创建了一个特殊的应用程序。它只是转到 SQL 机器,安装 SQL SMO 和 SQL Sys Clr Types 等先决条件,然后执行脚本。这个小应用程序在 WIX 的自定义操作中 运行。从逻辑上讲,它应该 运行 具有更高的权限。在此自定义操作中,我使用 c# 进程来启动应用程序。但是,我已经尝试了所有方法,应用程序仍然无法正常运行。它打开应用程序,应用程序尝试安装先决条件并退出 - 没有安装任何东西。我试过的: 1. 运行 具有提升权限的进程 (process.StartInfo.UseShellExecute = true) 2. 运行 具有用户权限的进程(standardinput/output with UseShellExecute=false) 3. 运行 带有批处理文件的应用程序。

整体流程应该是这样的: 安装程序 运行 具有提升的权限 -> 安装后,特殊应用程序 运行 升级数据库 -> 应用程序安装先决条件 -> 应用程序执行脚本。

有趣的是,当我使用 cmd 手动执行时,应用程序运行正常。但是,当安装程序的自定义操作打开 cmd.exe(c# 进程)并且它仍在等待时,则无法通过 cmd 手动打开应用程序。换句话说,我有安装程序打开的 cmd(具有提升的权限)和我自己手动打开的另一个 cmd。然后,手动 运行ning 应用程序不起作用。一旦我关闭安装程序打开的 cmd,并通过我自己打开的 cmd 手动 运行 应用程序,然后又一切正常,一切正常。

我需要帮助如何解决这个问题?

P.S。无法单独提取和安装安装程序的先决条件。我们没有升级数据库应用程序的源代码。

经过一些研究,我发现 Windows 不能同时 运行 两个 MSI,因此第二个 MSI 正在静默退出。