首页 文章

如何在电子二进制文件中嵌入脚本?

提问于
浏览
1

我'm doing long-running computations in an electron app. I' m "forking"节点进程使用child_process.fork在单独的进程中执行脚本而不阻止渲染器进程 .

该应用程序工作正常,前提是我正在使用child_process.fork启动的脚本位于我喜欢的目录中,而是将脚本发送到二进制文件中(我使用electron-builder来构建一个) .

我感兴趣的是 .asar 存档 - 可以在运行时由二进制文件访问吗?

child_process.spawn并使用JS以外的语言也是一种选择,但问题仍然存在 - 我不知道如何将脚本嵌入到二进制文件中 .

1 回答

  • 2

    由于this response from another question,我解决了这个问题 .

    我已经添加

    node: {
        __dirname: true,
    },
    

    webpack.config.js 并使用 process.resourcesPath 来解析文件路径 .

    child_process.fork可以使用asar库,如果在asar存档中提供了脚本路径 . 为了实现这一点,我大致使用了

    import path from 'path';
    import { fork } from 'child_process';
    
    const scriptPath = path.join(process.resourcesPath!, 'app.asar', fileName);
    const args = [];
    const process = fork(scriptPath, args);
    

    另一方面,child.execFile可以利用asar库来生成asar存档中包含的二进制文件的进程 . 请注意,它只能解析二进制文件,而不能解析其参数,因此如果您想在电子应用程序中嵌入Python解释器和Python脚本,则应将其打包在单个二进制文件中,或者将脚本解压缩到文件系统并执行使用嵌入式Python二进制文件或将其内容加载到变量并使用 python -c "print(44)" 直接执行,并将脚本内容作为 -c 参数参数 .

相关问题