31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
|
|
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();
|
|||
|
|
}
|