| 
									
										
										
										
											2015-08-30 22:30:36 -07:00
										 |  |  | # Build Instructions (Windows)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Follow the guidelines below for building Electron on Windows. | 
					
						
							| 
									
										
										
										
											2013-09-09 15:35:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | ## Prerequisites
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 19:14:27 -08:00
										 |  |  | * Windows 7 / Server 2008 R2 or higher | 
					
						
							| 
									
										
										
										
											2016-01-11 20:52:32 +08:00
										 |  |  | * Visual Studio 2013 with Update 4 - [download VS 2013 Community Edition for | 
					
						
							|  |  |  |   free](https://www.visualstudio.com/news/vs2013-community-vs). | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | * [Python 2.7](http://www.python.org/download/releases/2.7/) | 
					
						
							| 
									
										
										
										
											2015-04-16 14:50:46 +08:00
										 |  |  | * [Node.js](http://nodejs.org/download/) | 
					
						
							| 
									
										
										
										
											2015-08-30 22:30:36 -07:00
										 |  |  | * [Git](http://git-scm.com) | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-30 22:30:36 -07:00
										 |  |  | If you don't currently have a Windows installation, [modern.ie](https://www.modern.ie/en-us/virtualization-tools#downloads) | 
					
						
							|  |  |  | has timebombed versions of Windows that you can use to build Electron. | 
					
						
							| 
									
										
										
										
											2014-11-14 19:21:12 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-30 22:30:36 -07: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 15:43:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-29 16:37:51 +02:00
										 |  |  | **Note:** Even though Visual Studio is not used for building, it's still | 
					
						
							| 
									
										
										
										
											2015-06-30 13:00:20 +01:00
										 |  |  | **required** because we need the build toolchains it provides. | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-30 22:30:36 -07:00
										 |  |  | **Note:** Visual Studio 2015 will not work. Please make sure to get MSVS | 
					
						
							|  |  |  | **2013**. | 
					
						
							| 
									
										
										
										
											2015-08-14 10:25:18 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-30 22:30:36 -07:00
										 |  |  | ## Getting the Code
 | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 19:13:40 -08:00
										 |  |  | ```powershell | 
					
						
							| 
									
										
										
										
											2015-08-31 21:10:48 -07:00
										 |  |  | $ git clone https://github.com/atom/electron.git | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Bootstrapping
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-29 16:37:51 +02:00
										 |  |  | The bootstrap script will download all necessary build dependencies and create | 
					
						
							| 
									
										
										
										
											2015-08-30 22:30:36 -07:00
										 |  |  | the build project files. Notice that we're using `ninja` to build Electron so | 
					
						
							| 
									
										
										
										
											2013-08-29 16:37:51 +02:00
										 |  |  | there is no Visual Studio project generated. | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 19:13:40 -08:00
										 |  |  | ```powershell | 
					
						
							| 
									
										
										
										
											2015-08-31 21:10:48 -07:00
										 |  |  | $ cd electron | 
					
						
							|  |  |  | $ python script\bootstrap.py -v | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Building
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Build both Release and Debug targets: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 19:13:40 -08:00
										 |  |  | ```powershell | 
					
						
							| 
									
										
										
										
											2015-08-31 21:10:48 -07:00
										 |  |  | $ python script\build.py | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You can also only build the Debug target: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 19:13:40 -08:00
										 |  |  | ```powershell | 
					
						
							| 
									
										
										
										
											2015-08-31 21:10:48 -07:00
										 |  |  | $ python script\build.py -c D | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-27 23:05:06 +03:00
										 |  |  | After building is done, you can find `electron.exe` under `out\D` (debug | 
					
						
							| 
									
										
										
										
											2015-08-25 23:28:41 +03:00
										 |  |  | target) or under `out\R` (release target). | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-30 22:30:36 -07:00
										 |  |  | ## 64bit Build
 | 
					
						
							| 
									
										
										
										
											2014-05-05 09:48:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-16 14:50:46 +08:00
										 |  |  | To build for the 64bit target, you need to pass `--target_arch=x64` when running | 
					
						
							|  |  |  | the bootstrap script: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```powershell | 
					
						
							| 
									
										
										
										
											2015-08-31 21:10:48 -07:00
										 |  |  | $ python script\bootstrap.py -v --target_arch=x64 | 
					
						
							| 
									
										
										
										
											2015-04-16 14:50:46 +08:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The other building steps are exactly the same. | 
					
						
							| 
									
										
										
										
											2014-05-05 09:48:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | ## Tests
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-30 22:30:36 -07:00
										 |  |  | Test your changes conform to the project coding style using: | 
					
						
							| 
									
										
										
										
											2015-08-08 23:25:27 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```powershell | 
					
						
							| 
									
										
										
										
											2015-08-31 21:10:48 -07:00
										 |  |  | $ python script\cpplint.py | 
					
						
							| 
									
										
										
										
											2015-08-08 23:25:27 +03:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Test functionality using: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 19:13:40 -08:00
										 |  |  | ```powershell | 
					
						
							| 
									
										
										
										
											2015-08-31 21:10:48 -07:00
										 |  |  | $ python script\test.py | 
					
						
							| 
									
										
										
										
											2013-08-29 16:37:51 +02:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2014-04-29 11:07:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-27 23:05:06 +03:00
										 |  |  | Tests that include native modules (e.g. `runas`) can't be executed with the | 
					
						
							| 
									
										
										
										
											2015-08-30 22:30:36 -07:00
										 |  |  | debug build (see [#2558](https://github.com/atom/electron/issues/2558) for | 
					
						
							|  |  |  | details), but they will work with the release build. | 
					
						
							| 
									
										
										
										
											2015-08-27 23:05:06 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | To run the tests with the release build use: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```powershell | 
					
						
							| 
									
										
										
										
											2015-08-31 21:10:48 -07:00
										 |  |  | $ python script\test.py -R | 
					
						
							| 
									
										
										
										
											2015-08-27 23:05:06 +03:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-29 11:07:17 +08:00
										 |  |  | ## Troubleshooting
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-18 19:47:27 +08:00
										 |  |  | ### Command xxxx not found
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If you encountered an error like `Command xxxx not found`, you may try to use | 
					
						
							| 
									
										
										
										
											2014-06-27 11:08:00 +08:00
										 |  |  | the `VS2012 Command Prompt` console to execute the build scripts. | 
					
						
							| 
									
										
										
										
											2014-05-18 19:47:27 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-03 20:22:50 -07:00
										 |  |  | ### Fatal internal compiler error: C1001
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Make sure you have the latest Visual Studio update installed. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-29 11:07:17 +08:00
										 |  |  | ### Assertion failed: ((handle))->activecnt >= 0
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 19:15:11 -08:00
										 |  |  | If building under Cygwin, you may see `bootstrap.py` failed with following | 
					
						
							| 
									
										
										
										
											2014-04-29 11:07:17 +08:00
										 |  |  | error: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 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-30 22:30:36 -07: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 11:07:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-31 21:10:48 -07:00
										 |  |  | ```powershell | 
					
						
							|  |  |  | $ /cygdrive/c/Python27/python.exe script/bootstrap.py | 
					
						
							| 
									
										
										
										
											2014-04-29 11:07:17 +08:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2014-05-15 14:32:34 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-25 09:11:06 +08:00
										 |  |  | ### LNK1181: cannot open input file 'kernel32.lib'
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-30 22:30:36 -07:00
										 |  |  | Try reinstalling 32bit Node.js. | 
					
						
							| 
									
										
										
										
											2014-11-13 19:11:56 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | ### Error: ENOENT, stat 'C:\Users\USERNAME\AppData\Roaming\npm'
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Simply making that directory [should fix the problem](http://stackoverflow.com/a/25095327/102704): | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 19:13:40 -08:00
										 |  |  | ```powershell | 
					
						
							| 
									
										
										
										
											2015-08-31 21:10:48 -07:00
										 |  |  | $ mkdir ~\AppData\Roaming\npm | 
					
						
							| 
									
										
										
										
											2014-11-13 19:11:56 -08:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2014-12-29 19:09:36 -08: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 | 
					
						
							|  |  |  | PowerShell or VS2012 Command Prompt instead. |