寻找一种在 C# 中通过 MINGW64 调用 pacman 和 make 的方法

Looking for a way to call pacman and make via MINGW64 in C#

因此,我正在开发一个实用程序来创建用于克隆、更新和最终编译 GitHub 项目的 GUI。我已经创建了一个脚本,它直接通过 MSYS2 终端执行相同的一般操作,但我无法让这些相同类型的命令在 C# GUI 中工作。我有幸通过单击按钮从 GUI 中调用相同的脚本,但我希望能够将所有内容打包为独立的可执行文件,而不是必须将其与脚本捆绑在一起,但如果是这样的话我会的归结到最后。

这是我现在拥有的(删除了一些 if 语句以控制其他参数):

ProcessStartInfo compileStart = new ProcessStartInfo();
compileStart.FileName = this.textMSYS2.Text + "\usr\bin\mintty.exe";
this.outputText.Text += "Configuring MSYS2 process...\n";

compileStart.Arguments += "-h always /bin/env MSYSTEM=MINGW64 /bin/bash -l ";

compile.StartInfo = compileStart;
compile.Start();
compile.WaitForExit();

按照目前的情况,如果我添加 pacmanmake 调用甚至简单的 dir 调用,它都会失败。返回的错误如下所示:

/usr/bin/make: /usr/bin/make: cannot execute binary file
/bin/env: Exit 126.

但是,如果我调用我的 ./install.sh 脚本,脚本将毫无问题地执行,并且 MINGW64 window 甚至在完成后仍保持打开状态。任何关于如何使它工作而无需将其打包脚本的见解也将不胜感激。

我认为您在 -l 旁边漏掉了 -c。 Bash具有三种操作模式(可能更多,但目前无关紧要):

  • -i:互动;接受通过标准输入提供的单个命令
  • -c FOO: 运行 命令 FOO
  • foo.sh:解释一个shell脚本foo.sh

在您的情况下,您正在提供命令,但 Bash 试图将它们解释为 shell 个脚本文件的名称。