# electron-delta-update-sample **Repository Path**: xuezhyproject/electron-delta-update-sample ## Basic Information - **Project Name**: electron-delta-update-sample - **Description**: electron增量更新,包括全量及强制更新,非单独app.asar文件,包含对第三方exe及dll的更新 - **Primary Language**: JavaScript - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2026-02-10 - **Last Updated**: 2026-02-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 关于打包时的【增量更新】、【全量更新】及【强制更新】说明 # electron-delta-update-sample #### 介绍 electron增量更新(electron-delta-update),包括全量及强制更新,非单独app.asar文件,包含对第三方exe及dll的更新,可选择安装路径 #### 软件架构 electron+vue2 # 实现思路 1. 参照例(https://github.com/electron-delta/electron-sample-app),将使用的node_modules【@electron-delta】及.electron-delta.js直接引入到了工程中,并对大量应代码进行了修改,尤其是其中的builder和updater模块,installer.nsi文件修改支持了文件夹选择安装功能(原代码只是oneclick为true的安装); 2. checkEnv.nsh中固定安装时注册表key:【com.yf-pc-chat-yfx.install-guid】,用于升级时读取原安装路径; package.json及vue.config.js中固定卸载时注册表key:【guid: 'com.yf-pc-chat-yfx.uninstall-guid'】,用于更新控制面板中的显示版本和size信息 3. 安装和卸载时为显示详情,需要使用beforePack.js在打包前将myInstallSection.nsh文件回写到node_modules【app-builder-lib\templates\nsis\】中,具体在vue.config.js中配置【beforePack: './scripts/beforePack.js'】; 4. 由于installer.nsi文件中包含中文,需要保存为utf-8 bom格式,但原语言文件为utf8格式,编辑会报错,另存文件【SimpChineseCustomized.nsh->SimpChinese.nsh、SimpChinese.nlf->SimpChineseCustomized.nlf】为utf-8 bom格式并引入installer.nsi,放入【C:\Users\Administrator\AppData\Roaming\electron-delta-bins\nsis-3.0.5.0\Contrib\Language files】中,另存后的文件也存到了script文件夹中,以备后需,未使用beforePack.js进行引入; 5. installer.nsi中需要使用【C:\Users\Administrator\AppData\Roaming\electron-delta-bins\nsis-3.0.5.0\Plugins\x86-ansi】中的【nsProcess.dll、ShellExecAsUser.dll】等plugin,如果不存在,用以下两种方式获取: 从【C:\Users\Administrator\AppData\Roaming\electron-delta-bins\nsis-3.0.5.0\Plugins\x86-unicode】中复制,或者, 从【https://nsis.sourceforge.io/NsProcess_plugin】中下载; 6. 获取增量更新包是通过vue.config.js的【afterAllArtifactBuild: '.electron-delta.js'】调用【electron-delta】的builder模块实现的; 7. 检查更新及下载安装是通过background.js调用调用【electron-delta】的updater模块实现的(emit相关事件转发给electron的原autoUpdater模块进行通信); # 打包时注意点 1. .electron-delta.js中的getPreviousReleases方法中return[{...}]所需生成增量版本信息,可指定多个 2. pakage.json中的version(最新版本)、forceupdate(是否强制更新)、latestReleaseInfo(最新版更新履历)需要修改; 3. 关于更新履历,public中的release-notes.md(注意书写格式)及设置页面SettingPage.vue中也需要同步更新; 4. vue.config.js中的publish中,url需要修改为客户环境下载路径; 注意:本地测试时可使用【url: 'http://localhost:5000/'】,通过在【dist_electron】文件夹中执行cmd命令【npx serve -p 5000】配置本地下载服务器; 5. vue.config.js中的terserOptions的compress中,debug和console相关配置记得调整(nsis相关配置一般不需要调整) 6. config.js中的IsRelease_WebPack以及各server的url都要根据实际调整; 7. 执行【npm run package】打包后,会生成以下文件: -【dist_electron】中(全量更新时必需): YFXChat-y.y.y-win-x64-setup.exe YFXChat-y.y.y-win-x64-setup.exe.blockmap latest.yml full-win.json -【dist_electron\y.y.y-win-deltas】中(增量相关,根据.electron-delta.js中的配置,可能会生成多个,增量也需要使用latest.yml文件): YFXChat-x.x.x-to-y.y.y-delta.exe delta-win.json 将y.y.y-win-deltas文件夹中的文件直接复制到dist_electron中(同一目录下),升级时会优先进行增量更新; 8. 更新文件下载到本地文件夹【C:\Users\Administrator\AppData\Local\yf-pc-chat-yfx-updater】,全量/增量切换调试时记得清理此文件夹; 9. 打包后会在工程文件夹下生成cache文件夹,每次打包时尽量清理,删除此文件夹即可; 10. 增量更新时会在安装路径下生成【C:\Program Files\yf-pc-chat-yfx-delta-updater】,目前感觉不需要清理,留待下次更新时复用;