From b1478c02c1cdf58961342bef43f233154ce0fbc1 Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Fri, 25 Jul 2025 15:01:38 -0700 Subject: [PATCH] Fix mac permissions button --- src-tauri/src/lib.rs | 70 ++++++++++++++++++++++++++++++++++++-------- src/main.tsx | 20 +++++++++++++ 2 files changed, 78 insertions(+), 12 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index f36191c..479bef4 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -144,19 +144,34 @@ async fn download( .await .unwrap(); - #[cfg(any(target_os = "linux", target_os = "macos"))] + #[cfg(target_os = "linux")] { let executable_path = game_path.join(&name).join(&executable); - #[cfg(target_os = "linux")] - { - let mut perms = fs::metadata(&executable_path).unwrap().permissions(); - perms.set_mode(0o755); - fs::set_permissions(executable_path, perms).unwrap(); - } - #[cfg(target_os = "macos")] - { - let _ = Command::new(format!("osascript -e 'do shell script chmod 755 {} with prompt Administrator is required to make Berry Dash v{} executable with administrator privileges'", &executable_path.to_string_lossy(), &name)).spawn(); - } + let mut perms = fs::metadata(&executable_path).unwrap().permissions(); + perms.set_mode(0o755); + fs::set_permissions(executable_path, perms).unwrap(); + } + #[cfg(target_os = "macos")] + { + let macos_app_path = &game_path + .join(&name) + .join(&executable) + .join("Contents") + .join("MacOS") + .join( + &executable + .chars() + .take(&executable.chars().count() - 4) + .collect::(), + ); + let _ = Command::new("osascript") + .arg("-e") + .arg(format!( + "do shell script \"chmod 755 \\\"{}\\\"\" with prompt \"Administrator is required to make Berry Dash v{} executable\" with administrator privileges", + macos_app_path.to_string_lossy(), + name + )) + .spawn(); } app.emit("download-done", &name).unwrap(); @@ -334,6 +349,36 @@ async fn open_folder(app: AppHandle, name: String) { } } +#[tauri::command] +fn fix_mac_permissions(app: AppHandle, name: String, executable: String) { + #[cfg(target_os = "macos")] + { + let macos_app_path = app + .path() + .app_local_data_dir() + .unwrap() + .join("game") + .join(&name) + .join(&executable) + .join("Contents") + .join("MacOS") + .join( + &executable + .chars() + .take(&executable.chars().count() - 4) + .collect::(), + ); + let _ = Command::new("osascript") + .arg("-e") + .arg(format!( + "do shell script \"chmod 755 \\\"{}\\\"\" with prompt \"Administrator is required to make Berry Dash v{} executable\" with administrator privileges", + macos_app_path.to_string_lossy(), + name + )) + .spawn(); + } +} + pub fn run() { #[allow(unused_variables)] tauri::Builder::default() @@ -355,7 +400,8 @@ pub fn run() { download_leaderboard, get_keys_config, uninstall_version, - open_folder + open_folder, + fix_mac_permissions ]) .setup(|app| { #[cfg(target_os = "windows")] diff --git a/src/main.tsx b/src/main.tsx index 80ceb0b..48ed0ea 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -466,6 +466,26 @@ function App () { > Open Folder + ) : (