From 48e5a6367359c51ba861debea026a40dab97964d Mon Sep 17 00:00:00 2001 From: FabianLars Date: Sat, 4 Nov 2023 19:17:25 +0100 Subject: [PATCH] fix(build): Always invoke resource compiler on windows, fixes #8164 --- .changes/tauri-build-resource-compiler.md | 5 ++ core/tauri-build/src/lib.rs | 70 +++++++++++------------ 2 files changed, 39 insertions(+), 36 deletions(-) create mode 100644 .changes/tauri-build-resource-compiler.md diff --git a/.changes/tauri-build-resource-compiler.md b/.changes/tauri-build-resource-compiler.md new file mode 100644 index 000000000000..876d707dbfad --- /dev/null +++ b/.changes/tauri-build-resource-compiler.md @@ -0,0 +1,5 @@ +--- +"tauri-build": 'patch:bug' +--- + +Fixed an issue that caused the resource compiler to not run on Windows when `package.version` was not set in `tauri.conf.json` preventing the app from starting. diff --git a/core/tauri-build/src/lib.rs b/core/tauri-build/src/lib.rs index 887918953f98..08a3f139ce0b 100644 --- a/core/tauri-build/src/lib.rs +++ b/core/tauri-build/src/lib.rs @@ -534,45 +534,43 @@ pub fn try_build(attributes: Attributes) -> Result<()> { .window_icon_path .unwrap_or_else(|| find_icon(&config, |i| i.ends_with(".ico"), "icons/icon.ico")); - if target_triple.contains("windows") { - if window_icon_path.exists() { - let mut res = WindowsResource::new(); - - if let Some(manifest) = attributes.windows_attributes.app_manifest { - res.set_manifest(&manifest); - } else { - res.set_manifest(include_str!("window-app-manifest.xml")); - } + if window_icon_path.exists() { + let mut res = WindowsResource::new(); - if let Some(version_str) = &config.package.version { - if let Ok(v) = Version::parse(version_str) { - let version = v.major << 48 | v.minor << 32 | v.patch << 16; - res.set_version_info(VersionInfo::FILEVERSION, version); - res.set_version_info(VersionInfo::PRODUCTVERSION, version); - } - if let Some(product_name) = &config.package.product_name { - res.set("ProductName", product_name); - } - if let Some(short_description) = &config.tauri.bundle.short_description { - res.set("FileDescription", short_description); - } - if let Some(copyright) = &config.tauri.bundle.copyright { - res.set("LegalCopyright", copyright); - } - res.set_icon_with_id(&window_icon_path.display().to_string(), "32512"); - res.compile().with_context(|| { - format!( - "failed to compile `{}` into a Windows Resource file during tauri-build", - window_icon_path.display() - ) - })?; - } + if let Some(manifest) = attributes.windows_attributes.app_manifest { + res.set_manifest(&manifest); } else { - return Err(anyhow!(format!( - "`{}` not found; required for generating a Windows Resource file during tauri-build", - window_icon_path.display() - ))); + res.set_manifest(include_str!("window-app-manifest.xml")); } + + if let Some(version_str) = &config.package.version { + if let Ok(v) = Version::parse(version_str) { + let version = v.major << 48 | v.minor << 32 | v.patch << 16; + res.set_version_info(VersionInfo::FILEVERSION, version); + res.set_version_info(VersionInfo::PRODUCTVERSION, version); + } + if let Some(product_name) = &config.package.product_name { + res.set("ProductName", product_name); + } + if let Some(short_description) = &config.tauri.bundle.short_description { + res.set("FileDescription", short_description); + } + if let Some(copyright) = &config.tauri.bundle.copyright { + res.set("LegalCopyright", copyright); + } + } + res.set_icon_with_id(&window_icon_path.display().to_string(), "32512"); + res.compile().with_context(|| { + format!( + "failed to compile `{}` into a Windows Resource file during tauri-build", + window_icon_path.display() + ) + })?; + } else { + return Err(anyhow!(format!( + "`{}` not found; required for generating a Windows Resource file during tauri-build", + window_icon_path.display() + ))); } let target_env = std::env::var("CARGO_CFG_TARGET_ENV").unwrap();