Browse Source

fix: generate windows resource directories using resource_relpath, closes #4087. (#4111)

Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
Aitor Miguel Blanco 3 years ago
parent
commit
787ea09adc
2 changed files with 9 additions and 6 deletions
  1. 5 0
      .changes/fix-resource-windows.md
  2. 4 6
      tooling/bundler/src/bundle/windows/msi/wix.rs

+ 5 - 0
.changes/fix-resource-windows.md

@@ -0,0 +1,5 @@
+---
+"tauri-bundler": patch
+---
+
+Fixes resource bundling on Windows when the resource path includes root or parent directory components.

+ 4 - 6
tooling/bundler/src/bundle/windows/msi/wix.rs

@@ -14,6 +14,7 @@ use log::info;
 use regex::Regex;
 use serde::{Deserialize, Serialize};
 use sha2::Digest;
+use tauri_utils::resources::resource_relpath;
 use std::{
   collections::{BTreeMap, HashMap},
   fs::{create_dir_all, read_to_string, remove_dir_all, rename, write, File},
@@ -796,13 +797,10 @@ fn generate_resource_data(settings: &Settings) -> crate::Result<ResourceMap> {
     };
 
     // split the resource path directories
-    let components_count = src.components().count();
-    let directories = src
+    let target_path = resource_relpath(&src);
+    let components_count = target_path.components().count();
+    let directories = target_path
       .components()
-      .filter(|component| {
-        let comp = component.as_os_str();
-        comp != "." && comp != ".."
-      })
       .take(components_count - 1) // the last component is the file
       .collect::<Vec<_>>();