Files
xk-admin/apps/desktop/src/main/auto-launch.ts

31 lines
1.1 KiB
TypeScript
Raw Normal View History

import { app } from 'electron';
import log from 'electron-log/main';
/**
* 开机自启:基于系统登录项实现(Windows 写 HKCU\...\Run 注册表、mac 写「系统设置 → 登录项」),
* 无需管理员权限;系统登录项本身就是持久化存储,无需额外落盘记录状态。
*/
/** 读取当前开机自启状态(直接以系统登录项为准,避免自维护状态与系统不同步) */
export function getAutoLaunchEnabled(): boolean {
// 开发模式下登录项指向 electron 开发二进制,无意义,统一视为关闭
if (!app.isPackaged) return false;
return app.getLoginItemSettings().openAtLogin;
}
/**
* 设置开机自启
* --hidden 参数让开机自启时静默进托盘(主进程入口据此不弹主窗口),避免开机打扰
*/
export function setAutoLaunchEnabled(enable: boolean): boolean {
if (!app.isPackaged) {
log.warn('开发模式不支持设置开机自启(登录项会错误指向开发二进制)');
return false;
}
app.setLoginItemSettings({
openAtLogin: enable,
args: enable ? ['--hidden'] : [],
});
return getAutoLaunchEnabled();
}