electron 自动更新之路总结(上)版本管理服务器

花了我将近一个星期才最终把 electron 自动更新走通,其中无数卧槽。整体方案是 electron 14 + electron-release-server + electron-updater + electron-builder. 现做个总结,分上下两部分,上部分讲服务器,下部分讲客户端+electron-updater以及如何打包。

electron-release-server

官网地址 GitHub - ArekSredzki/electron-release-server: A fully featured, self-hosted release server for electron applications, compatible with auto-updater.

nodejs 开发的服务。先说优点:使用简单,零配置,除了数据库和管理员账号密码;上传安装包自动生成 latest.yml ;支持 nsis 、squerrel 更新。

再说缺点:不支持range download,不支持差异比较下载;不支持 useMultipleRangeRequest . 对于使用 NSIS 方式不支持指定 flavor。偶尔还有内存泄漏(希望后续版本修复)。

尤其是不支持指定 flavour 非常难受。ers 只支持 flavour 为 default 的自动更新,在 NSIS 的方式下。话句话说,起一个服务只能用于 1 个APP的自动升级。第二个APP 怎么办?再起一个服务呗。。。

安装过程:

$ git clone https://github.com/ArekSredzki/electron-release-server.git
$ cd electron-release-server
## 配置文件
$ cd ./config
$ mv local.template local.js
## 修改 local.js
# 管理员账号密码
    static: {
      username: '账号',
      password: '密码'
    },
# 数据库
mysql: {...}
# session
session : {...}
# 文件目录
files: {
    dirname: 上传文件保存的位置
}
## 修改 config/env/development.js  config/env/production.js
# 使用 mysql 数据库。
models: {
    connection: 'mysql'
}
## 启动
npm run --prod


启动后自动创建数据库。

管理软件版本

发布软件版本非常简单,就不一一赘述了。提一提容易踩坑的地方。

版本可用时间 Availability 的问题

默认为当前时间。可往后设置,但不能往前设置。但实际使用中发现问题,刚发布的版本总是检测不到。于是尝试在数据库把version.avalability 字段往前调了 8 小时,奇迹般能检测到了。所以有理由怀疑是时区差异的导致。这应该是个 bug。截至撰文时该 bug 没有修复。

 NSIS 下载的问题

使用 NSIS 方式更新可检测到更新,并且启动下载。可问题来了,实际下载的文件比真实的安装包大了好几倍,最要命还更新不了。细究发现是客户端使用了分段下载的方式(range download),而 ers 并不支持分段下载,因此每个请求都是下载完整的文件。那好办,关闭分段下载就可以了吧?不不不,electron-updater 并没有任何关闭 range download 的配置。#@¥%…!

再经过研究,nsis 的差异比较下载是依赖打包生成的 *.blockmap 文件的。于是发布新版本时不上传 blockmap 文件,结果 electron 顺利下载更新升级。只不过下载的是完整安装包。

上篇完。下篇讲客户端如何配置自动升级,以及打包成安装包。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
根据引用的内容,实现 Electron 自动更新的步骤如下: 1. 首先,需要使用 electron-builder 和 electron-updater 来实现自动更新效果。在 Windows 环境中,可以使用 electron-builder 配合 electron-updater 来进行自动更新。 2. 使用 electron-builder 构建生成 `latest.yml`(mac 软件是 `latest-mac.yml`)以及安装包等文件。在构建完成后,将这些文件放在一个静态资源服务器上,并指向这些文件的根路径。 3. 项目启动后,在 Electron 应用中使用 electron-updater 来检查更新。如果检测到有新的版本可用,electron-updater 会自动进行更新操作。 具体操作步骤如下: 1. 安装 electron-builder。在命令行中运行 `npm install electron-builder --save-dev`。 2. 将 `latest.yml`(mac 软件是 `latest-mac.yml`)以及安装包放置在一个可以访问的地方,例如 GitHub 或自己的服务器。确保路径能够被访问到。 3. 安装 electron-updater。在命令行中运行 `npm install electron-updater --save`。 4. 安装 electron-log。在命令行中运行 `npm install electron-log`。 5. 根据自己的项目框架,安装相应的依赖。例如,如果使用 Electron 和 Vue 进行开发,可以通过命令行安装 electron 和 vue:`npm i electron` 和 `npm i vue`。 6. 在项目中引入 electron-updater,并使用其提供的方法来检查更新。根据 electron-updater 的文档进行配置和使用。 总结来说,以上是实现 Electron 自动更新的步骤。通过使用 electron-builder 构建程序并将相关文件放置在可访问的地方,再使用 electron-updater 进行自动更新的检查和操作,就可以实现 Electron 自动更新的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Electron自动更新](https://blog.csdn.net/minshiwang/article/details/126887948)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [使用electron-update实现electron应用的自动更新](https://blog.csdn.net/qq_45279180/article/details/118362287)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值