进阶 electronjs.org 2026-10-07 23:51:43 · 6 阅读
第3章 Electron 应用打包与分发指南
Application Packaging
要通过 Electron 分发你的应用,你需要对其进行打包和品牌重塑。你可以使用专用工具或手动方法来完成这一过程。
使用工具
市面上有若干用于打包和分发 Electron 应用的工具。我们推荐使用 Electron Forge。你可以直接查看其文档,或参阅 Electron 教程中的“打包与分发”部分。
手动打包
如果你更倾向于手动操作,有两种分发应用程序的方式:
- 使用预构建二进制文件
- 使用应用源代码归档
使用预构建二进制文件
若要手动分发应用,你需要下载 Electron 的预构建二进制文件。接着,将包含你应用的文件夹命名为 `app`,并将其放置在 Electron 的 resources 目录下,具体结构如下例所示:
备注:下例中用 `electron/` 指示 Electron 预构建二进制文件的位置。
macOS:
```
Electron/Electron.app/Contents/Resources/app/
├── package.json
├── main.js
└── index.html
```
Windows 和 Linux:
```
electron/resources/app
├── package.json
├── main.js
└── index.html
```
然后在 macOS 上执行 `Electron.app`,在 Linux 上执行 `electron`,在 Windows 上执行 `electron.exe`,Electron 便会作为你的应用启动。此时,`electron` 目录即为你提供给用户的分发产物。
使用应用源代码归档(asar)
除直接复制所有源文件外,你还可以将应用打包成 asar 归档文件。若你尚未使用 Parcel 或 Webpack 等打包工具,此举可提升 Windows 等平台上的文件读取性能。
若要以 asar 归档替代 `app` 文件夹,需将归档重命名为 `app.asar`,并将其置于 Electron 的 resources 目录下,如下所示,Electron 随后将尝试读取该归档并从中启动应用。
macOS:
```
Electron/Electron.app/Contents/Resources/
└── app.asar
```
Windows:
```
electron/resources/
└── app.asar
```
更多 asar 的使用细节,可查阅 electron/asar 仓库。
使用下载的二进制文件进行品牌重塑
把应用打包进 Electron 之后,在分发给用户前,你还需要对 Electron 进行品牌重塑(rebranding)。
Windows:你可以把 electron.exe 改成任意名称,并用 rcedit 之类的工具修改它的图标和其他信息。
Linux:你可以把 electron 可执行文件改成任意名称。
macOS:你可以把 Electron.app 改成任意名称,同时还需要修改以下文件中的 CFBundleDisplayName、CFBundleIdentifier 和 CFBundleName 字段:
Electron.app/Contents/Info.plist
Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist
你也可以重命名 helper 应用,避免在活动监视器中显示 Electron Helper,但务必确保已同步修改 helper 可执行文件的名称。
重命名后的应用结构如下:
MyApp.app/Contents
├── Info.plist
├── MacOS/
│ └── MyApp
└── Frameworks/
└── MyApp Helper.app
├── Info.plist
└── MacOS/
└── MyApp Helper
注意也可以通过修改产品名称并从源码构建来重塑 Electron 品牌。具体做法是在 args.gn 文件中设置对应的产品名称构建参数(electron_product_name = "YourProductName"),然后重新编译。但并不推荐这么做,因为搭建源码编译环境并非易事,且相当耗时。
├── Info.plist
├── MacOS/
│ └── MyApp
└── Frameworks/
└── MyApp Helper.app
├── Info.plist
└── MacOS/
└── MyApp Helper
注意也可以通过修改产品名称并从源码构建来重塑 Electron 品牌。具体做法是在 args.gn 文件中设置对应的产品名称构建参数(electron_product_name = "YourProductName"),然后重新编译。但并不推荐这么做,因为搭建源码编译环境并非易事,且相当耗时。