使用Electron生成安装包并打包为不同平台的应用格式

简介: 导言: 使用Electron开发桌面应用后,我们需要将其打包成适用于不同平台的安装包,例如 Mac 的`dmg`和 Windows 的`exe`。本文将介绍如何使用 Electron-forge 自动生成项目文件,并通过简单的步骤实现打包过程。

导言: 使用Electron开发桌面应用后,我们需要将其打包成适用于不同平台的安装包,例如 Mac 的dmg和 Windows 的exe。本文将介绍如何使用 Electron-forge 自动生成项目文件,并通过简单的步骤实现打包过程。

目录:

  1. 初识Electron-forge
    • 1.1 安装Electron-forge
      • 1.2 配置Electron-forge
  2. 应用打包
    • 2.1 生成分发包
    • 2.2 创建Windows的EXE文件
    • 2.3 创建Mac的DMG文件
  3. 应用打包失败
    • 第一步:下载安装
    • 第二步:生成分发包
    • 第三步:构建 Windows 的 EXE 文件
    • 第四步:构建 Mac 的 DMG 文件
  4. 应用签名

1. 初识Electron-forge

Electron-forge是Electron的脚手架工具,可以自动生成项目文件。在这一部分中,我们将了解如何安装Electron-forge并进行配置。

1.1 安装Electron-forge

使用以下命令进行安装:

npx @electron-forge/cli import

安装完成后,package.json 文件将会被修改,增加以下配置。

image.png

如果你想将配置独立成一个文件进行管理,可以通过以下步骤实现。

1.2 配置Electron-forge

配置Electron-forge是为了进一步定制和管理Electron项目的打包和构建过程。下面是配置Electron-forge的步骤:

  1. 打开项目的package.json文件。
  2. 在文件中找到config字段,如果没有,则手动添加该字段。config字段用于配置Electron-forge。
  3. config字段下添加一个forge字段,并将其值设置为一个指向配置文件的路径。例如:
"config": {
   
   
  "forge": "./forge.config.js"
}
  1. 创建一个名为forge.config.js的文件,放置在项目的根目录下。这个文件将包含具体的 Electron-forge 配置。
  2. forge.config.js文件中,可以配置packagerConfigmakers两个字段。

forge.config.js 文件配置如下:(直接 复制/粘贴 即可)

module.exports = {
   
   
  "packagerConfig": {
   
   },
  "makers": [
    {
   
   
      "name": "@electron-forge/maker-squirrel",
      "config": {
   
   
        "name": "electron_quick_start"
      }
    },
    {
   
   
      "name": "@electron-forge/maker-zip",
      "platforms": [
        "darwin"
      ]
    },
    {
   
   
      "name": "@electron-forge/maker-deb",
      "config": {
   
   }
    },
    {
   
   
      "name": "@electron-forge/maker-rpm",
      "config": {
   
   }
    }
  ]
}

如果大家还有其他的场景需要配置,可以再从 packagerConfig 和 makers 入手。

packagerConfig

packagerConfig字段用于配置打包器的选项。可以在其中指定一些自定义的打包参数,例如输出目录、应用名称、图标等。根据需求,对该字段进行相应的配置(下面是一些常用的配置)。

