diff --git a/src-tauri/src/commands/media.rs b/src-tauri/src/commands/media.rs index fac99b2..c1f31f1 100644 --- a/src-tauri/src/commands/media.rs +++ b/src-tauri/src/commands/media.rs @@ -99,16 +99,6 @@ fn find_ffmpeg() -> Option { }; let ffmpeg_path = sidecar_dir.join(ffmpeg_name); if ffmpeg_path.exists() { - // Ensure execute permission on Unix - #[cfg(unix)] - { - use std::os::unix::fs::PermissionsExt; - if let Ok(meta) = std::fs::metadata(&ffmpeg_path) { - let mut perms = meta.permissions(); - perms.set_mode(0o755); - let _ = std::fs::set_permissions(&ffmpeg_path, perms); - } - } return Some(ffmpeg_path.to_string_lossy().to_string()); } } diff --git a/src-tauri/src/commands/sidecar.rs b/src-tauri/src/commands/sidecar.rs index a7efadc..5e5993f 100644 --- a/src-tauri/src/commands/sidecar.rs +++ b/src-tauri/src/commands/sidecar.rs @@ -197,15 +197,21 @@ pub async fn download_sidecar(app: AppHandle, variant: String) -> Result<(), Str let extract_dir = data_dir.join(format!("sidecar-{}", sidecar_version)); SidecarManager::extract_zip(&zip_path, &extract_dir)?; - // Make the binary executable on Unix + // Make all binaries executable on Unix (sidecar, ffmpeg, ffprobe, etc.) #[cfg(unix)] { use std::os::unix::fs::PermissionsExt; - let binary_path = extract_dir.join("voice-to-notes-sidecar"); - if let Ok(meta) = std::fs::metadata(&binary_path) { - let mut perms = meta.permissions(); - perms.set_mode(0o755); - let _ = std::fs::set_permissions(&binary_path, perms); + if let Ok(entries) = std::fs::read_dir(&extract_dir) { + for entry in entries.flatten() { + let path = entry.path(); + if path.is_file() { + if let Ok(meta) = std::fs::metadata(&path) { + let mut perms = meta.permissions(); + perms.set_mode(0o755); + let _ = std::fs::set_permissions(&path, perms); + } + } + } } } diff --git a/src-tauri/src/sidecar/mod.rs b/src-tauri/src/sidecar/mod.rs index f145dca..ded7ca4 100644 --- a/src-tauri/src/sidecar/mod.rs +++ b/src-tauri/src/sidecar/mod.rs @@ -113,14 +113,21 @@ impl SidecarManager { )); } - // Make executable on Unix + // Make all binaries executable on Unix (sidecar, ffmpeg, ffprobe, etc.) #[cfg(unix)] { use std::os::unix::fs::PermissionsExt; - if let Ok(meta) = std::fs::metadata(&binary_path) { - let mut perms = meta.permissions(); - perms.set_mode(0o755); - let _ = std::fs::set_permissions(&binary_path, perms); + if let Ok(entries) = std::fs::read_dir(&extract_dir) { + for entry in entries.flatten() { + let path = entry.path(); + if path.is_file() { + if let Ok(meta) = std::fs::metadata(&path) { + let mut perms = meta.permissions(); + perms.set_mode(0o755); + let _ = std::fs::set_permissions(&path, perms); + } + } + } } }