如何将第三方二进制文件与 Electron 捆绑在一起?

Posted

技术标签:

【中文标题】如何将第三方二进制文件与 Electron 捆绑在一起?【英文标题】:How to bundle a third party binary with Electron? 【发布时间】:2016-12-19 12:34:29 【问题描述】:

总的来说,我对电子生态系统和桌面开发仍然很陌生,但我想做的是与我的软件捆绑在一起的第三方开源应用程序进行交互。首先,我不确定要分发的软件包选项应该是什么。是否习惯有两个下载,一个用于已经安装了第三方二进制文件的用户,另一个用于包含它的用户?另外,我该如何进行实际打包和安装二进制文件?这应该是我的 package.json 的一个选项吗?我应该执行什么样的脚本?是否有任何 npm 模块来促进这一点?

edit - 即使用户之前没有安装节点,是否可以从我的 main.js 调用 npm?我知道 node 与电子包捆绑在一起,但 npm 也是?

-本例中的二进制是PostgreSQL

【问题讨论】:

也在寻找类似的答案。如果将某种存储与应用程序捆绑在一起,您可以只使用 SQLite,它只是一个 .sqlite 文件,因此不需要包含二进制文件。 看到这个类似的问题:***.com/questions/33152533/… 【参考方案1】:

我想到了几个选项。

    将第 3 方安装程序与您的应用程序捆绑在一起。这是我最近做的。在第一次运行时,我检查我需要的服务是否已安装/正在运行,如果没有,我会调用第 3 方安装程序/启动它。当安装程序退出时,我只需 app.relaunch() 并开始使用它。当然,您需要为您计划支持的每个平台安装安装程序。而且您必须想办法检查是否为每个平台(正确)安装了软件。

    与您的应用程序捆绑二进制文件。当然,您几乎可以将任何东西与您的电子应用程序捆绑在一起。同样,您需要为您计划支持的每个平台提供二进制文件。当然,它们不应该链接到默认用户在他的机器上没有的任何东西,比如 SDK 和额外的标头......

    不太舒服,但您始终可以添加一些启动消息或下载前消息,告诉用户他需要软件 xy 才能运行您的应用程序。

    1/2 的导数:按需下载所需内容。对于您的示例,这意味着检查用户的操作系统和架构,然后只需下载所需的安装程序或二进制文件(如果有)。你也可以在用户的​​机器上构建这些东西,尽管这可能是最糟糕/最大/最复杂的解决方案。

    然后是 https://www.npmjs.com/package/pg 之类的东西 - 如果有人已经构建了您需要的东西,您应该始终检查 npm ;)

我建议使用很棒的 electron-builder,它可以让你的应用程序捆绑东西变得轻而易举。

如果您需要更多情报,请随时发表评论。

【讨论】:

我认为这次讨论可能有助于深入了解这一点:***.com/questions/33152533/… 链接包是一个用于连接和查询postgres的客户端。它不能取代对二进制文件的需求。

以上是关于如何将第三方二进制文件与 Electron 捆绑在一起?的主要内容,如果未能解决你的问题,请参考以下文章

如何将预编译的二进制文件与电子捆绑在一起

将预编译的二进制文件捆绑到电子应用程序中

与 Webpack 捆绑的 Node 或 Electron 主进程的 VSCode 调试

如何在捆绑电子应用程序之前对其进行编码(对于Mac)?

如何将所有 python 代码捆绑到一个 zip 文件中?

如何让 2 个应用程序共享同一个 Dock 磁贴