Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: Mac系统无法执行外部程序 #291

Open
3 of 4 tasks
jiongjiongJOJO opened this issue Jul 7, 2024 · 6 comments
Open
3 of 4 tasks

[Bug]: Mac系统无法执行外部程序 #291

jiongjiongJOJO opened this issue Jul 7, 2024 · 6 comments
Labels
bug 某些功能无法正常工作

Comments

@jiongjiongJOJO
Copy link
Contributor

jiongjiongJOJO commented Jul 7, 2024

请确保您已阅读以上注意事项,并勾选下方的确认框。

  • 该问题是由轻量工具箱单独引起。
  • 该问题是由多个插件之间互不兼容引起。
  • 我已经尝试过删除插件的配置文件并重启 QQ,问题依旧存在。
  • 我已经在 Issue Tracker 中找过我要提出的问题,没有找到相同问题的 issue。

QQNT 版本

6.9.38-24815

LiteLoaderQQNT 版本

2.30.10(仓库最新代码也不行1411c48)

轻量工具箱 版本

1.1.2

运行环境

MacOS

已安装插件列表(如果你不确定问题出在哪里建议填写)

只有一个lite-tools

重现步骤

使用tg下载贴纸(无论是视频格式调用ffmpeg还是动画格式调用tgs转换工具都会出现)

期望的结果是什么?

spawn正常处理外部程序

实际的结果是什么?

视频(ffmpeg):

下载贴纸包失败 spawn EPERM Error: spawn EPERM
    at ChildProcess.spawn (node:internal/child_process:414:11)
    at spawn (node:child_process:784:9)
    at /Users/jojo/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader/plugins/lite_tools/dist/main.js:22087:28
    at proto._getFfmpegPath (/Users/jojo/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader/plugins/lite_tools/dist/main.js:22477:18)
    at proto._spawnFfmpeg (/Users/jojo/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader/plugins/lite_tools/dist/main.js:22073:14)
    at proto.availableCodecs.proto.getAvailableCodecs (/Users/jojo/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader/plugins/lite_tools/dist/main.js:22648:14)
    at FfmpegCommand.availableCodecs.FfmpegCommand.getAvailableCodecs (/Users/jojo/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader/plugins/lite_tools/dist/main.js:23432:27)
    at supportEncoding (/Users/jojo/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader/plugins/lite_tools/dist/main.js:26825:42)
    at new Promise (<anonymous>)
    at getTgSticker (/Users/jojo/Library/Containers/com.tencent.qq/Data/Documents/LiteLoader/plugins/lite_tools/dist/main.js:26824:41)

贴纸(tgs):

下载出错 Error: spawn EPERM

贴纸没有输出完整的堆栈错误信息,刚刚调试的时候看了错误跟上面的类似,都是在ChildProcess.spawn时报的错误,替换到Relese版本了,就没有记录相关的错误信息

补充说明(可选)

这里有个测试的脚本,能够正确输出结果,说明mac是支持execFile指令的。

const { execFile } = require('child_process');

execFile('ls', (error, stdout, stderr) => {
  if (error) {
    console.error("ls 执行出错:", stderr);
  }
  console.log("ls 执行完成:", stdout);
});

截屏2024-07-07 19 00 31

@jiongjiongJOJO jiongjiongJOJO added the bug 某些功能无法正常工作 label Jul 7, 2024
@jiongjiongJOJO
Copy link
Contributor Author

这个错误跟权限有关系,有没有mac大佬看一下是不是要配置什么权限
截屏2024-07-07 19 04 32
截屏2024-07-07 19 05 16

参考了这篇文章说的解决方案,还是没解决这个问题:https://www.jianshu.com/p/fee56ccc24a5

@jiongjiongJOJO
Copy link
Contributor Author

@xiyuesaves 要不针对Mac换成Post请求的方式,需要用户手动开启mac端的转换程序,然后再进行下载tg贴纸😤😫

@xiyuesaves
Copy link
Owner

或许可以尝试使用 wasm 模块来解决这个问题?

@LanYunDev
Copy link

官方签名的QQ应用,开启了应用沙盒,导致在容器内无法访问外部文件

@LanYunDev
Copy link

你可以尝试将代码文件移动到应用容器中运行.
open /Users/$(whoami)/Library/Containers/com.tencent.qq/Data/Documents/
这个命令在终端运行,打开的文件夹就是QQ的容器,另外解决办法是自签名(可能会有些奇怪的问题,我是这样做的,但有点麻烦,建议自行解决)

@LanYunDev
Copy link

LanYunDev commented Nov 2, 2024

参考了这篇文章说的解决方案,还是没解决这个问题:https://www.jianshu.com/p/fee56ccc24a5

回复:

看了下这文章内容,等效意思就是 sudo /usr/bin/xattr -rd com.apple.quarantine /Applications/QQ.app或者sudo xattr -cr /Applications/QQ.app
但是别这样做,因为QQ用的electron,丢代码签名信息,不使用沙盒,会导致GPU/NET等调用问题,从而导致无法启动.
(个人拙见,欢迎指正.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug 某些功能无法正常工作
Projects
None yet
Development

No branches or pull requests

3 participants