aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src-tauri/src
diff options
context:
space:
mode:
authorHsiangNianian <i@jyunko.cn>2026-01-16 14:49:50 +0800
committerHsiangNianian <i@jyunko.cn>2026-01-16 14:49:50 +0800
commit4d6ed7b93ed57a2f397e4f8060b2b183b7c86774 (patch)
treedd5928c8165cba8275119a98ea0c2a77aa7b6fd1 /src-tauri/src
parent1e0905613a7b7b98daf6dfecffa87fc0096a8e55 (diff)
downloadDropOut-4d6ed7b93ed57a2f397e4f8060b2b183b7c86774.tar.gz
DropOut-4d6ed7b93ed57a2f397e4f8060b2b183b7c86774.zip
feat: enhance Java path handling by resolving symlinks and stripping UNC prefixes
Updated the Java installation and executable retrieval functions to resolve symlinks and strip UNC prefixes from paths. This improvement ensures cleaner and more reliable path handling on Windows systems, enhancing compatibility and usability.
Diffstat (limited to 'src-tauri/src')
-rw-r--r--src-tauri/src/core/java.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src-tauri/src/core/java.rs b/src-tauri/src/core/java.rs
index 3f7a1e4..1d57d21 100644
--- a/src-tauri/src/core/java.rs
+++ b/src-tauri/src/core/java.rs
@@ -577,6 +577,10 @@ pub async fn download_and_install_java(
));
}
+ // Resolve symlinks and strip UNC prefix to ensure clean path
+ let java_bin = std::fs::canonicalize(&java_bin).map_err(|e| e.to_string())?;
+ let java_bin = strip_unc_prefix(java_bin);
+
// 9. Verify installation
let installation = check_java_installation(&java_bin)
.ok_or_else(|| "Failed to verify Java installation".to_string())?;
@@ -919,7 +923,8 @@ fn find_java_executable(dir: &PathBuf) -> Option<PathBuf> {
// Directly look in the bin directory
let direct_bin = dir.join("bin").join(bin_name);
if direct_bin.exists() {
- return Some(direct_bin);
+ let resolved = std::fs::canonicalize(&direct_bin).unwrap_or(direct_bin);
+ return Some(strip_unc_prefix(resolved));
}
// macOS: Contents/Home/bin/java
@@ -939,7 +944,8 @@ fn find_java_executable(dir: &PathBuf) -> Option<PathBuf> {
// Try direct bin path
let nested_bin = path.join("bin").join(bin_name);
if nested_bin.exists() {
- return Some(nested_bin);
+ let resolved = std::fs::canonicalize(&nested_bin).unwrap_or(nested_bin);
+ return Some(strip_unc_prefix(resolved));
}
// macOS: nested/Contents/Home/bin/java