菜单

更新系统

相关源文件

本文档描述了 draw.io 桌面应用程序中的更新系统,该系统负责检查、下载和安装应用程序的新版本。更新系统构建在 Electron 的更新功能之上,通过 electron-updater 包,并旨在针对不同的部署场景进行配置。

更新系统通过检查 GitHub release 来获取新版本,并提供用户可配置的选项来控制更新行为。

1. 更新系统架构

draw.io 桌面版的更新系统已集成到主应用程序流程中,并使用 electron-updater 与 GitHub releases 进行交互以交付更新。

更新系统组件

源码:src/main/electron.js11-30 src/main/electron.js1129-1138 src/main/disableUpdate.js1-4

更新系统初始化

源码:src/main/electron.js11-30 src/main/electron.js1129-1138 src/main/disableUpdate.js1-4

2. 配置选项

更新系统可以通过多种方式进行配置,以适应不同的部署场景和用户偏好。

2.1 禁用更新

可以通过多种机制禁用更新:

  1. 代码级配置:通过 disableUpdate.js
  2. 环境变量:设置 DRAWIO_DISABLE_UPDATE=true
  3. 命令行参数:运行带有 --disable-update
  4. Flatpak 检测:在 flatpak 环境中自动禁用

应用程序在启动时会检查这些来源,以确定是否应禁用更新。

disableUpdate.js 模块在构建过程中会由 sync.cjs 修改,以便在构建时启用或禁用更新。

源码:src/main/electron.js19-23 src/main/disableUpdate.js1-4 sync.cjs15-16

2.2 静默更新

可以通过以下方式启用静默更新:

  1. 环境变量:设置 DRAWIO_SILENT_UPDATE=true
  2. 命令行参数:运行带有 --silent-update

启用静默更新后,应用程序将自动下载和安装更新,无需用户干预。

源码:src/main/electron.js24-30

2.3 偏好设置存储

更新系统使用 electron-store 来持久化用户偏好。

当用户在更新对话框中选择“不再询问”时,此偏好会被存储。

源码:src/main/electron.js1374-1375 src/main/electron.js1135-1138

3. 更新流程

3.1 更新检查流程

源码:src/main/electron.js985-1005 src/main/electron.js1259-1277 src/main/electron.js1052-1055 src/main/electron.js1072

3.2 下载和安装流程

源码:src/main/electron.js1276-1370

4. 用户界面元素

4.1 更新通知

更新系统提供多个用户通知:

  1. 无可用更新:

    • 手动检查更新时显示对话框,如果没有找到更新。
    • 消息:“您的应用程序是最新版本”
  2. 有可用更新:

    • 找到更新时显示对话框(除非处于静默模式)。
    • 提供下载或跳过更新的选项。
    • 包含“不再询问”选项以禁用后续检查。
  3. 更新已下载:

    • 更新下载完成后显示对话框。
    • 提供立即安装或在下次重启时安装的选项。

源码:src/main/electron.js996-1003 src/main/electron.js1263-1270 src/main/electron.js1355-1368

4.2 进度指示器

更新系统使用 electron-progressbar 来显示下载进度。

进度条显示:

  1. 下载开始时的初始不确定进度。
  2. 下载期间显示百分比的确定进度。
  3. 下载失败时的错误消息。

源码:src/main/electron.js1276-1347

5. API 和集成

5.1 IPC 事件

更新系统通过 IPC 事件公开功能,用于与渲染器进程集成。

事件名称描述
checkForUpdates从渲染器调用时触发更新检查。
update-available当有可用更新时触发。
update-downloaded更新下载完成后触发。
download-progress提供下载进度信息。

IPC 注册示例

源码:src/main/electron.js1072 src/main/electron.js985-1005

5.2 菜单集成

更新系统已集成到应用程序菜单系统中,提供一个菜单项用于手动检查更新。

此菜单项会根据条件包含在应用程序菜单中,除非更新被禁用。

来源: src/main/electron.js1052-1055 src/main/electron.js1090 src/main/electron.js1116-1119

6. GitHub 发布配置

更新系统配置为使用 GitHub 作为更新提供商

此配置告知更新器在 jgraph/drawio-desktop GitHub 仓库中查找发布版本。

来源: src/main/electron.js1129-1133