You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何减小Electron.js可执行文件(.exe)的后续更新包体积?

Electron应用差分更新与更新包体积优化方案

一、用官方工具快速实现差分更新

Electron生态里的electron-updater自带差分更新支持,不用自己造轮子,能自动生成仅包含变更内容的更新包,配置起来很简单:

  • 先安装依赖:npm install electron-updater electron-builder --save-dev
  • 在package.json的build字段里开启差分更新并配置发布地址:
    "build": {
      "appId": "com.your.app.id",
      "publish": [
        {
          "provider": "generic",
          "url": "https://your-update-server.com/releases/"
        }
      ],
      "differentialUpdates": true
    }
    
  • 主进程里加自动更新逻辑:
    const { autoUpdater } = require('electron-updater');
    
    // 检查更新并通知用户
    autoUpdater.checkForUpdatesAndNotify();
    
    // 下载完成后提示重启安装
    autoUpdater.on('update-downloaded', () => {
      autoUpdater.quitAndInstall();
    });
    

这个方案会自动对比新旧版本的文件,只生成差异部分的更新包,默认支持exe的差分更新。

二、拆分应用模块,缩小核心更新范围

把非核心、大体积的内容从主程序包中剥离,更新时只动核心部分:

  • 用asarUnpack把大依赖、静态资源拆到asar包外:
    "build": {
      "asarUnpack": [
        "node_modules/echarts/**/*",
        "static/offline-docs/**/*"
      ]
    }
    
    这些文件不会打包进主asar,更新时如果没变化就不用重新下载。
  • 把非核心功能做成动态插件,放在单独的plugins目录,更新时只替换对应的插件文件,不用碰主程序。

三、自定义差分逻辑,精准控制更新内容

如果需要更灵活的控制,可以自己实现版本文件对比:

  • 构建新版本时,生成所有文件的哈希清单version-hash.json,记录每个文件的路径和SHA256哈希值。
  • 客户端检查更新时,把当前版本的哈希清单发给服务器,服务器对比新旧版本的哈希,找出变更的文件。
  • 客户端只下载这些变更文件,替换本地对应路径的文件,替换完成后重启应用。
  • 注意要处理文件锁定问题,比如替换前关闭相关进程,或者用临时文件替换后重启生效。

四、优化Electron基础镜像,减少初始体积

从根源缩小主程序体积,间接降低更新包大小:

  • 自定义编译Electron,移除不需要的Chromium组件,比如禁用PDF支持、WebRTC、音频视频解码模块(如果应用用不上)。
  • 优先选择LTS版本的Electron,避免新版本引入的冗余特性。
  • 清理项目中未使用的依赖,用npm prune --production移除开发依赖,减少打包体积。

内容的提问来源于stack exchange,提问作者Arun Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 12:52:23