Bläddra i källkod

fix(bundler): escape potentially problematic strings in an XML (#9040)

* fix(bundler): escape potentially problematic strings in an XML (#9030)

- replace characters invalid in XML with their escaped form to properly bundle resources with such characters in their pathnames.

* change file
bifs 1 år sedan
förälder
incheckning
5163861588
2 ändrade filer med 8 tillägg och 3 borttagningar
  1. 5 0
      .changes/escape-paths-wix.md
  2. 3 3
      tooling/bundler/src/bundle/windows/msi/wix.rs

+ 5 - 0
.changes/escape-paths-wix.md

@@ -0,0 +1,5 @@
+---
+"tauri-bundler": patch:bug
+---
+
+On Windows, fix building WiX installer when resources contains an XML charcter that should be escaped.

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

@@ -16,7 +16,7 @@ use crate::bundle::{
   },
 };
 use anyhow::{bail, Context};
-use handlebars::{to_json, Handlebars};
+use handlebars::{html_escape, to_json, Handlebars};
 use log::info;
 use regex::Regex;
 use serde::{Deserialize, Serialize};
@@ -122,7 +122,7 @@ impl ResourceDirectory {
           r#"<Component Id="{id}" Guid="{guid}" Win64="$(var.Win64)" KeyPath="yes"><File Id="PathFile_{id}" Source="{path}" /></Component>"#,
           id = file.id,
           guid = file.guid,
-          path = file.path.display()
+          path = html_escape(&file.path.display().to_string())
         ).as_str()
       );
     }
@@ -140,7 +140,7 @@ impl ResourceDirectory {
       format!(
         r#"<Directory Id="I{id}" Name="{name}">{files}{directories}</Directory>"#,
         id = Uuid::new_v4().as_simple(),
-        name = self.name,
+        name = html_escape(&self.name),
         files = files,
         directories = directories,
       )