news 2026/4/28 16:23:52

Electron 打包与分发

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Electron 打包与分发

Electron 中的打包与分发

打包是将 Electron 应用从开发环境转换为可分发的独立桌面安装包的过程(Windows: .exe/.msi;macOS: .dmg/.app;Linux: .deb/.rpm/.AppImage)。官方推荐使用成熟的打包工具,避免手动操作。以下基于 2025 年最新实践总结。

1.主流打包工具对比
工具优点缺点/注意事项支持平台推荐场景
electron-builder配置最简单、功能最全(自动更新、代码签名、多种格式、多语言安装器)依赖较多,偶尔配置复杂Win/mac/Linux首选,大多数项目
electron-forge官方推荐,模块化(支持多种 maker),与 Webpack/Vite 集成好配置稍繁琐,自动更新需额外插件Win/mac/Linux喜欢模块化、需要自定义流程
electron-packager最轻量、简单快速只打包不生成安装器,需手动签名/公证Win/mac/Linux快速原型、内部分发
electron-updater + builder与 builder 结合实现自动更新--所有需要自动更新的应用

2025 年推荐electron-builder(社区最活跃,文档最全)。

2.使用 electron-builder 打包(推荐流程)

安装

npminstall--save-dev electron-builder

package.json 配置(关键部分):

{"name":"my-app","version":"1.0.0","main":"main.js","scripts":{"build":"electron-builder","dist:win":"electron-builder --win","dist:mac":"electron-builder --mac","dist:linux":"electron-builder --linux"},"build":{"appId":"com.example.myapp","productName":"MyApp","directories":{"output":"dist"// 输出目录},"files":["dist-electron/**/*",// Vite/Webpack 输出"main/**/*"],"win":{"target":[{"target":"nsis","arch":["x64","ia32"]},// 安装器{"target":"portable"}// 便携版],"icon":"build/icon.ico"},"mac":{"target":["dmg","zip"],"icon":"build/icon.icns","hardenedRuntime":true,"gatekeeperAssess":false,"entitlements":"build/entitlements.mac.plist"},"linux":{"target":["AppImage","deb","rpm"],"icon":"build/icons"},"nsis":{"oneClick":false,// 多语言安装器"allowToChangeInstallationDirectory":true}}}

常见打包命令

# 打包所有平台npmrun build# 只打包当前平台npmrun build -- --publish never# 发布(配合自动更新)npmrun build -- --publish always
3.代码签名与公证(必须,用于生产发布)
平台要求操作方式
WindowsSmartScreen 信任、病毒扫描使用 EV 代码签名证书(DigiCert、Sectigo)
CSC_LINKCSC_KEY_PASSWORD环境变量
macOSGatekeeper、Notarization(公证)必备- Apple Developer ID 证书
- 启用 Hardened Runtime
- electron-builder 自动公证(需APPLE_IDAPPLE_ID_PASSWORD
Linux无强制,但 AppImage 可签名可选 GPG 签名
4.自动更新(Squirrel / electron-updater)

推荐使用electron-updater(与 builder 无缝集成)。

配置

npminstallelectron-updater

主进程代码

const{autoUpdater}=require('electron-updater');autoUpdater.on('checking-for-update',()=>{/* ... */});autoUpdater.on('update-available',()=>{/* 提示用户 */});autoUpdater.on('update-downloaded',()=>{autoUpdater.quitAndInstall();});// 启动时检查app.whenReady().then(()=>{autoUpdater.checkForUpdatesAndNotify();});

发布服务器选项

builder 配置(package.json):

"publish":[{"provider":"github","owner":"yourname","repo":"my-app"}]
5.最佳实践与常见坑

使用 electron-builder + electron-updater + GitHub Releases 的组合,是当前最成熟、最省心的打包与分发方案。如果你的项目使用 Vite + React/Vue 或有特殊需求(如企业内部分发、自定义安装器),可以提供更多信息,我可以给出更精确的配置示例!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 9:42:26

LangFlow多用户协作功能规划进展通报

LangFlow多用户协作功能规划进展通报 在AI应用开发日益团队化、工程化的今天,一个现实问题正不断浮现:如何让算法工程师、产品经理和前端开发者高效协同,共同构建复杂的语言模型工作流?传统基于代码的LangChain开发模式虽然灵活&a…

作者头像 李华
网站建设 2026/4/25 10:32:13

SpringBoot+Vue +高校线上心理咨询室设计与实现pf平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

摘要 随着社会压力的增加和心理健康问题的日益突出,高校学生的心理问题逐渐受到广泛关注。传统的心理咨询方式受限于时间和空间,难以满足学生的即时需求。线上心理咨询平台的出现为解决这一问题提供了新的途径。通过互联网技术,学生可以随时随…

作者头像 李华
网站建设 2026/4/27 10:20:22

Open-AutoGLM弹窗监控与自动关闭技术实践(独家方案首次公开)

第一章:Open-AutoGLM 更新弹窗阻断处理在使用 Open-AutoGLM 进行自动化任务时,系统更新弹窗常会中断脚本执行流程,导致关键操作失败。这类弹窗通常由后台自动检查更新机制触发,具有模态特性,必须显式处理才能继续后续操…

作者头像 李华
网站建设 2026/4/27 1:26:30

计算机毕业设计|基于springboot + vue英语学习系统(源码+数据库+文档)

英语学习目录 基于springboot vue英语学习系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue英语学习系统 一、前言 博主介绍:✌️大厂…

作者头像 李华
网站建设 2026/4/26 12:25:33

从零开始学 Java 线程池:ThreadPoolExecutor 基础教程

从零开始学 Java 线程池:ThreadPoolExecutor 基础教程 一、介绍 线程池是 Java 并发编程中核心的组件,本质是管理一组可复用线程的池化技术,目的是解决线程频繁创建 / 销毁的性能开销、控制并发线程数量、统一管理线程生命周期等问题。 补&am…

作者头像 李华