aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src-tauri/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src-tauri/src/core')
-rw-r--r--src-tauri/src/core/java.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/src-tauri/src/core/java.rs b/src-tauri/src/core/java.rs
index 393de34..a8fdeea 100644
--- a/src-tauri/src/core/java.rs
+++ b/src-tauri/src/core/java.rs
@@ -1,6 +1,8 @@
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
use std::process::Command;
+use tauri::AppHandle;
+use tauri::Manager;
use crate::core::downloader;
use crate::utils::zip;
@@ -134,11 +136,8 @@ pub fn get_adoptium_arch() -> &'static str {
}
/// Get the default Java installation directory for DropOut
-pub fn get_java_install_dir() -> PathBuf {
- dirs::home_dir()
- .unwrap_or_else(|| PathBuf::from("."))
- .join(".dropout")
- .join("java")
+pub fn get_java_install_dir(app_handle: &AppHandle) -> PathBuf {
+ app_handle.path().app_data_dir().unwrap().join("java")
}
/// Get Adoptium API download info for a specific Java version and image type
@@ -222,6 +221,7 @@ pub async fn fetch_available_versions() -> Result<Vec<u32>, String> {
/// Download and install Java
///
/// # Arguments
+/// * `app_handle` - Tauri app handle for accessing app directories
/// * `major_version` - Java major version (e.g., 8, 11, 17)
/// * `image_type` - JRE or JDK
/// * `custom_path` - Optional custom installation path
@@ -229,6 +229,7 @@ pub async fn fetch_available_versions() -> Result<Vec<u32>, String> {
/// # Returns
/// * `Ok(JavaInstallation)` - Information about the successfully installed Java
pub async fn download_and_install_java(
+ app_handle: &AppHandle,
major_version: u32,
image_type: ImageType,
custom_path: Option<PathBuf>,
@@ -237,7 +238,7 @@ pub async fn download_and_install_java(
let info = fetch_java_release(major_version, image_type).await?;
// 2. Prepare installation directory
- let install_base = custom_path.unwrap_or_else(get_java_install_dir);
+ let install_base = custom_path.unwrap_or_else(|| get_java_install_dir(app_handle));
let version_dir = install_base.join(format!("temurin-{}-{}", major_version, image_type));
std::fs::create_dir_all(&install_base)
@@ -597,11 +598,11 @@ pub fn get_recommended_java(required_major_version: Option<u64>) -> Option<JavaI
}
/// Detect all installed Java versions (including system installations and DropOut downloads)
-pub fn detect_all_java_installations() -> Vec<JavaInstallation> {
+pub fn detect_all_java_installations(app_handle: &AppHandle) -> Vec<JavaInstallation> {
let mut installations = detect_java_installations();
// Add DropOut downloaded Java versions
- let dropout_java_dir = get_java_install_dir();
+ let dropout_java_dir = get_java_install_dir(app_handle);
if dropout_java_dir.exists() {
if let Ok(entries) = std::fs::read_dir(&dropout_java_dir) {
for entry in entries.flatten() {