fix(tauri): hide Windows CLI console window

Set CREATE_NO_WINDOW on the spawned local CLI process so the packaged Windows Tauri app does not flash an extra console window when it launches Node.
This commit is contained in:
Pascal André
2026-03-16 01:44:58 +01:00
parent 9d91ecc649
commit 7f631611fd

View File

@@ -17,10 +17,23 @@ use std::thread;
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};
use tauri::{webview::cookie::Cookie, AppHandle, Emitter, Manager, Url}; use tauri::{webview::cookie::Cookie, AppHandle, Emitter, Manager, Url};
#[cfg(windows)]
use std::os::windows::process::CommandExt;
#[cfg(windows)]
const CREATE_NO_WINDOW: u32 = 0x08000000;
fn log_line(message: &str) { fn log_line(message: &str) {
println!("[tauri-cli] {message}"); println!("[tauri-cli] {message}");
} }
fn configure_spawn(command: &mut Command) {
#[cfg(windows)]
{
command.creation_flags(CREATE_NO_WINDOW);
}
}
fn workspace_root() -> Option<PathBuf> { fn workspace_root() -> Option<PathBuf> {
std::env::current_dir().ok().and_then(|mut dir| { std::env::current_dir().ok().and_then(|mut dir| {
for _ in 0..3 { for _ in 0..3 {
@@ -456,6 +469,7 @@ impl CliProcessManager {
.env("ELECTRON_RUN_AS_NODE", "1") .env("ELECTRON_RUN_AS_NODE", "1")
.stdout(Stdio::piped()) .stdout(Stdio::piped())
.stderr(Stdio::piped()); .stderr(Stdio::piped());
configure_spawn(&mut c);
if let Some(ref cwd) = cwd { if let Some(ref cwd) = cwd {
c.current_dir(cwd); c.current_dir(cwd);
} }
@@ -468,6 +482,7 @@ impl CliProcessManager {
.env("ELECTRON_RUN_AS_NODE", "1") .env("ELECTRON_RUN_AS_NODE", "1")
.stdout(Stdio::piped()) .stdout(Stdio::piped())
.stderr(Stdio::piped()); .stderr(Stdio::piped());
configure_spawn(&mut c);
if let Some(ref cwd) = cwd { if let Some(ref cwd) = cwd {
c.current_dir(cwd); c.current_dir(cwd);
} }