跳转到主要内容

打包你的应用程序

学习目标

在本教程的这一部分,我们将介绍使用 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 文件,该文件导出一个配置对象。你应该会在预填充的配置中看到多个 maker(用于生成可分发应用程序包的包),每个目标平台都有一个。

创建可分发版本

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

npm run make

这个 make 命令包含两个步骤:

  1. 它首先会在底层运行 electron-forge package,将你的应用程序代码与 Electron 二进制文件打包在一起。打包后的代码会生成到一个文件夹中。
  2. 然后,它将使用这个已打包的应用程序文件夹为每个配置的 maker 创建一个独立的可分发版本。

脚本运行后,你应该会看到一个 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 的 Makers 文档了解所有配置选项。

创建和添加应用程序图标

设置自定义应用程序图标需要对配置进行一些修改。请参阅 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 对应用程序进行签名。