如何在Electron应用DMG包中排除squirrel.mac框架并禁用自动更新
解决Electron应用向App Store发布时的squirrel.mac相关问题
彻底禁用AutoUpdate
- 移除主进程中所有与
autoUpdater相关的代码:不要引入electron的autoUpdater模块,删除任何检查更新、监听更新事件的逻辑,确保应用完全不触发自动更新流程。 - 配置打包工具禁用自动更新:
- 若使用electron-builder,在
package.json的build字段中设置"publish": { "provider": "none" },明确告知打包工具不需要处理发布和自动更新相关内容。 - 若使用electron-packager,打包时无需添加任何与自动更新相关的参数,确保不启用squirrel相关的打包逻辑。
- 若使用electron-builder,在
正确排除squirrel.mac框架
不要手动删除应用包内的squirrel文件夹,这会破坏应用的启动依赖链,导致无法打开。正确的做法是通过打包工具配置排除:
- electron-builder配置:在
package.json的build字段中添加文件排除规则:"build": { "mac": { "files": [ "!**/Squirrel.framework", "!**/squirrel*" ] }, "publish": { "provider": "none" } } - electron-packager配置:打包时添加忽略参数,或者在配置文件中设置
ignore字段:electron-packager . YourApp --platform=darwin --arch=x64 --ignore=Squirrel.framework --ignore=squirrel*
为什么手动删除会导致应用无法打开
Electron打包时,若未正确禁用自动更新,应用的启动二进制文件会默认依赖squirrel的相关库进行初始化。手动删除squirrel框架后,启动器无法找到依赖的组件,直接触发崩溃,导致应用无法打开。
验证步骤
- 按上述配置重新打包应用
- 右键应用包选择「显示包内容」,检查
Contents/Frameworks目录下是否存在Squirrel.framework - 启动应用确认能正常运行
- 提交到App Store即可避免squirrel.mac相关错误
内容的提问来源于stack exchange,提问作者Jigar Jadav
相关产品推荐
相关产品推荐

