mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-06-16 13:34:04 +08:00
2a6980417b
Windows version of auto-launch crate takes 3 arguments while Linux/macOS takes 4 (includes hidden parameter). Use conditional compilation to handle the difference.
48 lines
1.5 KiB
Rust
48 lines
1.5 KiB
Rust
use crate::error::AppError;
|
|
use auto_launch::AutoLaunch;
|
|
|
|
/// 初始化 AutoLaunch 实例
|
|
fn get_auto_launch() -> Result<AutoLaunch, AppError> {
|
|
let app_name = "CC Switch";
|
|
let app_path =
|
|
std::env::current_exe().map_err(|e| AppError::Message(format!("无法获取应用路径: {e}")))?;
|
|
|
|
// Windows 平台的 AutoLaunch::new 只接受 3 个参数
|
|
// Linux/macOS 平台需要 4 个参数(包含 hidden 参数)
|
|
#[cfg(target_os = "windows")]
|
|
let auto_launch = AutoLaunch::new(app_name, &app_path.to_string_lossy(), &[] as &[&str]);
|
|
|
|
#[cfg(not(target_os = "windows"))]
|
|
let auto_launch = AutoLaunch::new(app_name, &app_path.to_string_lossy(), false, &[] as &[&str]);
|
|
|
|
Ok(auto_launch)
|
|
}
|
|
|
|
/// 启用开机自启
|
|
pub fn enable_auto_launch() -> Result<(), AppError> {
|
|
let auto_launch = get_auto_launch()?;
|
|
auto_launch
|
|
.enable()
|
|
.map_err(|e| AppError::Message(format!("启用开机自启失败: {e}")))?;
|
|
log::info!("已启用开机自启");
|
|
Ok(())
|
|
}
|
|
|
|
/// 禁用开机自启
|
|
pub fn disable_auto_launch() -> Result<(), AppError> {
|
|
let auto_launch = get_auto_launch()?;
|
|
auto_launch
|
|
.disable()
|
|
.map_err(|e| AppError::Message(format!("禁用开机自启失败: {e}")))?;
|
|
log::info!("已禁用开机自启");
|
|
Ok(())
|
|
}
|
|
|
|
/// 检查是否已启用开机自启
|
|
pub fn is_auto_launch_enabled() -> Result<bool, AppError> {
|
|
let auto_launch = get_auto_launch()?;
|
|
auto_launch
|
|
.is_enabled()
|
|
.map_err(|e| AppError::Message(format!("检查开机自启状态失败: {e}")))
|
|
}
|