diff --git a/changelog.md b/changelog.md index 6de1c37..ba0c1f0 100644 --- a/changelog.md +++ b/changelog.md @@ -1,10 +1,3 @@ -### Features: - -- 支持编辑主题文件 -- 快捷键添加通知响应 -- 优化默认样式 - ### Bug Fixes -- 修复主题切换错乱的问题 -- 修复macOS自动授权错误 +- 修复某些mac无法开启开机启动的问题 diff --git a/src/main/sys/autoRun.ts b/src/main/sys/autoRun.ts index ee6f135..50507be 100644 --- a/src/main/sys/autoRun.ts +++ b/src/main/sys/autoRun.ts @@ -2,7 +2,6 @@ import { taskDir, exePath, homeDir } from '../utils/dirs' import { mkdir, readFile, rm, writeFile } from 'fs/promises' import { exec } from 'child_process' import { existsSync } from 'fs' -import { app } from 'electron' import { promisify } from 'util' import path from 'path' @@ -65,7 +64,11 @@ export async function checkAutoRun(): Promise { } if (process.platform === 'darwin') { - return app.getLoginItemSettings().openAtLogin + const execPromise = promisify(exec) + const { stdout } = await execPromise( + `osascript -e 'tell application "System Events" to get the name of every login item'` + ) + return stdout.includes(exePath().split('.app')[0].replace('/Applications/', '')) } if (process.platform === 'linux') { @@ -82,9 +85,10 @@ export async function enableAutoRun(): Promise { await execPromise(`schtasks /create /tn "${appName}" /xml "${taskFilePath}" /f`) } if (process.platform === 'darwin') { - app.setLoginItemSettings({ - openAtLogin: true - }) + const execPromise = promisify(exec) + await execPromise( + `osascript -e 'tell application "System Events" to make login item at end with properties {path:"${exePath().split('.app')[0]}.app", hidden:false}'` + ) } if (process.platform === 'linux') { let desktop = ` @@ -117,9 +121,10 @@ export async function disableAutoRun(): Promise { await execPromise(`schtasks /delete /tn "${appName}" /f`) } if (process.platform === 'darwin') { - app.setLoginItemSettings({ - openAtLogin: false - }) + const execPromise = promisify(exec) + await execPromise( + `osascript -e 'tell application "System Events" to delete login item "${exePath().split('.app')[0].replace('/Applications/', '')}"'` + ) } if (process.platform === 'linux') { const desktopFilePath = path.join(homeDir, '.config', 'autostart', `${appName}.desktop`)