2014-05-04 10:32:12 +00:00
|
|
|
# Application distribution
|
|
|
|
|
|
|
|
To distribute your app with atom-shell, you should name the folder of your app
|
|
|
|
as `app`, and put it under atom-shell's resources directory (on OS X it is
|
|
|
|
`Atom.app/Contents/Resources/`, and on Linux and Windows it is `resources/`),
|
|
|
|
like this:
|
|
|
|
|
2015-02-02 08:21:23 +00:00
|
|
|
On OS X:
|
2014-05-04 10:32:12 +00:00
|
|
|
|
|
|
|
```text
|
|
|
|
atom-shell/Atom.app/Contents/Resources/app/
|
|
|
|
├── package.json
|
|
|
|
├── main.js
|
|
|
|
└── index.html
|
|
|
|
```
|
|
|
|
|
|
|
|
On Windows and Linux:
|
|
|
|
|
|
|
|
```text
|
|
|
|
atom-shell/resources/app
|
|
|
|
├── package.json
|
|
|
|
├── main.js
|
|
|
|
└── index.html
|
|
|
|
```
|
|
|
|
|
2014-05-07 11:04:14 +00:00
|
|
|
Then execute `Atom.app` (or `atom` on Linux, and `atom.exe` on Windows), and
|
2014-05-04 10:32:12 +00:00
|
|
|
atom-shell will start as your app. The `atom-shell` directory would then be
|
|
|
|
your distribution that should be delivered to final users.
|
|
|
|
|
2014-12-29 18:46:15 +00: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
|
|
|
|
archive to `app.asar`, and put it under atom-shell's resources directory like
|
|
|
|
bellow, and atom-shell will then try read the archive and start from it.
|
|
|
|
|
2015-02-02 08:21:23 +00:00
|
|
|
On OS X:
|
2014-12-29 18:46:15 +00:00
|
|
|
|
|
|
|
```text
|
|
|
|
atom-shell/Atom.app/Contents/Resources/
|
|
|
|
└── app.asar
|
|
|
|
```
|
|
|
|
|
|
|
|
On Windows and Linux:
|
|
|
|
|
|
|
|
```text
|
|
|
|
atom-shell/resources/
|
|
|
|
└── app.asar
|
|
|
|
```
|
2014-12-08 05:38:29 +00:00
|
|
|
|
2014-12-29 18:46:15 +00:00
|
|
|
More details can be found in [Application packaging](application-packaging.md).
|
|
|
|
|
2014-12-29 20:12:04 +00:00
|
|
|
## Rebranding with downloaded binaries
|
2014-12-29 18:46:15 +00:00
|
|
|
|
2014-12-29 20:12:04 +00:00
|
|
|
After bundling your app into atom-shell, you will want to rebrand atom-shell
|
|
|
|
before distributing it to users.
|
2014-09-29 13:34:54 +00:00
|
|
|
|
2014-12-29 18:46:15 +00:00
|
|
|
If you don't care about the executable name on Windows or the helper process
|
|
|
|
name on OS X, you can simply rename the downloaded binaries, and there is also a
|
2014-12-29 20:12:04 +00:00
|
|
|
grunt task that can download prebuilt atom-shell binaries for your current
|
|
|
|
platform automatically:
|
2014-12-29 18:46:15 +00:00
|
|
|
[grunt-download-atom-shell](https://github.com/atom/grunt-download-atom-shell).
|
2014-09-29 13:34:54 +00:00
|
|
|
|
2014-12-29 20:12:04 +00:00
|
|
|
### Windows
|
2014-09-29 13:34:54 +00:00
|
|
|
|
2014-12-29 18:46:15 +00:00
|
|
|
You can not rename the `atom.exe` otherwise native modules will not load. But
|
|
|
|
you can edit the executable's icon and other information with tools like
|
|
|
|
[rcedit](https://github.com/atom/rcedit) or [ResEdit](http://www.resedit.net).
|
2014-05-04 10:32:12 +00:00
|
|
|
|
2014-12-29 20:12:04 +00:00
|
|
|
If you don't use any native Node module, it is fine to rename `atom.exe` to any
|
|
|
|
name you want.
|
|
|
|
|
|
|
|
### OS X
|
2014-12-29 18:46:15 +00:00
|
|
|
|
|
|
|
You can rename `Atom.app` to whatever you want, and you also have to rename the
|
|
|
|
`CFBundleDisplayName`, `CFBundleIdentifier` and `CFBundleName` fields in
|
2014-12-29 20:12:04 +00:00
|
|
|
following manifest files if they have these keys:
|
2014-12-29 18:46:15 +00:00
|
|
|
|
|
|
|
* `Atom.app/Contents/Info.plist`
|
|
|
|
* `Atom.app/Contents/Frameworks/Atom Helper.app/Contents/Info.plist`
|
|
|
|
|
2014-12-29 20:12:04 +00:00
|
|
|
### Linux
|
2014-12-29 18:46:15 +00:00
|
|
|
|
|
|
|
You can rename the `atom` executable to whatever you want.
|
2014-12-29 20:12:04 +00:00
|
|
|
|
|
|
|
## Rebranding by rebuilding atom-shell from source
|
|
|
|
|
|
|
|
The best way to rename atom-shell is to change the product name and then build
|
|
|
|
from source. To do this you need to override the `GYP_DEFINES` environment
|
|
|
|
variable and have a clean rebuild:
|
|
|
|
|
|
|
|
__Windows__
|
|
|
|
|
|
|
|
```cmd
|
2015-03-23 02:35:35 +00:00
|
|
|
> set "GYP_DEFINES=project_name=myapp product_name=MyApp"
|
2014-12-29 20:12:04 +00:00
|
|
|
> python script\bootstrap.py
|
|
|
|
> python script\build.py -c Release -t myapp
|
|
|
|
```
|
|
|
|
|
|
|
|
__Bash__
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ export GYP_DEFINES="project_name=myapp product_name=MyApp"
|
|
|
|
$ script/bootstrap.py
|
|
|
|
$ script/build.py -c Release -t myapp
|
|
|
|
```
|
|
|
|
|
|
|
|
### grunt-build-atom-shell
|
|
|
|
|
|
|
|
Manually checking out atom-shell's code and rebuilding could be complicated, so
|
|
|
|
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.
|