From 6f3b60ef2c232717534974f837175a40a2e99c66 Mon Sep 17 00:00:00 2001 From: H3CoF6 <1707889225@qq.com> Date: Fri, 20 Mar 2026 06:44:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dlinux=E6=89=93?= =?UTF-8?q?=E5=8C=85=E5=90=8E=E6=97=A0=E6=B3=95=E6=8B=89=E8=B5=B7wechat?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/services/keyServiceLinux.ts | 36 ++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/electron/services/keyServiceLinux.ts b/electron/services/keyServiceLinux.ts index 1d9e10b..3af9ddf 100644 --- a/electron/services/keyServiceLinux.ts +++ b/electron/services/keyServiceLinux.ts @@ -4,6 +4,7 @@ import { existsSync, readdirSync, statSync, readFileSync } from 'fs' import { execFile, exec } from 'child_process' import { promisify } from 'util' import { createRequire } from 'module'; +import { spawn } from 'child_process' const require = createRequire(import.meta.url); const execFileAsync = promisify(execFile) @@ -51,12 +52,37 @@ export class KeyServiceLinux { await new Promise(r => setTimeout(r, 1000)) onStatus?.('正在尝试拉起微信...', 0) - const startCmds = [ - 'nohup wechat >/dev/null 2>&1 &', - 'nohup wechat-bin >/dev/null 2>&1 &', - 'nohup xwechat >/dev/null 2>&1 &' + + const cleanEnv = { ...process.env }; + delete cleanEnv.ELECTRON_RUN_AS_NODE; + delete cleanEnv.ELECTRON_NO_ATTACH_CONSOLE; + delete cleanEnv.APPDIR; + delete cleanEnv.APPIMAGE; + + const wechatBins = [ + 'wechat', + 'wechat-bin', + 'xwechat', + '/opt/wechat/wechat', + '/usr/bin/wechat', + '/opt/apps/com.tencent.wechat/files/wechat' ] - for (const cmd of startCmds) execAsync(cmd).catch(() => {}) + + for (const binName of wechatBins) { + try { + const child = spawn(binName, [], { + detached: true, + stdio: 'ignore', + env: cleanEnv + }); + + child.on('error', () => {}); + + child.unref(); + } catch (e) { + + } + } onStatus?.('等待微信进程出现...', 0) let pid = 0