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 })
}