【问题标题】:How to embed a script in electron binary?如何在电子二进制文件中嵌入脚本?
【发布时间】:2019-02-21 12:05:35
【问题描述】:

我正在一个电子应用程序中进行长时间运行的计算。我正在使用child_process.fork“分叉”节点进程以在单独的进程中执行脚本,而不是阻塞渲染器进程。

如果我使用 child_process.fork 启动的脚本位于我启动它的目录中,则该应用程序运行良好。我想做的是将脚本发送到二进制文件中(我使用electron-builder 构建一个)。

我发现构建器将所有内容(包括我感兴趣的脚本)打包到 .asar 存档中 - 二进制文件可以在运行时访问它吗?

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

【问题讨论】:

    标签: electron


    【解决方案1】:

    感谢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 参数参数直接执行。

    【讨论】:

      猜你喜欢
      • 2011-09-04
      • 2012-05-16
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 2015-04-14
      相关资源
      最近更新 更多