2015-08-31 05:30:36 +00:00
# Build Instructions (Windows)
Follow the guidelines below for building Electron on Windows.
2013-09-09 07:35:57 +00:00
2013-08-14 22:43:35 +00:00
## Prerequisites
2018-08-04 00:32:07 +00:00
* Windows 10 / Server 2012 R2 or higher
2018-07-13 22:43:27 +00:00
* Visual Studio 2017 15.7.2 or higher - [download VS 2017 Community Edition for
2018-03-13 05:21:09 +00:00
free](https://www.visualstudio.com/vs/)
2013-08-14 22:43:35 +00:00
* [Python 2.7 ](http://www.python.org/download/releases/2.7/ )
2018-01-12 15:24:48 +00:00
* [Node.js ](https://nodejs.org/download/ )
2015-08-31 05:30:36 +00:00
* [Git ](http://git-scm.com )
2017-04-21 00:22:15 +00:00
* [Debugging Tools for Windows ](https://msdn.microsoft.com/en-us/library/windows/hardware/ff551063.aspx )
if you plan on creating a full distribution since `symstore.exe` is used for
creating a symbol store from `.pdb` files.
2013-08-14 22:43:35 +00:00
2016-04-22 13:53:26 +00:00
If you don't currently have a Windows installation,
2016-07-06 02:34:33 +00:00
[dev.microsoftedge.com ](https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ )
2015-08-31 05:30:36 +00:00
has timebombed versions of Windows that you can use to build Electron.
2014-11-15 03:21:12 +00:00
2015-08-31 05:30:36 +00:00
Building Electron is done entirely with command-line scripts and cannot be done
with Visual Studio. You can develop Electron with any editor but support for
building with Visual Studio will come in the future.
2013-08-14 22:43:35 +00:00
2013-08-29 14:37:51 +00:00
**Note:** Even though Visual Studio is not used for building, it's still
2015-06-30 12:00:20 +00:00
**required** because we need the build toolchains it provides.
2013-08-14 22:43:35 +00:00
2015-08-31 05:30:36 +00:00
## Getting the Code
2013-08-14 22:43:35 +00:00
2014-11-15 03:13:40 +00:00
```powershell
2016-03-31 23:49:59 +00:00
$ git clone https://github.com/electron/electron.git
2013-08-14 22:43:35 +00:00
```
## Bootstrapping
2013-08-29 14:37:51 +00:00
The bootstrap script will download all necessary build dependencies and create
2015-08-31 05:30:36 +00:00
the build project files. Notice that we're using `ninja` to build Electron so
2013-08-29 14:37:51 +00:00
there is no Visual Studio project generated.
2013-08-14 22:43:35 +00:00
2018-08-12 21:01:46 +00:00
To bootstrap for a static, non-developer build, run:
2014-11-15 03:13:40 +00:00
```powershell
2015-09-01 04:10:48 +00:00
$ cd electron
2018-08-12 21:01:46 +00:00
$ npm run bootstrap
```
Or to bootstrap for a development session that builds faster by not statically linking:
```powershell
$ cd electron
$ npm run bootstrap:dev
2013-08-14 22:43:35 +00:00
```
## Building
2018-08-12 21:01:46 +00:00
Build both `Release` and `Debug` targets:
2013-08-14 22:43:35 +00:00
2014-11-15 03:13:40 +00:00
```powershell
2018-08-12 21:01:46 +00:00
$ npm run build
2013-08-14 22:43:35 +00:00
```
2018-08-12 21:01:46 +00:00
You can also build either the `Debug` or `Release` target on its own:
```powershell
$ npm run build:dev
```
2013-08-14 22:43:35 +00:00
2014-11-15 03:13:40 +00:00
```powershell
2018-08-12 21:01:46 +00:00
$ npm run build:release
2013-08-14 22:43:35 +00:00
```
2015-08-27 20:05:06 +00:00
After building is done, you can find `electron.exe` under `out\D` (debug
2015-08-25 20:28:41 +00:00
target) or under `out\R` (release target).
2013-08-14 22:43:35 +00:00
2016-07-26 08:40:58 +00:00
## 32bit Build
2014-05-05 01:48:44 +00:00
2016-07-26 08:40:58 +00:00
To build for the 32bit target, you need to pass `--target_arch=ia32` when
running the bootstrap script:
2015-04-16 06:50:46 +00:00
```powershell
2016-07-26 08:40:58 +00:00
$ python script\bootstrap.py -v --target_arch=ia32
2015-04-16 06:50:46 +00:00
```
The other building steps are exactly the same.
2014-05-05 01:48:44 +00:00
2016-07-26 08:42:12 +00:00
## Visual Studio project
To generate a Visual Studio project, you can pass the `--msvs` parameter:
```powershell
$ python script\bootstrap.py --msvs
```
2016-09-21 18:10:52 +00:00
## Cleaning
To clean the build files:
```powershell
$ npm run clean
```
2017-03-17 18:47:20 +00:00
To clean only `out` and `dist` directories:
2017-03-17 18:44:18 +00:00
2017-11-24 10:13:57 +00:00
```sh
2017-03-17 18:44:18 +00:00
$ npm run clean-build
```
2017-03-20 17:32:16 +00:00
**Note:** Both clean commands require running `bootstrap` again before building.
2017-03-17 18:44:18 +00:00
2013-08-14 22:43:35 +00:00
## Tests
2016-10-06 17:25:33 +00:00
See [Build System Overview: Tests ](build-system-overview.md#tests )
2015-08-27 20:05:06 +00:00
2014-04-29 03:07:17 +00:00
## Troubleshooting
2014-05-18 11:47:27 +00:00
### Command xxxx not found
If you encountered an error like `Command xxxx not found` , you may try to use
2016-05-24 00:32:33 +00:00
the `VS2015 Command Prompt` console to execute the build scripts.
2014-05-18 11:47:27 +00:00
2015-04-04 03:22:50 +00:00
### Fatal internal compiler error: C1001
Make sure you have the latest Visual Studio update installed.
2014-04-29 03:07:17 +00:00
### Assertion failed: ((handle))->activecnt >= 0
2014-11-15 03:15:11 +00:00
If building under Cygwin, you may see `bootstrap.py` failed with following
2014-04-29 03:07:17 +00:00
error:
2017-11-24 10:13:57 +00:00
```sh
2014-04-29 03:07:17 +00:00
Assertion failed: ((handle))->activecnt >= 0, file src\win\pipe.c, line 1430
Traceback (most recent call last):
File "script/bootstrap.py", line 87, in < module >
sys.exit(main())
File "script/bootstrap.py", line 22, in main
update_node_modules('.')
File "script/bootstrap.py", line 56, in update_node_modules
execute([NPM, 'install'])
File "/home/zcbenz/codes/raven/script/lib/util.py", line 118, in execute
raise e
subprocess.CalledProcessError: Command '['npm.cmd', 'install']' returned non-zero exit status 3
```
2015-08-31 05:30:36 +00:00
This is caused by a bug when using Cygwin Python and Win32 Node together. The
solution is to use the Win32 Python to execute the bootstrap script (assuming
you have installed Python under `C:\Python27` ):
2014-04-29 03:07:17 +00:00
2015-09-01 04:10:48 +00:00
```powershell
$ /cygdrive/c/Python27/python.exe script/bootstrap.py
2014-04-29 03:07:17 +00:00
```
2014-05-15 06:32:34 +00:00
2014-06-25 01:11:06 +00:00
### LNK1181: cannot open input file 'kernel32.lib'
2015-08-31 05:30:36 +00:00
Try reinstalling 32bit Node.js.
2014-11-14 03:11:56 +00:00
### Error: ENOENT, stat 'C:\Users\USERNAME\AppData\Roaming\npm'
2018-05-08 05:16:09 +00:00
Creating that directory [should fix the problem ](https://stackoverflow.com/a/25095327/102704 ):
2014-11-14 03:11:56 +00:00
2014-11-15 03:13:40 +00:00
```powershell
2015-09-01 04:10:48 +00:00
$ mkdir ~\AppData\Roaming\npm
2014-11-14 03:11:56 +00:00
```
2014-12-30 03:09:36 +00:00
### node-gyp is not recognized as an internal or external command
You may get this error if you are using Git Bash for building, you should use
2016-05-24 00:32:33 +00:00
PowerShell or VS2015 Command Prompt instead.
2018-06-21 19:03:04 +00:00
### cannot create directory at '...': Filename too long
node.js has some [extremely long pathnames ](https://github.com/electron/node/tree/electron/deps/npm/node_modules/libnpx/node_modules/yargs/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/load-json-file/node_modules/parse-json/node_modules/error-ex/node_modules/is-arrayish ), and by default git on windows doesn't handle long pathnames correctly (even though windows supports them). This should fix it:
```sh
$ git config --system core.longpaths true
```