From c5855119d8c97d2eee7c66c9ec115c6d3999e36a Mon Sep 17 00:00:00 2001 From: MystiPanda Date: Fri, 8 Dec 2023 11:59:40 +0800 Subject: [PATCH] fix: Change PID file path #99 --- src-tauri/src/utils/dirs.rs | 40 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src-tauri/src/utils/dirs.rs b/src-tauri/src/utils/dirs.rs index 6240f2af..f40ac9c4 100644 --- a/src-tauri/src/utils/dirs.rs +++ b/src-tauri/src/utils/dirs.rs @@ -15,6 +15,7 @@ static VERGE_CONFIG: &str = "verge.yaml"; static PROFILE_YAML: &str = "profiles.yaml"; static mut RESOURCE_DIR: Option = None; +static mut APP_HOME_DIR: Option = None; /// portable flag #[allow(unused)] @@ -42,28 +43,27 @@ pub unsafe fn init_portable_flag() -> Result<()> { /// get the verge app home dir pub fn app_home_dir() -> Result { - #[cfg(target_os = "windows")] - unsafe { - use tauri::utils::platform::current_exe; + use tauri::utils::platform::current_exe; + let app_exe = current_exe()?; + let app_exe = dunce::canonicalize(app_exe)?; + let app_dir = app_exe + .parent() + .ok_or(anyhow::anyhow!("failed to get the portable app dir"))?; - if !PORTABLE_FLAG { - Ok(data_dir() - .ok_or(anyhow::anyhow!("failed to get app home dir"))? - .join(APP_ID)) + let portable_home_dir = PathBuf::from(app_dir).join(".config").join(APP_ID); + let home_dir = data_dir() + .ok_or(anyhow::anyhow!("failed to get app home dir"))? + .join(APP_ID); + + unsafe { + if PORTABLE_FLAG { + APP_HOME_DIR = Some(portable_home_dir.clone()); + Ok(portable_home_dir) } else { - let app_exe = current_exe()?; - let app_exe = dunce::canonicalize(app_exe)?; - let app_dir = app_exe - .parent() - .ok_or(anyhow::anyhow!("failed to get the portable app dir"))?; - Ok(PathBuf::from(app_dir).join(".config").join(APP_ID)) + APP_HOME_DIR = Some(home_dir.clone()); + Ok(home_dir) } } - - #[cfg(not(target_os = "windows"))] - Ok(data_dir() - .ok_or(anyhow::anyhow!("failed to get app home dir"))? - .join(APP_ID)) } /// get the resources dir @@ -116,9 +116,9 @@ pub fn app_res_dir() -> Result { pub fn clash_pid_path() -> Result { unsafe { - Ok(RESOURCE_DIR + Ok(APP_HOME_DIR .clone() - .ok_or(anyhow::anyhow!("failed to get the resource dir"))? + .ok_or(anyhow::anyhow!("failed to get the app home dir"))? .join("clash.pid")) } }