![trop[bot]](/assets/img/avatar_default.png) 27cdf17562
			
		
	
	
	
	
	27cdf17562Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Erick Zhao <erick@hotmail.ca>
		
			
				
	
	
		
			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
 |