Skip to content

Commit

Permalink
fix(bundler): DLL resources, closes #3948 (#3949)
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasfernog authored Apr 23, 2022
1 parent 0198c2b commit f66bc3c
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 28 deletions.
5 changes: 5 additions & 0 deletions .changes/fix-dll-resource.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tauri-bundler": patch
---

Fixes DLL resource usage on Windows.
63 changes: 35 additions & 28 deletions tooling/bundler/src/bundle/windows/msi/wix.rs
Original file line number Diff line number Diff line change
Expand Up @@ -796,34 +796,7 @@ fn generate_resource_data(settings: &Settings) -> crate::Result<ResourceMap> {
let mut resources = ResourceMap::new();
let cwd = std::env::current_dir()?;

let mut dlls = vec![];
for dll in glob::glob(
settings
.project_out_directory()
.join("*.dll")
.to_string_lossy()
.to_string()
.as_str(),
)? {
let path = dll?;
let resource_path = path.to_string_lossy().to_string();
dlls.push(ResourceFile {
id: format!("I{}", Uuid::new_v4().as_simple()),
guid: Uuid::new_v4().to_string(),
path: resource_path,
});
}
if !dlls.is_empty() {
resources.insert(
"".to_string(),
ResourceDirectory {
path: "".to_string(),
name: "".to_string(),
directories: vec![],
files: dlls,
},
);
}
let mut added_resources = Vec::new();

for src in settings.resource_files() {
let src = src?;
Expand All @@ -834,6 +807,8 @@ fn generate_resource_data(settings: &Settings) -> crate::Result<ResourceMap> {
.into_string()
.expect("failed to read resource path");

added_resources.push(resource_path.clone());

let resource_entry = ResourceFile {
id: format!("I{}", Uuid::new_v4().as_simple()),
guid: Uuid::new_v4().to_string(),
Expand Down Expand Up @@ -904,5 +879,37 @@ fn generate_resource_data(settings: &Settings) -> crate::Result<ResourceMap> {
directory_entry.add_file(resource_entry);
}

let mut dlls = Vec::new();

let out_dir = settings.project_out_directory();
for dll in glob::glob(out_dir.join("*.dll").to_string_lossy().to_string().as_str())? {
let path = dll?;
let resource_path = path.to_string_lossy().into_owned();
let relative_path = path
.strip_prefix(&out_dir)
.unwrap()
.to_string_lossy()
.into_owned();
if !added_resources.iter().any(|r| r.ends_with(&relative_path)) {
dlls.push(ResourceFile {
id: format!("I{}", Uuid::new_v4().as_simple()),
guid: Uuid::new_v4().to_string(),
path: resource_path,
});
}
}

if !dlls.is_empty() {
resources.insert(
"".to_string(),
ResourceDirectory {
path: "".to_string(),
name: "".to_string(),
directories: vec![],
files: dlls,
},
);
}

Ok(resources)
}

0 comments on commit f66bc3c

Please sign in to comment.