跳至主要内容

打包您的应用程序

学习目标

在本教程的这一部分,我们将介绍使用Electron Forge打包和分发应用程序的基础知识。

使用 Electron Forge

Electron 没有在其核心模块中捆绑任何用于打包和分发的工具。在开发模式下拥有一个可工作的 Electron 应用程序后,您需要使用其他工具来创建可分发给用户的打包应用程序(也称为**可分发文件**)。可分发文件可以是安装程序(例如 Windows 上的 MSI)或可移植的可执行文件(例如 macOS 上的.app)。

Electron Forge 是一款多合一工具,可以处理 Electron 应用程序的打包和分发。在后台,它将许多现有的 Electron 工具(例如@electron/packager@electron/osx-signelectron-winstaller等)组合到一个单一的界面中,因此您无需担心将它们全部连接起来。

将您的项目导入 Forge

您可以在项目的devDependencies中安装 Electron Forge 的 CLI,并使用方便的转换脚本导入现有项目。

npm install --save-dev @electron-forge/cli
npx electron-forge import

转换脚本完成后,Forge 应该会在您的package.json文件中添加了一些脚本。

package.json
  //...
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make"
},
//...
CLI 文档

有关make和其他 Forge API 的更多信息,请查看Electron Forge CLI 文档

您还应该注意到,您的 package.json 现在在devDependencies下安装了更多软件包,以及一个新的forge.config.js文件,该文件导出一个配置对象。您应该在预填充的配置中看到多个生成器(生成可分发应用程序包的软件包),每个目标平台一个。

创建可分发文件

要创建可分发文件,请使用项目的新make脚本,该脚本运行electron-forge make命令。

npm run make

make命令包含两个步骤

  1. 它首先会在后台运行electron-forge package,它将您的应用程序代码与 Electron 二进制文件捆绑在一起。打包的代码会生成到一个文件夹中。
  2. 然后,它将使用此打包的应用程序文件夹为每个配置的生成器创建单独的可分发文件。

脚本运行后,您应该会看到一个out文件夹,其中包含可分发文件和包含打包应用程序代码的文件夹。

macOS 输出示例
out/
├── out/make/zip/darwin/x64/my-electron-app-darwin-x64-1.0.0.zip
├── ...
└── out/my-electron-app-darwin-x64/my-electron-app.app/Contents/MacOS/my-electron-app

out/make文件夹中的可分发文件应该可以启动了!您现在已经创建了第一个捆绑的 Electron 应用程序。

可分发文件格式

Electron Forge 可以配置为以不同的特定于操作系统的格式创建可分发文件(例如 DMG、deb、MSI 等)。有关所有配置选项,请参阅 Forge 的生成器文档。

创建和添加应用程序图标

设置自定义应用程序图标需要在配置中添加一些内容。有关更多信息,请查看Forge 的图标教程

无需 Electron Forge 进行打包

如果您想手动打包代码,或者只是想了解打包 Electron 应用程序的机制,请查看完整的应用程序打包文档。

重要:签名您的代码

为了将桌面应用程序分发给最终用户,我们强烈建议代码签名您的 Electron 应用程序。代码签名是交付桌面应用程序的重要部分,并且是教程最后部分中自动更新步骤的强制要求。

代码签名是一种安全技术,您可以使用它来证明桌面应用程序是由已知来源创建的。Windows 和 macOS 都有各自特定的操作系统代码签名系统,这将使用户难以下载或启动未签名的应用程序。

在 macOS 上,代码签名在应用程序打包级别完成。在 Windows 上,可分发安装程序会进行签名。如果您已经拥有 Windows 和 macOS 的代码签名证书,则可以在 Forge 配置中设置您的凭据。

信息

有关代码签名的更多信息,请查看 Forge 文档中的签名 macOS 应用程序指南。

forge.config.js
module.exports = {
packagerConfig: {
osxSign: {},
// ...
osxNotarize: {
tool: 'notarytool',
appleId: process.env.APPLE_ID,
appleIdPassword: process.env.APPLE_PASSWORD,
teamId: process.env.APPLE_TEAM_ID
}
// ...
}
}

总结

Electron 应用程序需要进行打包才能分发给用户。在本教程中,您将应用程序导入 Electron Forge 并将其配置为打包应用程序并生成安装程序。

为了使您的应用程序获得用户系统的信任,您需要通过代码签名对其进行数字认证,以证明可分发文件是真实且未被篡改的。配置 Forge 使用您的代码签名证书信息后,即可通过 Forge 对您的应用程序进行签名。