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

问题描述

我有一个非常简单的 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 项目构建的,这就是为什么我需要传递“响应文件

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)