packagerConfig: {
   
   
  // 基础配置(一般这些就够用了)
  "name": "MyElectronApp", // 应用程序的名称
  "productName": "My Electron App", // 产品名称(用于生成安装包的名称)
  "icon": "path/to/icon.png", // 应用程序的图标路径
  "out": "build/", // 输出目录的路径
  "overwrite": true, // 是否覆盖已存在的打包文件
  "asar": true, // 是否使用asar打包格式
  "version": "1.0.0", // 应用程序版本号
  "copyright": "Copyright © 2023", // 版权信息
  "ignore": [ // 不需要打包的文件和文件夹的路径列表
    ".git",
    ".vscode",
    "node_modules/.cache",
    "src"
  ],
  // 配置其他构建器(特殊情况下使用)
  "win": {
   
    // Windows平台的配置
    "target": "nsis", // 打包的目标格式为NSIS安装程序
    "icon": "path/to/windows/icon.ico", // Windows平台的图标路径
    "publisherName": "My Company", // 发布者名称
    "fileAssociations": [ // 关联文件类型的配置
      {
   
   
        "ext": "myext", // 文件扩展名
        "name": "My Extension", // 文件类型名称
        "description": "Open My Extension files", // 文件类型描述
        "role": "Editor" // 文件类型的角色
      }
    ],
    "certificateFile": "path/to/certificate.pfx", // 数字证书文件的路径
    "certificatePassword": "password123" // 数字证书的密码
  },
  "mac": {
   
    // macOS平台的配置
    "target": "dmg", // 打包的目标格式为DMG镜像
    "icon": "path/to/mac/icon.icns", // macOS平台的图标路径
    "category": "public.app-category.utilities", // 应用程序的分类
    "extendInfo": {
   
    // 扩展应用程序包的配置
      "NSAppTransportSecurity": {
   
   
        "NSAllowsArbitraryLoads": true // 允许应用程序加载任意的网络资源
      }
    }
  },
  "linux": {
   
    // Linux平台的配置
    "target": "deb", // 打包的目标格式为DEB包
    "icon": "path/to/linux/icon.png", // Linux平台的图标路径
    "category": "Utility", // 应用程序的分类
    "description": "My Electron App", // 应用程序的描述
    "desktop": {
   
    // 创建桌面快捷方式的配置
      "Name": "My Electron App", // 快捷方式的名称
      "Comment": "My Electron App", // 快捷方式的注释
      "Exec": "./MyElectronApp", // 快捷方式的执行命令
      "Terminal": false // 是否在终端中打开应用程序
    }
  }
}

makers

makers字段用于指定不同平台的打包格式。每个打包格式都对应一个maker,定义了如何生成特定格式的安装包。可以根据需要添加或修改makers字段的配置。以下是常见的几种打包格式及其相应的maker配置:

  • Windows的.exe安装包:使用@electron-forge/maker-squirrel作为maker,可以配置应用名称等参数。
  • macOS的.dmg安装包:使用@electron-forge/maker-zip作为maker,指定platformsdarwin
  • Debian Linux的.deb安装包:使用@electron-forge/maker-deb作为maker,可以配置其他参数。
  • Red Hat Linux的.rpm安装包:使用@electron-forge/maker-rpm作为maker,可以配置其他参数。

根据目标平台的需求,进行相应的配置。

完成以上配置后,就可以使用Electron-forge生成针对不同平台的安装包了。通过修改makers字段的配置,可以灵活地定制生成的应用格式。在文章的后续部分将详细介绍如何执行打包命令以及生成不同平台的应用格式的步骤。

2. 应用打包

在这一部分中,我们使用 Electron-forge 将应用程序打包成针对不同平台的安装包。

2.1 生成分发包

使用以下命令进行打包:

npm run make

你可以使用以下选项来指定目标系统架构、运行平台和目标文件:

  • -a, --arch [arch]:目标系统架构,默认为x64
  • -p, --platform [platform]:运行平台,默认为当前系统编译环境
  • --targets [targets]:与maker的作用一样,建议在文件中配置,便于管理

执行完make命令后,在根目录下将生成一个out文件夹。out/make文件夹中包含了打包后的应用分发包。

image.png

2.2 创建Windows的EXE文件

使用以下命令生成Windows的应用包:

npm run package

你可以使用以下选项来指定目标系统架构和运行平台:

  • -a, --arch [arch]:目标系统架构,默认为x64
  • -p, --platform [platform]:运行平台,默认为当前系统编译环境

执行完命令后,将会在当前目录生成一个文件夹,其中包含Windows应用程序的安装包。你可以直接点击该文件夹中的.exe文件来打开应用程序。

