说明
最近在开发tauri应用程序,用到了std::process::Command调用其他可执行程序。但是当打包成可执行文件的时候,发现每当调用到可执行程序都会弹出黑色窗口。
最后研究发现,不是tauri的原因,而是std::process::Command的原因。
配置
原程序:
let mut child = Command::new(exec_path)
.arg("-i")
.arg(input)
.arg("-o")
.arg(output)
.arg("-m")
.arg(path.join("bin\models"))
.arg("-n")
.arg(model_name)
.arg("-s")
.arg("4")
.arg("-f")
.arg(suffix.to_owned())
.stdout(Stdio::piped())
.stderr(Stdio::piped())
.spawn()
.expect("failed to start command");
此程序打包到tauri中以后,会出黑色窗口。要想去掉命令行窗口需要添加如下改动:
const CREATE_NO_WINDOW: u32 = 0x08000000;
let mut child = Command::new(exec_path)
// 添加下面这样一行代码,问题解决
.creation_flags(CREATE_NO_WINDOW)
.arg("-i")
.arg(input)
.arg("-o")
.arg(output)
.arg("-m")
.arg(path.join("bin\models"))
.arg("-n")
.arg(model_name)
.arg("-s")
.arg("4")
.arg("-f")
.arg(suffix.to_owned())
.stdout(Stdio::piped())
.stderr(Stdio::piped())
.spawn()
.expect("failed to start command");