Skip to content
On this page

轻量更新

现实问题

使用 electron 开发的应用经常为人所诟病的一点就在于它的体积,即使是被打包压缩成安装包也很难将体积压缩至 60MB 以下。这庞大的体积不仅是用户的噩梦,也是开发者的噩梦。如果应用需要更新,若是采取当下主流的更新方案,哪怕只是新增一个小小的功能点,也会要求用户下载完整的安装包进行安装。

creta 的诞生一方面就是为了解决这令人头痛的更新问题,我们尝试提出了一种轻量化的更新方案。

理论依据

asar 是一种简单的粗放存档格式,它的工作原理是将所有文件组合在一起,无需压缩,同时具备随机访问支持。而在 electron 中,我们所编写的所有代码都会被存放在 resources/app.asar 以及 resources/app.asar.unpacked (注:win32 平台,其他平台类似)下。整个应用内其他文件均为 electron 所需的运行时。

理论上,我们只需要替换 asar 文件,就能让我们的 electron 应用改头换面。

轻量更新

creta 使用 Rust 开发了一个小型的轻量更新器,它基于 Deflate 算法将更新所需的文件制作成更新包,并可以将其解包替换已存在的 electron 应用。相较于传统方案的全量更新,creta 带来的更新体验会有极高的提升。creta 提供的默认模板若是采用全量更新需要下载 65MB 左右的安装包,而使用轻量更新器则只需要下载一个 180KB 左右的更新包即可。

极致的更新体验

自定义更新方案

当然,虽然轻量更新默认开启,但是我们并不强制要求您使用轻量更新。您可以在 creta.config 中将 useCretaUpdater 设置为 false,这样一来我们便不会在您打包可执行程序时生成更新包,也不会往您的可执行程序中加入我们的更新器了。

同时,在 src/main/core/services/updateServices 下,存放着我们提供的基于轻量更新器的更新方案代码,您可以选择自行修改或是将其移除。