diff --git a/changelog.md b/changelog.md index 486ed974..8da37ad2 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,4 @@ ### Bug Fixes - 修复macOS应用内更新后权限丢失的问题 +- 修复高版本macOS SSID获取失败的问题 diff --git a/src/main/resolve/autoUpdater.ts b/src/main/resolve/autoUpdater.ts index 980e7d83..ab763120 100644 --- a/src/main/resolve/autoUpdater.ts +++ b/src/main/resolve/autoUpdater.ts @@ -1,6 +1,6 @@ import axios from 'axios' import yaml from 'yaml' -import { app } from 'electron' +import { app, shell } from 'electron' import { getControledMihomoConfig } from '../config' import { dataDir, exeDir, exePath, isPortable, resourcesFilesDir } from '../utils/dirs' import { rm, writeFile } from 'fs/promises' @@ -85,23 +85,27 @@ export async function downloadAndInstallUpdate(version: string): Promise { app.quit() } if (file.endsWith('.dmg')) { - const execPromise = promisify(exec) - const name = exePath().split('.app')[0].replace('/Applications/', '') - await execPromise( - `hdiutil attach "${path.join(dataDir(), file)}" -mountpoint "/Volumes/mihomo-party" -nobrowse` - ) try { - await execPromise(`mv /Applications/${name}.app /tmp`) - await execPromise('cp -R "/Volumes/mihomo-party/mihomo-party.app" /Applications/') - await execPromise(`rm -rf /tmp/${name}.app`) - } catch (e) { - await execPromise(`mv /tmp/${name}.app /Applications`) - throw e - } finally { - await execPromise('hdiutil detach "/Volumes/mihomo-party"') + const execPromise = promisify(exec) + const name = exePath().split('.app')[0].replace('/Applications/', '') + await execPromise( + `hdiutil attach "${path.join(dataDir(), file)}" -mountpoint "/Volumes/mihomo-party" -nobrowse` + ) + try { + await execPromise(`mv /Applications/${name}.app /tmp`) + await execPromise('cp -R "/Volumes/mihomo-party/mihomo-party.app" /Applications/') + await execPromise(`rm -rf /tmp/${name}.app`) + } catch (e) { + await execPromise(`mv /tmp/${name}.app /Applications`) + throw e + } finally { + await execPromise('hdiutil detach "/Volumes/mihomo-party"') + } + app.relaunch() + app.quit() + } catch { + shell.openPath(path.join(dataDir(), file)) } - app.relaunch() - app.quit() } } catch (e) { rm(path.join(dataDir(), file)) diff --git a/src/main/sys/ssid.ts b/src/main/sys/ssid.ts index 5305de22..c13df256 100644 --- a/src/main/sys/ssid.ts +++ b/src/main/sys/ssid.ts @@ -3,7 +3,7 @@ import { promisify } from 'util' import { getAppConfig, patchControledMihomoConfig } from '../config' import { patchMihomoConfig } from '../core/mihomoApi' import { mainWindow } from '..' -import { ipcMain } from 'electron' +import { ipcMain, net } from 'electron' import { getDefaultService } from '../core/manager' export async function getCurrentSSID(): Promise { @@ -36,10 +36,16 @@ export async function getCurrentSSID(): Promise { } } } catch { - const service = await getDefaultService() - const { stdout } = await execPromise(`networksetup -getairportnetwork ${service}`) - if (stdout.split(': ').length > 1) { - return stdout.split(': ')[1].trim() + if (net.isOnline()) { + const service = await getDefaultService() + const { stdout } = await execPromise( + `networksetup -listpreferredwirelessnetworks ${service}` + ) + if (stdout.trim().startsWith('Preferred networks on')) { + if (stdout.split('\n').length > 1) { + return stdout.split('\n')[1].trim() + } + } } } }