diff --git a/packages/gui/package.json b/packages/gui/package.json index b3605a4..a47595d 100644 --- a/packages/gui/package.json +++ b/packages/gui/package.json @@ -24,10 +24,10 @@ "@docmirror/mitmproxy": "workspace:*", "@mihomo-party/sysproxy": "^2.0.4", "@natmri/platform-napi": "^0.0.7", + "@vscode/sudo-prompt": "^9.3.1", "adm-zip": "^0.5.16", "ant-design-vue": "^1.7.8", "electron-baidu-tongji": "^1.0.5", - "electron-sudo": "^4.0.12", "electron-updater": "^6.3.9", "json5": "^2.2.3", "lodash": "^4.17.21", diff --git a/packages/gui/src/bridge/api/open-enable-loopback.js b/packages/gui/src/bridge/api/open-enable-loopback.js index a669643..6fa9054 100644 --- a/packages/gui/src/bridge/api/open-enable-loopback.js +++ b/packages/gui/src/bridge/api/open-enable-loopback.js @@ -1,14 +1,33 @@ +/* global __static */ import DevSidecar from '@docmirror/dev-sidecar' -import Sudoer from 'electron-sudo' +import sudoPrompt from '@vscode/sudo-prompt' +import { join } from 'node:path' +import { log } from '../../utils/util.log' export default { - async open () { - const options = { name: '设置loopback' } - const sudoer = new Sudoer(options) + open () { + const options = { + name: '设置loopback', + icns: process.platform === 'darwin' ? join(__static, 'icon.icns') : undefined, + env: { PARAM: 'VALUE' }, + } const exeFile = DevSidecar.api.shell.extraPath.getEnableLoopbackPath() - await sudoer.exec( - exeFile, - { env: { PARAM: 'VALUE' } }, - ) + return new Promise((resolve, reject) => { + sudoPrompt.exec( + exeFile, + options, + (error, _, stderr) => { + if (stderr) { + log.error(`[sudo-prompt] 发生错误: ${stderr}`) + } + + if (error) { + reject(error) + } else { + resolve(undefined) + } + }, + ) + }) }, } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 555e030..ea75064 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -75,6 +75,9 @@ importers: '@natmri/platform-napi': specifier: ^0.0.7 version: 0.0.7 + '@vscode/sudo-prompt': + specifier: ^9.3.1 + version: 9.3.1 adm-zip: specifier: ^0.5.16 version: 0.5.16 @@ -84,9 +87,6 @@ importers: electron-baidu-tongji: specifier: ^1.0.5 version: 1.0.5 - electron-sudo: - specifier: ^4.0.12 - version: 4.0.12 electron-updater: specifier: ^6.3.9 version: 6.3.9 @@ -1773,6 +1773,9 @@ packages: vitest: optional: true + '@vscode/sudo-prompt@9.3.1': + resolution: {integrity: sha512-9ORTwwS74VaTn38tNbQhsA5U44zkJfcb0BdTSyyG6frP4e8KMtHuTXYmwefe5dpL8XB1aGSIVTaLjD3BbWb5iA==} + '@vue/babel-helper-vue-jsx-merge-props@1.4.0': resolution: {integrity: sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==} @@ -8940,6 +8943,8 @@ snapshots: optionalDependencies: typescript: 5.6.3 + '@vscode/sudo-prompt@9.3.1': {} + '@vue/babel-helper-vue-jsx-merge-props@1.4.0': {} '@vue/babel-helper-vue-transform-on@1.2.5': {}