2.3 创建Mac的DMG文件

以下是生成Mac的DMG文件的步骤:

  1. 安装appdmg工具,建议全局安装:
npm install -g appdmg
  1. 创建appdmg.json文件,内容如下:
{
   
   
  "title": "myapp",
  "contents": [
    {
   
    "x": 380, "y": 170, "type": "link", "path": "/Applications" },
    {
   
    "x": 200, "y": 170, "type": "file", "path": "./../out/electron-quick-start-darwin-x64/electron-quick-start.app" }
  ],
  "window": {
   
   
    "size": {
   
    "width": 580, "height": 360 }
  },
  "format": "UDBZ"
}
  1. 生成DMG文件:
appdmg ./build/appdmg.json ~/Desktop/test.dmg

按照以上步骤,你就可以简单地实现Electron打包并生成Mac的DMG文件和Windows的EXE文件。

3. 应用打包失败

如果你按照上述步骤操作后仍然遇到问题,可能很难定位错误。这时你可以参考我的GitHub electron-builder仓库代码进行调试,该仓库代码已经经过调试,没有问题。

请执行以下步骤:

第一步:下载安装

# 克隆该仓库
git clone https://github.com/ghSailing/electron-builder.git
# 进入仓库目录
cd electron-builder
# 安装依赖
npm install
# 运行应用
npm start

第二步:生成分发包

# 生成分发包
npm run make

第三步:构建 Windows 的 EXE 文件

# 构建Windows的EXE文件
npm run package

第四步:构建 Mac 的 DMG 文件

# 构建Mac的DMG文件
npm run dmg

请注意,构建 DMG 文件需要在 Mac 电脑上进行。

4. 应用签名

在打包过程中,你可能会遇到应用签名的需求。具体的应用签名流程请参考Code Signing

以上是关于使用 Electron 生成安装包并打包为不同平台应用格式的介绍。通过本文的指导,你可以轻松地使用 Electron-forge 工具完成应用打包,并生成适用于 Mac 的 DMG 文件和 Windows 的 EXE 文件。同时,如果遇到问题,你还可以参考 GitHub electron-builder 项目进行故障排除。

结语

希望本文对你在 Electron 应用程序的打包和分发过程中有所帮助,让你能够顺利完成任务。

感谢阅读本文,希望你能从中获取到有价值的信息。如果对你有所帮助,请点击 「点赞」 按钮以示支持,并 关注 我的主页获取更多有关 Electron 开发的文章。

