【问题标题】:Installing via System.Diagnostics.Process Doesn't Work in 32-Bit/XP?通过 System.Diagnostics.Process 安装在 32 位/XP 中不起作用?
【发布时间】:2013-02-13 04:20:34
【问题描述】:

我有一个调用 System.Diagnostics.Process 的 c# exe 来在 cmd.exe 中运行一些命令,被动地安装几个安装程序。我一直在我的机器上测试它(64 位 win8,它工作得很好,但是当我在 32 位版本的 Windows XP 上运行 exe 时,程序只是跳过了进程部分。没有抛出任何错误,它只是忽略它们。这是我的代码:

System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("CMD.exe", @"/C [command stuff]}");
psi.CreateNoWindow = true;     
psi.UseShellExecute = false;   
System.Diagnostics.Process diag = System.Diagnostics.Process.Start(psi);
diag.WaitForExit();
diag.Close();

这可能是什么交易?我再一次没有错误,它只是忽略它。这很有趣,因为我可以在那里完成所有这些,只需运行 date 作为命令,它工作正常,但它不会运行安装所需的 msi 和 exe 文件。我找不到任何关于它在 64 位而不是 32 位上工作的信息。谢谢!

【问题讨论】:

  • 您是否尝试过捕获输出和/或错误流?错误很可能出现在您没有向我们展示的“命令内容”中。
  • 是的,我经历了这个,无论我做什么,我都无法让它向我显示错误,但问题在于命令。

标签: c# command-line process


【解决方案1】:

所以我发现了我的问题所在。在运行 .msi 进行安装之前,我使用语法 C:/folder/setup.msi 更改了目录。这在我的电脑上运行良好,但在 XP 上没有做任何事情。事实证明它不知道如何处理正斜杠。我所要做的就是将其更改为 C:\folder\setup.msi,它工作正常。我觉得自己像个白痴,希望这对某人有所帮助,尽管哈哈。

【讨论】:

    猜你喜欢
    • 2020-03-16
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多