process.start() 不在调试模式下工作。调试时工作正常

时间:2021-05-26 22:25:46

标签: c# installshield installscript-msi

我有一个非常简单的 C# 程序,需要静默卸载旧产品。所以我设置了一个进程并使用正确的参数运行它,当我逐步执行代码时,它每次都运行良好。当我从命令行运行它时,它每次都失败。我正在捕获 StandardOut 和 StandardError 并且 StandardOut 只包含文本:

<块引用>

此操作仅对当前安装的产品有效。

如果我立即在调试模式下运行它,它运行良好,所以很明显没有安装该产品是不正确的。

代码如下:

process.StartInfo.UseShellExecute = false;
process.StartInfo.FileName = processToRun;
process.StartInfo.Arguments = args;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardError = true;
process.Start();
string output = process.StandardOutput.ReadToEnd();
File.WriteAllText("stdout.txt", output);
string err = process.StandardError.ReadToEnd();
File.WriteAllText("stderr.txt", err);
process.WaitForExit();

这里是值:

<块引用>

StartInfo.FileName = "C:\Program Files (x86)\InstallShield 安装信息{325FAC03-900A-4BB2-B45E-1D0EB4D414BE}\setup.exe"

<块引用>

StartInfo.args = /s /f1"C:\Users\User\CommonCustomActions\Uninstall 5.0.0-5.3.2\Uninstall 5.0.0-5.3.2\bin\Debug\Uninstall response files\5.2.1 \UNINST-5.2.1.iss"

有什么想法吗?

附言原始安装是作为 InstallShield InstallScript MSI 项目构建的,这就是为什么我需要传递“响应文件”

0 个答案:

没有答案
相关问题