本文档描述了 draw.io 桌面应用程序中的更新系统,该系统负责检查、下载和安装应用程序的新版本。更新系统构建在 Electron 的更新功能之上,通过 electron-updater 包,并旨在针对不同的部署场景进行配置。
更新系统通过检查 GitHub release 来获取新版本,并提供用户可配置的选项来控制更新行为。
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
更新系统可以通过多种方式进行配置,以适应不同的部署场景和用户偏好。
可以通过多种机制禁用更新:
disableUpdate.jsDRAWIO_DISABLE_UPDATE=true--disable-update应用程序在启动时会检查这些来源,以确定是否应禁用更新。
disableUpdate.js 模块在构建过程中会由 sync.cjs 修改,以便在构建时启用或禁用更新。
源码:src/main/electron.js19-23 src/main/disableUpdate.js1-4 sync.cjs15-16
可以通过以下方式启用静默更新:
DRAWIO_SILENT_UPDATE=true--silent-update启用静默更新后,应用程序将自动下载和安装更新,无需用户干预。
更新系统使用 electron-store 来持久化用户偏好。
当用户在更新对话框中选择“不再询问”时,此偏好会被存储。
源码:src/main/electron.js1374-1375 src/main/electron.js1135-1138
源码:src/main/electron.js985-1005 src/main/electron.js1259-1277 src/main/electron.js1052-1055 src/main/electron.js1072
源码:src/main/electron.js1276-1370
更新系统提供多个用户通知:
无可用更新:
有可用更新:
更新已下载:
源码:src/main/electron.js996-1003 src/main/electron.js1263-1270 src/main/electron.js1355-1368
更新系统使用 electron-progressbar 来显示下载进度。
进度条显示:
源码:src/main/electron.js1276-1347
更新系统通过 IPC 事件公开功能,用于与渲染器进程集成。
| 事件名称 | 描述 |
|---|---|
checkForUpdates | 从渲染器调用时触发更新检查。 |
update-available | 当有可用更新时触发。 |
update-downloaded | 更新下载完成后触发。 |
download-progress | 提供下载进度信息。 |
IPC 注册示例
源码:src/main/electron.js1072 src/main/electron.js985-1005
更新系统已集成到应用程序菜单系统中,提供一个菜单项用于手动检查更新。
此菜单项会根据条件包含在应用程序菜单中,除非更新被禁用。
来源: src/main/electron.js1052-1055 src/main/electron.js1090 src/main/electron.js1116-1119
更新系统配置为使用 GitHub 作为更新提供商
此配置告知更新器在 jgraph/drawio-desktop GitHub 仓库中查找发布版本。