2014-05-04 14:32:12 +04:00
|
|
|
|
# Application distribution
|
|
|
|
|
|
2015-04-16 06:31:12 +03:00
|
|
|
|
To distribute your app with Electron, you should name the folder of your app
|
|
|
|
|
as `app`, and put it under Electron's resources directory (on OS X it is
|
2015-04-17 06:59:40 +03:00
|
|
|
|
`Electron.app/Contents/Resources/`, and on Linux and Windows it is
|
|
|
|
|
`resources/`), like this:
|
2014-05-04 14:32:12 +04:00
|
|
|
|
|
2015-02-02 11:21:23 +03:00
|
|
|
|
On OS X:
|
2014-05-04 14:32:12 +04:00
|
|
|
|
|
|
|
|
|
```text
|
2015-04-16 06:31:12 +03:00
|
|
|
|
electron/Electron.app/Contents/Resources/app/
|
2014-05-04 14:32:12 +04:00
|
|
|
|
├── package.json
|
|
|
|
|
├── main.js
|
|
|
|
|
└── index.html
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
On Windows and Linux:
|
|
|
|
|
|
|
|
|
|
```text
|
2015-04-16 06:31:12 +03:00
|
|
|
|
electron/resources/app
|
2014-05-04 14:32:12 +04:00
|
|
|
|
├── package.json
|
|
|
|
|
├── main.js
|
|
|
|
|
└── index.html
|
|
|
|
|
```
|
|
|
|
|
|
2015-04-17 06:59:40 +03:00
|
|
|
|
Then execute `Electron.app` (or `electron` on Linux, `electron.exe` on Windows),
|
|
|
|
|
and Electron will start as your app. The `electron` directory would then be
|
2014-05-04 14:32:12 +04:00
|
|
|
|
your distribution that should be delivered to final users.
|
|
|
|
|
|
2014-12-29 21:46:15 +03:00
|
|
|
|
## Packaging your app into a file
|
|
|
|
|
|
|
|
|
|
Apart from shipping your app by copying all its sources files, you can also
|
|
|
|
|
package your app into an [asar](https://github.com/atom/asar) archive to avoid
|
|
|
|
|
exposing your app's source code to users.
|
|
|
|
|
|
|
|
|
|
To use an `asar` archive to replace the `app` folder, you need to rename the
|
2015-04-16 06:31:12 +03:00
|
|
|
|
archive to `app.asar`, and put it under Electron's resources directory like
|
|
|
|
|
bellow, and Electron will then try read the archive and start from it.
|
2014-12-29 21:46:15 +03:00
|
|
|
|
|
2015-02-02 11:21:23 +03:00
|
|
|
|
On OS X:
|
2014-12-29 21:46:15 +03:00
|
|
|
|
|
|
|
|
|
```text
|
2015-04-16 06:31:12 +03:00
|
|
|
|
electron/Electron.app/Contents/Resources/
|
2014-12-29 21:46:15 +03:00
|
|
|
|
└── app.asar
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
On Windows and Linux:
|
|
|
|
|
|
|
|
|
|
```text
|
2015-04-16 06:31:12 +03:00
|
|
|
|
electron/resources/
|
2014-12-29 21:46:15 +03:00
|
|
|
|
└── app.asar
|
|
|
|
|
```
|
2014-12-08 08:38:29 +03:00
|
|
|
|
|
2014-12-29 21:46:15 +03:00
|
|
|
|
More details can be found in [Application packaging](application-packaging.md).
|
|
|
|
|
|
2014-12-29 23:12:04 +03:00
|
|
|
|
## Rebranding with downloaded binaries
|
2014-12-29 21:46:15 +03:00
|
|
|
|
|
2015-04-16 06:31:12 +03:00
|
|
|
|
After bundling your app into Electron, you will want to rebrand Electron
|
2014-12-29 23:12:04 +03:00
|
|
|
|
before distributing it to users.
|
2014-09-29 17:34:54 +04:00
|
|
|
|
|
2014-12-29 23:12:04 +03:00
|
|
|
|
### Windows
|
2014-09-29 17:34:54 +04:00
|
|
|
|
|
2015-04-17 06:59:40 +03:00
|
|
|
|
You can rename `electron.exe` to any name you like, and edit its icon and other
|
|
|
|
|
information with tools like [rcedit](https://github.com/atom/rcedit) or
|
|
|
|
|
[ResEdit](http://www.resedit.net).
|
2014-12-29 23:12:04 +03:00
|
|
|
|
|
|
|
|
|
### OS X
|
2014-12-29 21:46:15 +03:00
|
|
|
|
|
2015-04-17 06:59:40 +03:00
|
|
|
|
You can rename `Electron.app` to any name you want, and you also have to rename
|
|
|
|
|
the `CFBundleDisplayName`, `CFBundleIdentifier` and `CFBundleName` fields in
|
|
|
|
|
following files:
|
2014-12-29 21:46:15 +03:00
|
|
|
|
|
2015-04-16 06:31:12 +03:00
|
|
|
|
* `Electron.app/Contents/Info.plist`
|
2015-04-17 06:59:40 +03:00
|
|
|
|
* `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:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
MyApp.app/Contents
|
|
|
|
|
├── Info.plist
|
|
|
|
|
├── MacOS/
|
|
|
|
|
│ └── MyApp
|
|
|
|
|
└── Frameworks/
|
|
|
|
|
├── MyApp Helper EH.app
|
|
|
|
|
| ├── Info.plist
|
|
|
|
|
| └── MacOS/
|
|
|
|
|
| └── MyApp Helper EH
|
|
|
|
|
├── MyApp Helper NP.app
|
|
|
|
|
| ├── Info.plist
|
|
|
|
|
| └── MacOS/
|
|
|
|
|
| └── MyApp Helper NP
|
|
|
|
|
└── MyApp Helper.app
|
|
|
|
|
├── Info.plist
|
|
|
|
|
└── MacOS/
|
|
|
|
|
└── MyApp Helper
|
|
|
|
|
```
|
2014-12-29 21:46:15 +03:00
|
|
|
|
|
2014-12-29 23:12:04 +03:00
|
|
|
|
### Linux
|
2014-12-29 21:46:15 +03:00
|
|
|
|
|
2015-04-17 06:59:40 +03:00
|
|
|
|
You can rename the `electron` executable to any name you like.
|
2014-12-29 23:12:04 +03:00
|
|
|
|
|
2015-04-16 06:31:12 +03:00
|
|
|
|
## Rebranding by rebuilding Electron from source
|
2014-12-29 23:12:04 +03:00
|
|
|
|
|
2015-04-17 06:59:40 +03:00
|
|
|
|
It is also possible to rebrand Electron by changing the product name and
|
|
|
|
|
building it from source. To do this you need to override the `GYP_DEFINES`
|
|
|
|
|
environment variable and have a clean rebuild:
|
2014-12-29 23:12:04 +03:00
|
|
|
|
|
|
|
|
|
__Windows__
|
|
|
|
|
|
2015-05-27 22:51:19 +03:00
|
|
|
|
```bash
|
2015-03-23 05:35:35 +03:00
|
|
|
|
> set "GYP_DEFINES=project_name=myapp product_name=MyApp"
|
2015-04-17 06:59:40 +03:00
|
|
|
|
> python script\clean.py
|
2014-12-29 23:12:04 +03:00
|
|
|
|
> python script\bootstrap.py
|
2015-04-17 06:59:40 +03:00
|
|
|
|
> python script\build.py -c R -t myapp
|
2014-12-29 23:12:04 +03:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
__Bash__
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$ export GYP_DEFINES="project_name=myapp product_name=MyApp"
|
2015-04-17 06:59:40 +03:00
|
|
|
|
$ script/clean.py
|
2014-12-29 23:12:04 +03:00
|
|
|
|
$ script/bootstrap.py
|
|
|
|
|
$ script/build.py -c Release -t myapp
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### grunt-build-atom-shell
|
|
|
|
|
|
2015-04-16 06:31:12 +03:00
|
|
|
|
Manually checking out Electron's code and rebuilding could be complicated, so
|
2014-12-29 23:12:04 +03:00
|
|
|
|
a Grunt task has been created that will handle this automatically:
|
|
|
|
|
[grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell).
|
|
|
|
|
|
|
|
|
|
This task will automatically handle editing the `.gyp` file, building from
|
|
|
|
|
source, then rebuilding your app's native Node modules to match the new
|
|
|
|
|
executable name.
|