diff --git a/electron/main.ts b/electron/main.ts index b32882c..973c9a1 100644 --- a/electron/main.ts +++ b/electron/main.ts @@ -95,8 +95,13 @@ let keyService: any if (process.platform === 'darwin') { keyService = new KeyServiceMac() } else if (process.platform === 'linux') { - const { KeyServiceLinux } = require('./services/keyServiceLinux') - keyService = new KeyServiceLinux() + // const { KeyServiceLinux } = require('./services/keyServiceLinux') + // keyService = new KeyServiceLinux() + + import('./services/keyServiceLinux').then(({ KeyServiceLinux }) => { + keyService = new KeyServiceLinux(); + }); + } else { keyService = new KeyService() } diff --git a/electron/services/keyServiceLinux.ts b/electron/services/keyServiceLinux.ts index 14127ab..1d9e10b 100644 --- a/electron/services/keyServiceLinux.ts +++ b/electron/services/keyServiceLinux.ts @@ -3,7 +3,8 @@ import { join } from 'path' import { existsSync, readdirSync, statSync, readFileSync } from 'fs' import { execFile, exec } from 'child_process' import { promisify } from 'util' -import sudo from 'sudo-prompt' +import { createRequire } from 'module'; +const require = createRequire(import.meta.url); const execFileAsync = promisify(execFile) const execAsync = promisify(exec) @@ -12,6 +13,15 @@ type DbKeyResult = { success: boolean; key?: string; error?: string; logs?: stri type ImageKeyResult = { success: boolean; xorKey?: number; aesKey?: string; error?: string } export class KeyServiceLinux { + private sudo: any + + constructor() { + try { + this.sudo = require('sudo-prompt'); + } catch (e) { + console.error('Failed to load sudo-prompt', e); + } + } private getHelperPath(): string { const isPackaged = app.isPackaged @@ -99,7 +109,7 @@ export class KeyServiceLinux { const options = { name: 'WeFlow' } const command = `"${helperPath}" db_hook ${pid} ${targetAddr}` - sudo.exec(command, options, (error, stdout) => { + this.sudo.exec(command, options, (error, stdout) => { execAsync(`kill -CONT ${pid}`).catch(() => {}) if (error) { onStatus?.('授权失败或被取消', 2) diff --git a/package.json b/package.json index 7ab669a..f68aacc 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,6 @@ "linux": { "icon": "public/icon.png", "target": [ - "AppImage", "pacman", "deb", "tar.gz" @@ -131,6 +130,10 @@ "from": "public/icon.ico", "to": "icon.ico" }, + { + "from": "public/icon.png", + "to": "icon.png" + }, { "from": "electron/assets/wasm/", "to": "assets/wasm/"