diff --git a/changelog.md b/changelog.md index 0804133..d21fa55 100644 --- a/changelog.md +++ b/changelog.md @@ -5,7 +5,9 @@ ### New Features - MacOS 支持自动设置系统DNS +- 调整UI细节 -### Performance Improvements +### Bug Fixes +- 修复更新内核后内核无法正常关闭的问题 - 优化规则/代理页面性能 diff --git a/package.json b/package.json index c3e3d13..b8345f7 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "@mihomo-party/sysproxy": "^2.0.1", "adm-zip": "^0.5.15", "axios": "^1.7.5", + "chokidar": "^3.6.0", "dayjs": "^1.11.13", "webdav": "^5.7.1", "ws": "^8.18.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fd03120..2840313 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: axios: specifier: ^1.7.5 version: 1.7.5 + chokidar: + specifier: ^3.6.0 + version: 3.6.0 dayjs: specifier: ^1.11.13 version: 1.11.13 diff --git a/src/main/core/manager.ts b/src/main/core/manager.ts index bdf289d..8d7e6f5 100644 --- a/src/main/core/manager.ts +++ b/src/main/core/manager.ts @@ -1,6 +1,7 @@ import { ChildProcess, exec, execFile, spawn } from 'child_process' import { logPath, + mihomoCoreDir, mihomoCorePath, mihomoTestDir, mihomoWorkConfigPath, @@ -15,9 +16,21 @@ import { } from '../config' import { dialog, safeStorage } from 'electron' import { pauseWebsockets, startMihomoTraffic } from './mihomoApi' +import chokidar from 'chokidar' import { writeFile } from 'fs/promises' import { promisify } from 'util' import { mainWindow } from '..' +import path from 'path' + +chokidar + .watch(path.join(mihomoCoreDir(), 'meta-update')) + .on('all', (event, path) => { + console.log(event, path) + }) + .on('unlinkDir', async () => { + await stopCore(true) + await startCore() + }) let child: ChildProcess let retry = 10 @@ -48,10 +61,6 @@ export async function startCore(): Promise { }) return new Promise((resolve, reject) => { child.stdout?.on('data', async (data) => { - if (data.toString().includes('updater: finished')) { - await stopCore() - await startCore() - } if (data.toString().includes('configure tun interface: operation not permitted')) { await patchControledMihomoConfig({ tun: { enable: false } }) mainWindow?.webContents.send('controledMihomoConfigUpdated') @@ -78,9 +87,11 @@ export async function startCore(): Promise { }) } -export async function stopCore(): Promise { +export async function stopCore(force = false): Promise { try { - await recoverDNS() + if (!force) { + await recoverDNS() + } } catch (error) { // todo } diff --git a/src/renderer/src/pages/mihomo.tsx b/src/renderer/src/pages/mihomo.tsx index 3db47eb..733b99f 100644 --- a/src/renderer/src/pages/mihomo.tsx +++ b/src/renderer/src/pages/mihomo.tsx @@ -77,7 +77,11 @@ const Mihomo: React.FC = () => { PubSub.publish('mihomo-core-changed') }, 2000) } catch (e) { - alert(e) + if (typeof e === 'string' && e.includes('already using latest version')) { + new Notification('已经是最新版本') + } else { + alert(e) + } } finally { setUpgrading(false) }