Skip to content

Commit 4c84559

Browse files
authored
fix(cli): root resource bundling on Windows, closes #3539 (#3685)
1 parent 07d1584 commit 4c84559

File tree

2 files changed

+26
-23
lines changed

2 files changed

+26
-23
lines changed

.changes/fix-windows-resources.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"cli.rs": patch
3+
"cli.js": patch
4+
---
5+
6+
Fixes resources bundling on Windows when the path is on the root of the Tauri folder.

tooling/bundler/src/bundle/windows/msi/wix.rs

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -837,13 +837,16 @@ fn generate_resource_data(settings: &Settings) -> crate::Result<ResourceMap> {
837837
};
838838

839839
// split the resource path directories
840+
let components_count = src.components().count();
840841
let directories = src
841842
.components()
842843
.filter(|component| {
843844
let comp = component.as_os_str();
844845
comp != "." && comp != ".."
845846
})
847+
.take(components_count - 1) // the last component is the file
846848
.collect::<Vec<_>>();
849+
847850
// transform the directory structure to a chained vec structure
848851
let first_directory = directories
849852
.first()
@@ -866,9 +869,9 @@ fn generate_resource_data(settings: &Settings) -> crate::Result<ResourceMap> {
866869
.get_mut(&first_directory)
867870
.expect("Unable to handle resources");
868871

869-
let last_index = directories.len() - 1;
870872
let mut path = String::new();
871-
for (i, directory) in directories.into_iter().enumerate() {
873+
// the first component is already parsed on `first_directory` so we skip(1)
874+
for directory in directories.into_iter().skip(1) {
872875
let directory_name = directory
873876
.as_os_str()
874877
.to_os_string()
@@ -877,30 +880,24 @@ fn generate_resource_data(settings: &Settings) -> crate::Result<ResourceMap> {
877880
path.push_str(directory_name.as_str());
878881
path.push(std::path::MAIN_SEPARATOR);
879882

880-
if i == last_index {
881-
directory_entry.add_file(resource_entry);
882-
break;
883-
} else if i == 0 {
884-
continue;
885-
} else {
886-
let index = directory_entry
887-
.directories
888-
.iter()
889-
.position(|f| f.path == path);
890-
match index {
891-
Some(i) => directory_entry = directory_entry.directories.get_mut(i).unwrap(),
892-
None => {
893-
directory_entry.directories.push(ResourceDirectory {
894-
path: path.clone(),
895-
name: directory_name,
896-
directories: vec![],
897-
files: vec![],
898-
});
899-
directory_entry = directory_entry.directories.iter_mut().last().unwrap();
900-
}
883+
let index = directory_entry
884+
.directories
885+
.iter()
886+
.position(|f| f.path == path);
887+
match index {
888+
Some(i) => directory_entry = directory_entry.directories.get_mut(i).unwrap(),
889+
None => {
890+
directory_entry.directories.push(ResourceDirectory {
891+
path: path.clone(),
892+
name: directory_name,
893+
directories: vec![],
894+
files: vec![],
895+
});
896+
directory_entry = directory_entry.directories.iter_mut().last().unwrap();
901897
}
902898
}
903899
}
900+
directory_entry.add_file(resource_entry);
904901
}
905902

906903
Ok(resources)

0 commit comments

Comments
 (0)