Electron 应用打包全指南

一、为何需要打包?

Electron 核心模块不包含打包工具 ,开发模式的应用必须通过额外工具转换为可分发包(Distributable),例如:

  • Windows 的 .msi 安装包
  • macOS 的 .dmg.app 便携包
  • Linux 的 .deb 等格式

二、Electron Forge 工作流(推荐方案)

整合了 @electron/packager@electron/osx-sign 等工具链

  1. 安装与项目导入

    在项目中添加 CLI 并执行转换:

    bash 复制代码
    npm install --save-dev @electron-forge/cli
    npx electron-forge import

    关键变化

    • package.json 新增脚本命令:

      json 复制代码
      "scripts": {
        "start": "electron-forge start",
        "package": "electron-forge package",
        "make": "electron-forge make"
      }
    • 生成 forge.config.js 配置文件(含多平台 Maker 预设)

  2. 生成可分发包

    执行构建命令:

    bash 复制代码
    npm run make  # 内部自动执行 package → make 两步

    输出结构

    复制代码
    out/
    ├── make/          # 分发安装包(如 ZIP/DMG)
     └── packaged-app/  # 含 Electron 二进制的应用包

    *示例:macOS 生成 my-electron-app.app.zip 安装包 *

  3. 多平台格式支持

    forge.config.js 配置 Makers 可定制输出格式:

    • Windows: Squirrel (MSI), WiX
    • macOS: DMG, PKG
    • Linux: deb, rpm
      *详见 Makers 文档 *

三、代码签名(关键安全步骤)

必须操作:否则系统将阻止安装/运行!

  • macOS :签名应用包(.app

    js 复制代码
    // forge.config.js
    packagerConfig: {
      osxSign: {}, 
      osxNotarize: { // 公证配置
        appleId: process.env.APPLE_ID, 
        appleIdPassword: process.env.APPLE_PASSWORD
      }
    }
  • Windows :签名安装包(.msi

    js 复制代码
    makers: [{
      name: '@electron-forge/maker-squirrel',
      config: {
        certificateFile: './cert.pfx', 
        certificatePassword: process.env.CERT_PWD
      }
    }]

    *注:证书需提前申请,敏感信息使用环境变量传递 *


四、进阶配置

技术依据:Electron 官方文档《Packaging Your Application》

相关推荐
wanger612 分钟前
Vue学习笔记
前端·javascript·vue.js
杨先生哦2 分钟前
【2026热端攻防系列 3/12】反射型&存储型XSS全解:AI批量免杀、WAF绕过与企业级防御
前端·人工智能·笔记·web安全·xss
问心无愧05137 分钟前
ctf show web入门123
android·前端·笔记
大刚测试开发实战9 分钟前
TestHub数据工厂发布!附更新指南
前端·后端·github
by————组态16 分钟前
Ricon组态组件生态 - 丰富的可视化组件库
运维·前端·物联网·组态·组态软件
小鹏linux19 分钟前
鸿蒙PC使用 Electron 迁移:LX Music 桌面版适配全记录
华为·electron·harmonyos
古德new20 分钟前
鸿蒙PC迁移:使用Electron`yesplaymusic-ohos` 鸿蒙迁移实战与适配全记录
华为·electron·harmonyos
天蓝色的鱼鱼21 分钟前
Node.js 现在能直接跑 TypeScript 了,tsx 和 ts-node 还需要吗?
前端·typescript·node.js
阿猫的故乡23 分钟前
Vue动态组件+异步组件实战:Tab切换、按需加载、KeepAlive缓存,一次搞定
前端·vue.js·缓存
风骏时光牛马25 分钟前
Stylus预处理器完整语法与项目实战详细代码案例
前端