124 lines
4.1 KiB
Markdown
124 lines
4.1 KiB
Markdown
---
|
|
title: 'Application Packaging'
|
|
description: 'To distribute your app with Electron, you need to package and rebrand it. To do this, you can either use specialized tooling or manual approaches.'
|
|
slug: application-distribution
|
|
hide_title: false
|
|
---
|
|
|
|
To distribute your app with Electron, you need to package and rebrand it. To do this, you
|
|
can either use specialized tooling or manual approaches.
|
|
|
|
## With tooling
|
|
|
|
There are a couple tools out there that exist to package and distribute your Electron app.
|
|
We recommend using [Electron Forge](./forge-overview.md). You can check out
|
|
its [documentation](https://www.electronforge.io) directly, or refer to the [Packaging and Distribution](./tutorial-5-packaging.md)
|
|
part of the Electron tutorial.
|
|
|
|
## Manual packaging
|
|
|
|
If you prefer the manual approach, there are 2 ways to distribute your application:
|
|
|
|
- With prebuilt binaries
|
|
- With an app source code archive
|
|
|
|
### With prebuilt binaries
|
|
|
|
To distribute your app manually, you need to download Electron's
|
|
[prebuilt binaries](https://github.com/electron/electron/releases). Next, the folder
|
|
containing your app should be named `app` and placed in Electron's resources
|
|
directory as shown in the following examples.
|
|
|
|
:::note
|
|
The location of Electron's prebuilt binaries is indicated
|
|
with `electron/` in the examples below.
|
|
:::
|
|
|
|
```plain title='macOS'
|
|
electron/Electron.app/Contents/Resources/app/
|
|
├── package.json
|
|
├── main.js
|
|
└── index.html
|
|
```
|
|
|
|
```plain title='Windows and Linux'
|
|
electron/resources/app
|
|
├── package.json
|
|
├── main.js
|
|
└── index.html
|
|
```
|
|
|
|
Then execute `Electron.app` on macOS, `electron` on Linux, or `electron.exe`
|
|
on Windows, and Electron will start as your app. The `electron` directory
|
|
will then be your distribution to deliver to users.
|
|
|
|
### With an app source code archive (asar)
|
|
|
|
Instead of shipping your app by copying all of its source files, you can
|
|
package your app into an [asar][] archive to improve the performance of reading
|
|
files on platforms like Windows, if you are not already using a bundler such
|
|
as Parcel or Webpack.
|
|
|
|
To use an `asar` archive to replace the `app` folder, you need to rename the
|
|
archive to `app.asar`, and put it under Electron's resources directory like
|
|
below, and Electron will then try to read the archive and start from it.
|
|
|
|
```plain title='macOS'
|
|
electron/Electron.app/Contents/Resources/
|
|
└── app.asar
|
|
```
|
|
|
|
```plain title='Windows'
|
|
electron/resources/
|
|
└── app.asar
|
|
```
|
|
|
|
You can find more details on how to use `asar` in the
|
|
[`electron/asar` repository][asar].
|
|
|
|
### Rebranding with downloaded binaries
|
|
|
|
After bundling your app into Electron, you will want to rebrand Electron
|
|
before distributing it to users.
|
|
|
|
- **Windows:** You can rename `electron.exe` to any name you like, and edit
|
|
its icon and other information with tools like [rcedit](https://github.com/electron/rcedit).
|
|
- **Linux:** You can rename the `electron` executable to any name you like.
|
|
- **macOS:** You can rename `Electron.app` to any name you want, and you also have to rename
|
|
the `CFBundleDisplayName`, `CFBundleIdentifier` and `CFBundleName` fields in the
|
|
following files:
|
|
|
|
- `Electron.app/Contents/Info.plist`
|
|
- `Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist`
|
|
|
|
You can also rename the helper app to avoid showing `Electron Helper` in the
|
|
Activity Monitor, but make sure you have renamed the helper app's executable
|
|
file's name.
|
|
|
|
The structure of a renamed app would be like:
|
|
|
|
```plain
|
|
MyApp.app/Contents
|
|
├── Info.plist
|
|
├── MacOS/
|
|
│ └── MyApp
|
|
└── Frameworks/
|
|
└── MyApp Helper.app
|
|
├── Info.plist
|
|
└── MacOS/
|
|
└── MyApp Helper
|
|
```
|
|
|
|
:::note
|
|
|
|
it is also possible to rebrand Electron by changing the product name and
|
|
building it from source. To do this you need to set the build argument
|
|
corresponding to the product name (`electron_product_name = "YourProductName"`)
|
|
in the `args.gn` file and rebuild.
|
|
|
|
Keep in mind this is not recommended as setting up the environment to compile
|
|
from source is not trivial and takes significant time.
|
|
|
|
:::
|
|
|
|
[asar]: https://github.com/electron/asar
|