目录
相关文章
|
25天前
|
资源调度 运维 JavaScript
使用electron创建桌面应用及常见打包错误解决
使用electron创建桌面应用及常见打包错误解决
179 3
|
2天前
|
安全 前端开发 Windows
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
本文介绍了 Electron 应用在 Windows 中的更新原理,重点分析了 `NsisUpdater` 类的实现。该类利用 NSIS 脚本,通过初始化、检查更新、下载更新、验证签名和安装更新等步骤,确保应用的更新过程安全可靠。核心功能包括差异下载、签名验证和管理员权限处理,确保更新高效且安全。
11 4
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
|
24天前
|
前端开发 Unix Linux
揭秘 Electron 的 Linux 打包过程:你知道背后发生了什么吗?
本文详细介绍了 `electron-builder` 在 Linux 平台上如何打包 Electron 应用程序,涵盖了 AppImage、Flatpak、Snap 等多种格式的打包原理和具体实现。文章从初始化 `LinuxPackager` 到创建各种目标格式的包,详细解析了每个步骤的代码逻辑和关键方法,帮助开发者更好地理解和使用 `electron-builder` 进行 Linux 应用的打包。
57 2
揭秘 Electron 的 Linux 打包过程:你知道背后发生了什么吗?
|
1月前
|
安全 前端开发 iOS开发
揭秘 electron-builder:macOS 应用打包背后到底发生了什么?
本文详细介绍了 Electron 应用在 macOS 平台上的打包流程,涵盖配置文件、打包步骤、签名及 notarization 等关键环节。通过剖析 `electron-builder` 的源码,展示了如何处理多架构应用、执行签名,并解决常见问题。适合希望深入了解 macOS 打包细节的开发者。
39 2
|
1月前
|
监控 前端开发 安全
谈谈我做 Electron 应用的这一两年
本文首发于微信公众号“前端徐徐”,作者徐徐分享了过去一两年间开发Electron桌面应用的经验与心得。文章详细介绍了从项目启动、技术选型到具体实施的过程,并探讨了桌面端开发面临的挑战及解决方案,如软件更新、任务队列设计、性能优化等。此外,还列举了一些特殊需求的实现方法,如静默安装、进程禁用等。作者认为,尽管桌面端开发有其独特性,但通过不断探索与实践,仍能显著提升用户体验和技术水平。
97 0
谈谈我做 Electron 应用的这一两年
|
24天前
|
XML 缓存 前端开发
Electron-builder 是如何打包 Windows 应用的?
本文首发于微信公众号“前端徐徐”,作者徐徐深入解析了 electron-builder 在 Windows 平台上的打包流程。文章详细介绍了 `winPackager.ts`、`AppxTarget.ts`、`MsiTarget.ts` 和 `NsisTarget.ts` 等核心文件,涵盖了目标创建、图标处理、代码签名、资源编辑、应用签名、性能优化等内容,并分别讲解了 AppX/MSIX、MSI 和 NSIS 安装程序的生成过程。通过这些内容,读者可以更好地理解和使用 electron-builder 进行 Windows 应用的打包和发布。
94 0
|
3月前
|
容器 iOS开发 Linux
震惊!Uno Platform 响应式 UI 构建秘籍大公开!从布局容器到自适应设计,带你轻松打造跨平台完美界面
【8月更文挑战第31天】Uno Platform 是一款强大的跨平台应用开发框架,支持 Web、桌面(Windows、macOS、Linux)及移动(iOS、Android)等平台,仅需单一代码库。本文分享了四个构建响应式用户界面的最佳实践:利用布局容器(如 Grid)适配不同屏幕尺寸;采用自适应布局调整 UI;使用媒体查询定制样式;遵循响应式设计原则确保 UI 元素自适应调整。通过这些方法,开发者可以为用户提供一致且优秀的多设备体验。
119 0
|
3月前
|
前端开发 JavaScript API
强强联手打造桌面应用新标杆:Angular与Electron的完美融合——从环境搭建到通信机制,全面解析构建跨平台应用的最佳实践与技巧
【8月更文挑战第31天】随着Web技术的进步,开发者们越来越多地采用Web技术来构建桌面应用程序。通过结合使用开源框架Electron及前沿的前端框架Angular,开发者能充分利用JavaScript、HTML和CSS打造出高性能且易维护的跨平台桌面应用。本文将详细介绍如何搭建基于Angular与Electron的开发环境,包括创建Angular项目、安装Electron及相关依赖、配置Electron主进程以及实现Angular应用与Electron间的通信等关键步骤,并最终将应用打包成多平台可执行文件,为读者提供了一套完整的解决方案以快速入门并实践这一强大技术组合。
86 0
|
3月前
|
iOS开发 MacOS Python
Electron Mac 打包报 Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT 解决方法
Electron Mac 打包报 Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT 解决方法
|
12天前
|
JSON JavaScript 前端开发
开发桌面程序-Electron入门
【10月更文挑战第16天】Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用的框架,嵌入了 Chromium 和 Node.js。本文介绍了如何搭建 Electron 开发环境,包括安装 Node.js、创建项目、配置 main.js 和打包应用。通过简单的步骤,你可以快速创建并运行一个基本的 Electron 应用程序。
开发桌面程序-Electron入门
下一篇
无影云桌面