当前位置: 首页 > news >正文

Electron 打包与发布指南:让你的应用运行在 Windows、macOS、Linux

🚀 Electron 打包与发布指南:让你的应用运行在 Windows、macOS、Linux

使用 Electron 开发桌面应用只是第一步,最终我们还需要将应用打包成用户可运行的可执行文件(如 .exe.dmg.AppImage),并能在各平台上正常安装运行。本篇将手把手教你实现跨平台打包与发布。


🧰 一、准备工作

📦 安装 Node.js

访问 https://nodejs.org/ 下载并安装最新版 Node.js,并确保 npm 可用:

node -v
npm -v

⚙️ 安装依赖

假设你已有一个基于 Electron 的项目结构:

npm install --save-dev electron electron-builder

🏗️ 二、配置 package.json

package.json 中添加如下字段:

{"name": "my-electron-app","version": "1.0.0","main": "public/main.js", "scripts": {"dev": "electron .","build": "electron-builder"},"build": {"appId": "com.example.electronapp","productName": "MyElectronApp","files": ["dist/**/*","public/**/*","node_modules/**/*","package.json"],"directories": {"output": "build"},"win": {"target": "nsis"},"mac": {"target": "dmg"},"linux": {"target": "AppImage"}},"devDependencies": {"electron": "^27.0.0","electron-builder": "^24.0.0"}
}

🛠️ 三、构建前准备

如果你是使用 Vue/React 等前端框架开发 UI:

npm run build  # Vue/React 的构建命令

确保构建结果(如 dist/)已准备好,并在 main.js 中正确引用:

win.loadFile('dist/index.html');

📦 四、打包应用

使用如下命令打包项目:

npm run build

执行完后,会在 build/ 目录下生成对应平台的可执行文件:

  • Windows:MyElectronApp Setup.exe
  • macOS:MyElectronApp.dmg
  • Linux:MyElectronApp.AppImage

🧪 五、平台差异说明

平台格式工具说明
Windows.exe 安装包NSIS可安装,支持快捷方式、卸载
macOS.dmgDMG拖拽安装
Linux.AppImage / .debAppImage / Snap可直接运行或打包成发行版

🚚 六、自动更新(可选)

Electron Builder 支持自动更新,但需使用服务器(如 GitHub Releases、私有 CDN)来托管更新文件。

添加如下配置:

"publish": [{"provider": "github","owner": "your-github-name","repo": "your-repo-name"}
]

在主进程中监听更新:

const { autoUpdater } = require('electron-updater');app.whenReady().then(() => {autoUpdater.checkForUpdatesAndNotify();
});

🌐 七、发布你的应用

GitHub Releases

  1. 将构建产物上传到 GitHub Releases
  2. 发布 release 版本,供用户下载安装

其他发布平台:

  • 自建服务器/CDN
  • 使用 Snap Store(Linux)
  • 使用 Microsoft Store / Mac App Store(需额外签名与配置)

🔐 八、平台签名与 notarization(推荐)

Windows 签名

需要购买代码签名证书(如 DigiCert):

electron-builder build --win --csc-link cert.pfx --csc-key-password yourpassword

macOS notarization(苹果要求)

注册 Apple Developer 账号,使用 Xcode 或 notarize 工具进行签名上传:

electron-builder build --mac --publish always

📌 总结

步骤内容
准备安装 Electron + electron-builder
配置package.json 添加 build 字段
打包npm run build 生成可执行文件
发布上传 GitHub / 服务器 / 应用商店
更新使用 electron-updater 自动更新
安全平台签名,确保可信任和合规性

📎 附录:常见问题

❓白屏或路径错误

请使用 file://__dirname 动态路径拼接加载本地资源。

❓打包时提示找不到主入口

确保 main.js 路径正确,且 main 字段已在 package.json 中设置。

相关文章:

  • 【Java 专题补充】流程控制语句
  • 蓝桥杯第十六届c组c++题目及个人理解
  • 每周靶点分享:Angptl3、IgE、ADAM9及文献分享:抗体的多样性和特异性以及结构的新见解
  • 基于大型语言模型的高效时间序列预测模型选择
  • 【网工第6版】第7章 网络操作系统与应用服务器③
  • Arm核的Ubuntu系统上安装Wireshark
  • 英语六级---2024.12 卷二 仔细阅读2
  • 第5章 深度学习和卷积神经网络
  • 如何将 Build at、Hash 和 Time git 的 Tag 号等构建信息,自动写入一个 JSON 文件
  • P4017 最大食物链计数
  • 可观测性方案怎么选?SelectDB vs Elasticsearch vs ClickHouse
  • 计算机网络-DNS协议, ICMP协议,DDoS攻击
  • Minor GC与Full GC分别在什么时候发生?
  • DeepSeek驱动的智能客服革命:语音交互与大模型的融合实践
  • keep the pipe Just full But no fuller - BBR 与尘封 40 年的求索
  • 复刻低成本机械臂 SO-ARM100 单关节控制(附代码)
  • 基于STM32、HAL库的CP2102-GMR USB转UART收发器 驱动程序设计
  • 分享 2 款基于 .NET 开源的实时应用监控系统
  • wails3学习-runtime:Window无边框设置
  • 【Spring Boot 多模块项目】@MapperScan失效、MapperScannerConfigurer 报错终极解决方案
  • 光大华夏:近代中国私立大学遥不可及的梦想
  • 小米回应SU7Ultra排位模式限制车辆动力:暂停推送更新
  • 习近平抵达莫斯科伏努科沃专机机场发表书面讲话(全文)
  • 新华时评:任凭风云变幻,中俄关系从容前行
  • 当年的你,现在在哪里?——新民晚报杯40周年寻人启事
  • 陕南多地供水形势严峻:有的已呼吁启用自备水井