mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-08-03 02:51:17 +08:00
fix(auto-launch): use AutoLaunchBuilder for cross-platform compatibility
The auto-launch crate has different API signatures on each platform: - Windows/Linux: AutoLaunch::new() takes 3 arguments - macOS: AutoLaunch::new() takes 4 arguments (includes hidden param) The previous code used #[cfg(not(target_os = "windows"))] which incorrectly applied macOS's 4-argument signature to Linux, causing build failures. Switch to AutoLaunchBuilder which handles platform differences internally.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
use crate::error::AppError;
|
use crate::error::AppError;
|
||||||
use auto_launch::AutoLaunch;
|
use auto_launch::{AutoLaunch, AutoLaunchBuilder};
|
||||||
|
|
||||||
/// 初始化 AutoLaunch 实例
|
/// 初始化 AutoLaunch 实例
|
||||||
fn get_auto_launch() -> Result<AutoLaunch, AppError> {
|
fn get_auto_launch() -> Result<AutoLaunch, AppError> {
|
||||||
@@ -7,13 +7,15 @@ fn get_auto_launch() -> Result<AutoLaunch, AppError> {
|
|||||||
let app_path =
|
let app_path =
|
||||||
std::env::current_exe().map_err(|e| AppError::Message(format!("无法获取应用路径: {e}")))?;
|
std::env::current_exe().map_err(|e| AppError::Message(format!("无法获取应用路径: {e}")))?;
|
||||||
|
|
||||||
// Windows 平台的 AutoLaunch::new 只接受 3 个参数
|
// 使用 AutoLaunchBuilder 消除平台差异
|
||||||
// Linux/macOS 平台需要 4 个参数(包含 hidden 参数)
|
// Windows/Linux: new() 接受 3 参数
|
||||||
#[cfg(target_os = "windows")]
|
// macOS: new() 接受 4 参数(含 hidden 参数)
|
||||||
let auto_launch = AutoLaunch::new(app_name, &app_path.to_string_lossy(), &[] as &[&str]);
|
// Builder 模式自动处理这些差异
|
||||||
|
let auto_launch = AutoLaunchBuilder::new()
|
||||||
#[cfg(not(target_os = "windows"))]
|
.set_app_name(app_name)
|
||||||
let auto_launch = AutoLaunch::new(app_name, &app_path.to_string_lossy(), false, &[] as &[&str]);
|
.set_app_path(&app_path.to_string_lossy())
|
||||||
|
.build()
|
||||||
|
.map_err(|e| AppError::Message(format!("创建 AutoLaunch 失败: {e}")))?;
|
||||||
|
|
||||||
Ok(auto_launch)
|
Ok(auto_launch)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user