捕获标准错误

时间:2014-04-15 20:11:34

标签: c# standard-error

我遵循其他有关此主题的SO文章的指导,但我无法找到我需要的内容。我有以下代码块启动 - 在这种情况下 - 已知已损坏的.msi(为了测试标准错误消息的检索):

ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd.exe", "/c " + thirdPartyApp.Item2.InstallString);
procStartInfo.RedirectStandardOutput = true;
procStartInfo.RedirectStandardError = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
writeEvent(EventLogEntryType.Information, "Attempting to launch upgrade: " + thirdPartyApp.Item2.InstallString, "Third Party Update");
proc.Start();
string stderror = proc.StandardError.ReadToEnd();
proc.WaitForExit();

手动启动时,此.msi会抛出错误代码1620,并显示消息"无法打开此安装包。请与应用程序供应商联系,以验证这是否是有效的Windows Installer程序包。"

在调试时,如果我查看proc.ExitCode,它的值是1620 - 所以它正确地捕获了它。我添加了行string stderror = proc.StandardError.ReadToEnd();来尝试捕获错误文本,但是在进程执行并出错之后,stderror的值为""。

如何将实际错误文本捕获到变量中?

0 个答案:

没有答案