Windows msys2无黑色窗口

Windows msys2无黑色窗口,windows,terminal,msys2,Windows,Terminal,Msys2,如何在MSYS2上为程序(或脚本)创建启动器,而该程序(或脚本)不显示终端的黑色窗口 我的链接: msys2_shell.cmd -mingw64 -c /c/myfolder/program.exe 要在MSYS2环境中运行程序而不显示窗口,您应该右键单击桌面或Windows资源管理器中的其他位置,选择“新建”,选择“快捷方式”,然后为快捷方式目标输入如下内容: C:\msys64\usr\bin\mintty.exe -w hide /bin/env MSYSTEM=MINGW64 /b

如何在MSYS2上为程序(或脚本)创建启动器,而该程序(或脚本)不显示终端的黑色窗口

我的链接:

msys2_shell.cmd -mingw64 -c  /c/myfolder/program.exe

要在MSYS2环境中运行程序而不显示窗口,您应该右键单击桌面或Windows资源管理器中的其他位置,选择“新建”,选择“快捷方式”,然后为快捷方式目标输入如下内容:

C:\msys64\usr\bin\mintty.exe -w hide /bin/env MSYSTEM=MINGW64 /bin/bash -lc /c/path/to/your_program.exe
请注意,这里有4条路径。到
mintty
您的_program.exe
的路径是您需要调整的绝对路径。到
env
bash
的路径与MSYS2安装目录相关。还请注意,第一个路径必须是标准的Windows路径,因为Windows在运行快捷方式时需要这样做

解释 为此使用
MinTTY
似乎有些奇怪,但我们启动的第一个程序需要是为Windows子系统编译的某个程序(
-mwindows
GCC选项),否则Windows将在我们运行该程序时自动启动一个新的控制台。我们将
-w hide
选项传递给MinTTY,告诉它不要实际显示自己的窗口。该选项之后的所有内容都由
MinTTY
解释为要运行的命令

因此MinTTY将从MSYS2发行版运行
/bin/env
,并将剩余的参数传递给它。这是一个方便的实用工具,实际上是Linux和MSYS2的标准部分。它将
MSYSTEM
环境变量设置为
MINGW64
(这在后面很重要),然后使用其余的命令行参数运行
/bin/bash
mssystem
变量选择要使用的三个MSYS2环境中的哪一个,其值为
MSYS2
MINGW32
MINGW64

我们将
-l
传递给Bash,使其充当登录脚本,并运行某些启动脚本。特别是,MSYS2中的
/etc/profile
脚本非常重要,因为它查看
MSSYSTEM
环境变量,发现它是
MINGW64
,然后设置一组其他环境变量(例如
路径
)来为您提供MinGW 64位shell环境,或者,如果您更改了
MSYSTEM
,则使用不同的环境


最后,我们将程序名作为主参数传递给
bash
,这样它将在运行初始化脚本后运行该程序。

我的可执行文件已使用-mwindows标志编译,如果我从包含所有依赖项的文件夹启动,则不会打开黑色窗口。在本例中,我希望从msys2环境内部的Windows链接启动可执行文件。子系统选项对于告诉链接器它不是控制台模式应用程序非常重要。我不清楚为什么您认为您需要msys2环境,使用mingw构建的程序不需要任何帮助。所以不要运行msys2。是的,但是从链接窗口启动图形脚本(比如python+gtk)对我来说非常有用。没有向用户显示终端令人不快的黑色窗口。谢谢,它工作正常,但我不得不在“bash-lc myprog.exe”中修改“bash-l myprog.exe”