news 2026/4/15 14:47:37

Electron 发布与部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Electron 发布与部署

Electron 中的发布与部署

发布(Release)与部署(Deployment)是 Electron 应用从开发完成到交付用户手中的最后环节。主要涉及:生成版本化的安装包、上传到分发渠道、实现自动更新,以及在生产环境中稳定运行。以下基于 2025 年最新实践(electron-builder + electron-updater + 主流平台)进行总结。

1.发布流程概述

典型发布流程:

  1. 递增版本号(package.json 的version
  2. 构建前端资源(Vite/Webpack 等)
  3. 使用打包工具生成安装包(.exe/.dmg/.AppImage 等)
  4. 代码签名与公证(生产必备)
  5. 上传安装包到分发服务器(GitHub Releases、S3、私有服务器等)
  6. 触发自动更新检测(用户下次启动时提示更新)
2.主流分发渠道与自动更新方案
方案适用平台优点缺点/要求配置难度
GitHub ReleasesWin/mac/Linux最简单、私有仓库也支持、免费、electron-updater 原生支持需要 GitHub 账号,发布频率受限(rate limit)★☆☆☆☆
S3 + CloudFrontWin/mac/Linux高性能 CDN、可控权限、适合企业需要 AWS 账号、配置签名 URL★★☆☆☆
Azure Blob / Google CloudWin/mac/Linux类似 S3,适合对应云用户配置复杂★★★☆☆
自建服务器(如 Nutstore)Win/mac/Linux完全可控、国内访问快需要维护服务器、HTTPS 证书★★★★☆
应用商店分发macOS/WindowsMac App Store、Microsoft Store(侧载或商店上架)严格审核、需付费证书、无法自动更新(商店版)★★★★★

2025 年推荐GitHub Releases + electron-updater(90% 项目首选)。

3.electron-updater 自动更新配置(关键代码)

安装

npminstallelectron-updater

主进程实现(main.js):

const{app,autoUpdater,dialog}=require('electron');const{electronUpdater}=require('electron-updater');// 可选:设置日志electronUpdater.logger=require('electron-log');autoUpdater.on('checking-for-update',()=>{console.log('正在检查更新...');});autoUpdater.on('update-available',(info)=>{dialog.showMessageBox({type:'info',title:'发现新版本',message:`发现新版本${info.version},是否立即下载?`,buttons:['是','稍后']}).then((res)=>{if(res.response===0)autoUpdater.downloadUpdate();});});autoUpdater.on('update-downloaded',()=>{dialog.showMessageBox({title:'更新已就绪',message:'更新下载完成,应用将重启以应用更新。',buttons:['立即重启']}).then(()=>{autoUpdater.quitAndInstall();});});// 应用就绪后检查更新(推荐延迟几秒,避免启动卡顿)app.whenReady().then(()=>{setTimeout(()=>{autoUpdater.checkForUpdatesAndNotify();// 或 checkForUpdates()},5000);});

package.json publish 配置(与 electron-builder 结合):

"build":{"publish":[{"provider":"github","owner":"your-username","repo":"your-repo","private":false,// private: true 也支持(需 token)"releaseType":"release"// draft/release/prerelease}]}
4.CI/CD 自动化发布(强烈推荐)

使用 GitHub Actions 实现一键发布:

示例 workflow(.github/workflows/release.yml):

name:Releaseon:push:tags:-'v*'jobs:build:runs-on:${{matrix.os}}strategy:matrix:os:[macos-latest,windows-latest,ubuntu-latest]steps:-uses:actions/checkout@v4-name:Setup Nodeuses:actions/setup-node@v4with:node-version:20-run:npm ci-run:npm run build:frontend# 构建 React/Vite 等-name:Build & Publishenv:GITHUB_TOKEN:${{secrets.GITHUB_TOKEN}}# macOS 公证APPLE_ID:${{secrets.APPLE_ID}}APPLE_ID_PASSWORD:${{secrets.APPLE_ID_PASSWORD}}# Windows 签名CSC_LINK:${{secrets.CSC_LINK}}CSC_KEY_PASSWORD:${{secrets.CSC_KEY_PASSWORD}}run:npm run release# electron-builder --publish always

触发方式:打 taggit tag v1.2.0 && git push --tags

5.生产部署注意事项
  • 版本递增:每次发布必须提升package.jsonversion,否则更新检测失败。
  • 增量更新:electron-updater 支持差分更新(macOS/Linux 更明显),可大幅减少下载体积。
  • 静默更新:可用checkForUpdates()+ 后台下载 + 手动提示。
  • 错误处理:捕获error事件,记录日志,避免更新失败崩溃。
  • 多渠道发布:可同时配置多个 publish provider,按平台选择。
  • 企业内网部署:禁用自动更新,手动分发安装包,或自建更新服务器。
6.常见问题与解决方案
  • 更新卡在“下载中”:检查服务器是否支持 Range 请求(GitHub 支持)。
  • macOS 公证失败:确保 Hardened Runtime 和正确 entitlements。
  • Windows SmartScreen 警告:必须使用 EV 代码签名证书。
  • Linux 更新复杂:AppImage + 自建服务器最可靠。

完整的发布与部署链路:GitHub + electron-builder + electron-updater + GitHub Actions是当前最成熟、最高效的组合,能实现从代码提交到用户自动更新的全自动化。如果你计划上架应用商店或有企业级部署需求(如离线更新、自定义 CDN),可以提供更多细节,我可以给出针对性方案!

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

企业级宠物商城网站管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

摘要 随着社会经济的发展和人们生活水平的提高,宠物行业逐渐成为新兴的经济增长点。宠物商城作为宠物产业链中的重要环节,其线上化、智能化管理需求日益增长。传统的宠物商城管理系统存在功能单一、扩展性差、用户体验不佳等问题,难以满足现代…

作者头像 李华
网站建设 2026/4/12 15:32:19

企业级扶贫助农系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

摘要 背景相关: 随着乡村振兴战略的深入推进,数字化技术在扶贫助农领域的应用日益广泛。传统扶贫模式存在信息不对称、资源分配不均、管理效率低下等问题,亟需通过信息化手段提升扶贫工作的精准性和可持续性。企业级扶贫助农系统通过整合互联…

作者头像 李华
网站建设 2026/4/14 12:36:22

信息管理毕设2026开题汇总

1 引言 毕业设计是大家学习生涯的最重要的里程碑,它不仅是对四年所学知识的综合运用,更是展示个人技术能力和创新思维的重要过程。选择一个合适的毕业设计题目至关重要,它应该既能体现你的专业能力,又能满足实际应用需求&#xff…

作者头像 李华
网站建设 2026/4/13 5:36:40

LangFlow权限控制系统设想与路线图

LangFlow权限控制系统设想与路线图 在AI应用开发日益普及的今天,LangChain已经成为连接大语言模型与外部系统的核心桥梁。然而,随着团队协作和企业级部署需求的增长,基于LangChain构建的可视化工具LangFlow也面临着新的挑战——如何在保持低代…

作者头像 李华
网站建设 2026/4/3 3:43:43

LangFlow医疗辅助诊断系统搭建全过程

LangFlow医疗辅助诊断系统搭建全过程 在智慧医疗的浪潮中,一个现实问题始终困扰着医院信息化团队:如何让医生真正参与到AI系统的构建中?传统的智能辅助诊断系统往往由工程师闭门开发,临床专家只能被动接受输出结果。即便模型准确率…

作者头像 李华
网站建设 2026/4/15 12:47:50

LangFlow图像生成任务整合Stable Diffusion步骤

LangFlow整合Stable Diffusion实现图像生成的完整实践 在AI应用开发日益复杂的今天,如何快速构建一个从自然语言输入到高质量图像输出的端到端系统,成为许多开发者和创意工作者关注的核心问题。传统的做法是编写大量胶水代码来串联大模型调用、提示词优化…

作者头像 李华