【问题标题】:Looking for a way to call pacman and make via MINGW64 in C#寻找一种在 C# 中调用 pacman 并通过 MINGW64 进行制作的方法
【发布时间】:2020-06-20 22:25:38
【问题描述】:

所以,我正在开发一个实用程序来创建用于克隆、更新和最终编译 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 窗口甚至在完成后仍保持打开状态。任何关于我如何让它工作而不必打包脚本的见解将不胜感激。

【问题讨论】:

    标签: c# bash mingw-w64 msys2


    【解决方案1】:

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

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

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

    【讨论】:

    • 就是这样。随着时间的推移,不得不添加一些额外的东西,比如&&,以便在一个窗口中将我需要的一些命令(即cd)串在一起,但这让我非常接近一个工作的独立可执行文件。只需要专门在此范围之外的一些额外逻辑中工作,但它很接近。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 2018-06-25
    • 2011-11-24
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    相关资源
    最近更新 更多