From 716d10e87c0c86ab72c30d55cfba41809808e567 Mon Sep 17 00:00:00 2001 From: Helios Date: Fri, 6 Mar 2026 03:51:02 +0100 Subject: [PATCH] fix: improve winres icon embedding, log success/failure, auto-detect windres path --- crates/client/build.rs | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/crates/client/build.rs b/crates/client/build.rs index 7550199..4558998 100644 --- a/crates/client/build.rs +++ b/crates/client/build.rs @@ -11,12 +11,29 @@ fn main() { // Embed Windows icon when cross-compiling for Windows if std::env::var("CARGO_CFG_TARGET_OS").as_deref() == Ok("windows") { + // Find windres: prefer arch-prefixed, fall back to plain windres + let windres = if std::process::Command::new("x86_64-w64-mingw32-windres") + .arg("--version") + .output() + .is_ok() + { + "x86_64-w64-mingw32-windres" + } else { + "windres" + }; + let mut res = winres::WindowsResource::new(); res.set_icon("../../assets/icon.ico"); - // Set cross-compile toolkit (mingw-w64) res.set_toolkit_path("/usr"); - res.set_windres_path("x86_64-w64-mingw32-windres"); + res.set_windres_path(windres); res.set_ar_path("x86_64-w64-mingw32-ar"); - res.compile().unwrap_or_else(|e| eprintln!("winres warning: {e}")); + + match res.compile() { + Ok(_) => println!("cargo:warning=Icon embedded successfully via {windres}"), + Err(e) => { + println!("cargo:warning=winres failed: {e}"); + println!("cargo:warning=windres path used: {windres}"); + } + } } }