diff --git a/src/main/sys/autoRun.ts b/src/main/sys/autoRun.ts index 6415b1f..ab9bd24 100644 --- a/src/main/sys/autoRun.ts +++ b/src/main/sys/autoRun.ts @@ -7,7 +7,8 @@ import path from 'path' const appName = 'mihomo-party' -const taskXml = ` +function getTaskXml(): string { + return ` @@ -48,6 +49,7 @@ const taskXml = ` ` +} export async function checkAutoRun(): Promise { if (process.platform === 'win32') { @@ -80,7 +82,7 @@ export async function enableAutoRun(): Promise { if (process.platform === 'win32') { const execPromise = promisify(exec) const taskFilePath = path.join(taskDir(), `${appName}.xml`) - await writeFile(taskFilePath, Buffer.from(`\ufeff${taskXml}`, 'utf-16le')) + await writeFile(taskFilePath, Buffer.from(`\ufeff${getTaskXml()}`, 'utf-16le')) await execPromise( `%SystemRoot%\\System32\\schtasks.exe /create /tn "${appName}" /xml "${taskFilePath}" /f` ) diff --git a/src/main/sys/misc.ts b/src/main/sys/misc.ts index e53695b..e8931a1 100644 --- a/src/main/sys/misc.ts +++ b/src/main/sys/misc.ts @@ -68,7 +68,8 @@ export function setNativeTheme(theme: 'system' | 'light' | 'dark'): void { nativeTheme.themeSource = theme } -const elevateTaskXml = ` +function getElevateTaskXml(): string { + return ` @@ -104,10 +105,11 @@ const elevateTaskXml = ` ` +} export function createElevateTask(): void { const taskFilePath = path.join(taskDir(), `mihomo-party-run.xml`) - writeFileSync(taskFilePath, Buffer.from(`\ufeff${elevateTaskXml}`, 'utf-16le')) + writeFileSync(taskFilePath, Buffer.from(`\ufeff${getElevateTaskXml()}`, 'utf-16le')) copyFileSync( path.join(resourcesFilesDir(), 'mihomo-party-run.exe'), path.join(taskDir(), 'mihomo-party-run.exe') diff --git a/src/main/utils/dirs.ts b/src/main/utils/dirs.ts index 0ea3566..738f8fb 100644 --- a/src/main/utils/dirs.ts +++ b/src/main/utils/dirs.ts @@ -18,7 +18,13 @@ export function dataDir(): string { } export function taskDir(): string { - const dir = path.join(app.getPath('userData'), 'tasks') + const userDataDir = app.getPath('userData') + // 确保 userData 目录存在 + if (!existsSync(userDataDir)) { + mkdirSync(userDataDir, { recursive: true }) + } + + const dir = path.join(userDataDir, 'tasks') if (!existsSync(dir)) { mkdirSync(dir, { recursive: true }) }