如何使用电子/电子生成器创建发布通道?

Posted

技术标签:

【中文标题】如何使用电子/电子生成器创建发布通道?【英文标题】:How to create release channels with electron/electron-builder? 【发布时间】:2017-04-08 14:38:38 【问题描述】:

我有一个Electron 应用程序,我想在其中引入并行发布渠道:stablenext(用于早期采用者)和dev(用于测试最新版本)。

它们每个都有一个分支,新功能首先出现在 dev,然后进入 next 进行 beta 测试,最后进入 stable

我正在使用electron-builder 来制作这些发布包,并且我希望每个包都有自己的自动更新 - 所以当我发布新的next 发布时,所有使用它的用户都会得到更新。

我希望应用程序是独立的 - 用户可以安装两个频道并同时运行这两个频道。它们会有不同的名称和不同的图标。

我可以在分支中手动设置这些,但我真的想尽可能地自动化 - 从next 分支发布应该使用正确的名称、图标、ID 和更新程序,而不会有风险错误的频道。

有没有办法用电子或电子生成器做到这一点?

【问题讨论】:

【参考方案1】:

electron-builder 可以。我会有几个构建配置,并告诉electron-builder 在构建时使用哪个。

例如,使用以下设置创建文件 config/beta.json


  "appId": "com.company.beta",
  "productName": "App Beta",
  "directories": 
    "buildResources": "build/beta" // directory containing your build-specific assets (e.g., beta icons - icon.icns, icon.ico & background.png)
  ,
  "mac": 
    "category": "public.app-category.finance"
  ,
  "win": 
    "target": [
      "nsis"
    ]
  ,
  "nsis": 
    "perMachine": false
  ,
  "publish": [
    
      "provider": "s3",
      "bucket": "com-app-beta" // dedicated S3 bucket for each build
    
  ],

并为next.jsoncurrent.json 复制config/beta.json(确保相应地编辑设置)。

package.json 中,添加以下构建脚本(注意--em.name=app-beta 会覆盖package.json 的“名称”值):


    "scripts": 
        "build": "build -owl --x64 --config ./config/current.json -p always --em.name=app",
        "build-beta": "build -owl --x64 --config ./config/beta.json -p always --em.name=app-beta",
        "build-next": "build -owl --x64 --config ./config/next.json -p always --em.name=app-next"
    

准备好部署时运行构建脚本:

npm run build-beta

【讨论】:

【参考方案2】:

使用 electron-builder 版本 20.15.1 和 MacOS,@Jon Saw 的解决方案需要稍作更改,因为 em 选项无效:

"build-beta": "build -owl --x64 --config ./config/beta.json -p always -c.extraMetadata.name=app-beta"

【讨论】:

您好,感谢您的反馈,欢迎来到 SO。作为对 Jon Saw 答案的评论,这会更好,因为这样他们会收到通知。

以上是关于如何使用电子/电子生成器创建发布通道?的主要内容,如果未能解决你的问题,请参考以下文章

使用电子生成器构建电子时如何排除文件?

如何从电子生成器参数化 msi 文件

易宝典——玩转O365中的EXO服务 之四十一 如何生成就地电子数据展示搜索结果

如何使用电子更新器自动更新电子应用程序?

即使缺少预期的附件,如何生成电子邮件?

如何在电子的生产版本上运行闪存?