Electron应用启用自动更新后报错Can not find Squirrel如何解决
问题根因
你当前使用nsis作为electron-builder的Windows打包目标,NSIS安装包默认不集成Squirrel.Windows更新框架,不会生成Update.exe文件。而Electron内置的自动更新模块在Windows环境下默认依赖Squirrel.Windows实现,缺少该文件就会抛出Can not find Squirrel错误。
解决方案
方案一:调整打包配置适配内置自动更新
如果你要继续使用Electron内置的自动更新模块,需要将squirrel添加到Windows打包目标中,修改后的配置参考如下:
"win": { "target": [ "squirrel", "nsis" ], "defaultArch": "x64", "verifyUpdateCodeSignature": false }, // 可选:补充squirrel专属配置项 "squirrelWindows": { "iconUrl": "本地应用ico文件路径/可公开访问的ico在线地址", "loadingGif": "安装过程加载动图本地路径(非必填)" }
打包后会生成两类安装包:
- Squirrel格式的
.exe安装包:用户安装后,安装目录会自动生成Update.exe,可正常使用内置自动更新功能 - 原有NSIS格式安装包:依然会生成,但该版本安装后无
Update.exe,无法使用内置自动更新
方案二:替换自动更新模块(更灵活)
如果你不想切换到Squirrel打包,可放弃Electron内置的自动更新模块,改用electron-updater模块实现更新能力。该模块同时兼容NSIS、Squirrel两种打包格式,不需要依赖Update.exe文件,配置更灵活。
注意事项
- 使用Squirrel格式安装包时,需确保用户的安装路径不含中文、特殊字符,否则可能依然出现Squirrel识别失败的问题
- 若使用Squirrel更新,服务端需按规范存放对应版本的
RELEASES文件和.nupkg安装包,才能正常触发更新检测
内容的提问来源于stack exchange,提问作者leo
相关产品推荐
相关产品推荐

