Published on

Electron应用使用OSS实现自动更新

Authors
  • Name
    Twitter

配置步骤

1. 安装依赖

npm install electron-updater electron-log

2. 打包配置

// package.json
{
  "build": {
    "publish": [{
      "provider": "generic",
      "url": "https://your-bucket.oss-cn-region.aliyuncs.com/updates"
    }]
  }
}

3. 更新实现

// main.js
const { autoUpdater } = require('electron-updater')
const log = require('electron-log')

// 配置日志
log.transports.file.level = 'debug'
autoUpdater.logger = log

// 检查更新
autoUpdater.checkForUpdates()

// 监听更新事件
autoUpdater.on('update-available', (info) => {
  // 发现新版本
})

autoUpdater.on('download-progress', (progress) => {
  // 下载进度
})

autoUpdater.on('update-downloaded', () => {
  // 下载完成,安装更新
  autoUpdater.quitAndInstall()
})

OSS配置

1. 目录结构

your-bucket/
  └── updates/
      ├── win/
      │   ├── latest.yml
      │   └── app-1.0.0.exe
      └── mac/
          ├── latest-mac.yml
          └── app-1.0.0.dmg

2. 必要配置

  • CORS设置:允许所有来源
  • 权限设置:公共读或私有读
  • 必须启用HTTPS

发布更新

# 1. 打包应用
electron-builder --win --mac

# 2. 将dist目录下的文件上传到OSS对应目录

方案优势

  1. 简单高效

    • 不需要更新服务器
    • 利用OSS高可用性
    • 可配置CDN加速
  2. 成本低

    • 按量付费
    • 无需维护服务器