electron/docs/tutorial/application-distribution.md

2.5 KiB

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:

On Mac OS X:

atom-shell/Atom.app/Contents/Resources/app/
├── package.json
├── main.js
└── index.html

On Windows and Linux:

atom-shell/resources/app
├── package.json
├── main.js
└── index.html

Then execute Atom.app (or atom on Linux, and atom.exe on Windows), and atom-shell will start as your app. The atom-shell directory would then be your distribution that should be delivered to final users.

Renaming Atom Shell for your app

The best way to rename Atom Shell is to change the atom.gyp file, then build from source. Open up atom.gyp and change the first lines:

'project_name': 'atom',
'product_name': 'Atom',
'framework_name': 'Atom Framework',

Once you make the change, re-run script/bootstrap then run the command:

script/build.py -c Release -t $whatever_you_chose_for_project_name

If your app is OS X / Linux-only, you can also simply rename the "Atom.app" folder as well as the names under "Framework" (i.e. "Atom Framework.framework" => "MyApp Framework.framework"), but this will break loading native Node modules on Windows.

Fixing this is complicated, but a Grunt task has been created that will handle this automatically, 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.

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 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, atom-shell will then try read the archive and start from it.

More details can be found in Application packaging.

Building with grunt

If you build your application with grunt there is a grunt task that can download atom-shell for your current platform automatically: grunt-download-atom-shell.