跳到正文

← 项目作品集

qq-chat-exporter · macOS 适配

开源贡献 · 2 个 PR 已合并2026已完成

  • Electron
  • macOS
  • Node.js
  • Shell

问题

qq-chat-exporter 的 Shell 模式在 macOS 上完全不可用:启动器用 child_process.fork() 重新执行 QQ 二进制并把 napcat.mjs 当作参数传入,这只对未打包的通用 Electron 有效。签名打包的 QQ.app 会忽略多余参数,于是 QQ 正常启动、NapCat 从未加载,启动器无限期挂起,没有任何报错。Linux 上的 LD_PRELOAD 方案也无法移植到 dyld。

修改

  • 改为修改 package.json 的 main 指向生成的 loader,让 QQ 自己的 Electron 进程加载 NapCat
  • 只作用于包目录下的私有副本 QQNapCatRuntime.app,从不修改用户的 /Applications/QQ.app;副本按 QQ 版本变化自动重建
  • ad-hoc 重签名且不带 --deep,保留嵌套 Frameworks 的原始签名(实测原地改真实 QQ.app 会破坏其日常使用)

结果

PR #621(2026-07-28)与修复 NapCat 版本探测静默回退的 PR #625(2026-07-29)已被上游合并,macOS Apple Silicon 用户可直接使用官方发布包。