首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Electron打包每个平台的不同二进制文件

为Electron打包每个平台的不同二进制文件
EN

Stack Overflow用户
提问于 2020-07-10 16:06:39
回答 1查看 140关注 0票数 2

我正在构建一个电子应用程序,我已经创建了一个用Go编写的小守护程序二进制文件,它将作为extraResource与应用程序一起打包。但是,根据平台的不同,需要打包此二进制文件的不同版本,特别是不带MacOS扩展名的Windows和agentagent.exe,以及与Mac相同的文件名。

我在项目根目录下的bin目录中有以下二进制文件:

代码语言:javascript
复制
├── bin/
│   ├── windows/
│   │   └── agent.exe
│   ├── mac/
│   │   └── agent
│   ├── linux/
│   │   └── agent

在测试Windows时,我包含了bin/windows目录,它工作得很好(包可以像预期的那样在资源目录中执行)

下面是我的package.json的相关片段

代码语言:javascript
复制
"build": {
  "win": {
    "icon": "build/app.ico",
    "target": [
      {
        "target": "nsis",
        "arch": [
          "x64"
        ]
      }
    ]
  },
  "nsis": {
    "include": "build/installer.nsh",
    "oneClick": false,
    "allowToChangeInstallationDirectory": true,
    "license": "build/eula.txt",
    "installerIcon": "build/app.ico",
    "artifactName": "...",
    "shortcutName": "..."
  },
  "extraResources": [
    "bin/windows/agent.exe"
  ]
}

有可能做到这一点吗?就像现在一样,我必须通过在不同的平台构建之间更改extraResources值来编辑package.json文件,这出于显而易见的原因是不理想的(因为我可能忘记了,并且由于忘记更改回来而最终包含了错误的二进制文件)。

请注意,我不支持32位Windows,因此所有Windows版本都将包含相同的(64位)二进制文件。

我用的是电子生成器19.50.0

EN

回答 1

Stack Overflow用户

发布于 2020-07-13 12:08:22

build目录添加三个新目录:winmaclinux,与上面的示例文件夹结构一样(将windows更改为win),并将所有特定于平台的二进制文件(以及需要随发行版打包的任何其他文件)添加到各自的目录中。

然后将以下内容添加到package.jsonbuild部分

代码语言:javascript
复制
"extraResources": [
  {
    "from": "bin/${os}",
    "to": "bin",
    "filter": [
      "**/*"
    ]
  }
]

打包后,这些文件将被添加到资源根目录的bin目录中,因此以下文件和目录将出现在resources目录中。在我的例子中,对于在dist/win-unpacked/resources中构建的windows包(相对于项目根目录)

代码语言:javascript
复制
app.asar.unpacked/
bin/
app.asar
electron.asar
elevate.exe

这样,在目标系统上安装应用程序后,即可使用process.resourcesPath在运行时访问该应用程序

代码语言:javascript
复制
const binaryFileName = process.platform == 'win32' ? 'binfile.exe' : 'binfile';
const binaryFile = path.join(process.resourcesPath, `bin/${binaryFileName}`);
...
spawn(binaryFile, [...args]);

在堆栈溢出上向此post致敬。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62829863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档