From 78849fa0bfeef370bf077fdfb8b88dfa025d0267 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Wed, 11 Mar 2026 14:51:47 +0700 Subject: [PATCH] Strip \\?\ extended-length prefix from Windows resource paths Node.js module resolver can't handle the \\?\ prefix that Tauri's resource_dir() returns on Windows, causing EISDIR errors. Use dunce to simplify paths before passing them to Node. --- packages/desktop/src-tauri/Cargo.lock | 1 + packages/desktop/src-tauri/Cargo.toml | 1 + packages/desktop/src-tauri/src/runtime_manager.rs | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/desktop/src-tauri/Cargo.lock b/packages/desktop/src-tauri/Cargo.lock index 697ac2c8a..94884871e 100644 --- a/packages/desktop/src-tauri/Cargo.lock +++ b/packages/desktop/src-tauri/Cargo.lock @@ -2633,6 +2633,7 @@ version = "0.1.25" dependencies = [ "base64 0.22.1", "dirs", + "dunce", "futures-util", "http", "log", diff --git a/packages/desktop/src-tauri/Cargo.toml b/packages/desktop/src-tauri/Cargo.toml index c5e9ccf32..14e5e6941 100644 --- a/packages/desktop/src-tauri/Cargo.toml +++ b/packages/desktop/src-tauri/Cargo.toml @@ -24,6 +24,7 @@ tauri-build = { version = "2.5.3", features = [] } [dependencies] base64 = "0.22" dirs = "6" +dunce = "1" futures-util = "0.3" http = "1" serde_json = "1.0" diff --git a/packages/desktop/src-tauri/src/runtime_manager.rs b/packages/desktop/src-tauri/src/runtime_manager.rs index 227a680b1..7bf4b3880 100644 --- a/packages/desktop/src-tauri/src/runtime_manager.rs +++ b/packages/desktop/src-tauri/src/runtime_manager.rs @@ -560,7 +560,8 @@ fn dev_resource_root() -> PathBuf { } fn bundled_runtime_root(app: &AppHandle) -> Result { - if let Ok(resource_dir) = app.path().resource_dir() { + if let Ok(raw_resource_dir) = app.path().resource_dir() { + let resource_dir = dunce::simplified(&raw_resource_dir).to_path_buf(); // Tauri's bundle.resources preserves the source directory structure, so // "resources/**/*" in tauri.conf.json places files at // $RESOURCE/resources/managed-runtime/. Try the nested path first (installed