寻找一种在 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();
按照目前的情况,如果我添加 pacman
或 make
调用甚至简单的 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 个脚本文件的名称。
因此,我正在开发一个实用程序来创建用于克隆、更新和最终编译 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();
按照目前的情况,如果我添加 pacman
或 make
调用甚至简单的 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 个脚本文件的名称。