WIX安装程序无法正确运行C#进程

时间:2019-02-27 19:56:41

标签: c# cmd process wix installer

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

总体过程应如下: 安装程序以提升的特权运行->安装后,将运行特殊的应用程序以升级数据库->应用程序先决条件->应用程序执行脚本。

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

我需要帮助我该如何解决?

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

1 个答案:

答案 0 :(得分:0)

经过研究,我发现Windows无法同时运行两个MSI,因此,第二个MSI处于静默退出状态。