Create a Windows installer for an Electron app
Package an Electron app with Electron Packager or Forge, then turn the output folder into a Setup.exe with a wizard, shortcuts and an uninstaller, no electron-builder configuration needed.
Updated October 31, 2026 · 3 min read
Electron gives you a working Windows app in a folder: MyApp.exe, a few DLLs, resources/app.asar and the locales. Turning that folder into a Setup.exe is a separate step, and the usual tools (electron-builder, Squirrel, electron-forge makers) each bring their own configuration, quirks and build-machine requirements. If you'd rather not learn them for a wizard-style installer, this is the short route.
Step 1: package the app into a folder
You need the packaged app, not the dev project. Either tool below produces a folder you can ship.
Electron Packager (one command, no config file):
npx @electron/packager . MyApp --platform=win32 --arch=x64 --icon=build/icon.ico --overwrite
This creates MyApp-win32-x64/ with MyApp.exe inside.
Electron Forge, if your project already uses it:
npm run package
The folder appears under out/, for example out/MyApp-win32-x64/.
Both commands run on Windows, macOS and Linux. The --icon flag (or Forge's packagerConfig.icon) sets the icon embedded in MyApp.exe; keep that .ico file handy for the installer too.
Open the folder and double-click MyApp.exe to make sure the packaged app starts. Set --arch=ia32 instead if you need a 32-bit build.
Step 2: zip the folder
Zip the contents of MyApp-win32-x64/ (the .exe, the DLLs, resources/, locales/), not the parent project. Everything in the zip is installed as is, so leave out anything that shouldn't ship.
Step 3: build the installer
- Upload the zip to ExeTup. It lists the files and picks
MyApp.exeas the main program; confirm it. - Enter the app name, version (match
package.json), publisher and an optional licence. - Choose the install scope. Electron apps are commonly installed per user, which needs no admin rights and matches what Squirrel-based installers do. Choose all users if you want the app in Program Files for everyone on the machine.
- Keep 64-bit for an x64 package.
- Upload the same
.icofor the installer and shortcuts, turn on the Start Menu and Desktop shortcuts, and "launch after install" if you like. - Build, download
Setup.exe, and test it on Windows.
Things specific to Electron
- Size. A packaged Electron app is 150 to 250 MB uncompressed. The installer uses solid LZMA compression, which typically brings it down to 60 to 90 MB. Check the upload limit on the pricing section before zipping; it is set by the site.
- Auto-updates. This installer does not include an update feed. If you use
electron-updateror Squirrel's update mechanism, keep that path; this guide is for apps that ship new versions as a new installer, which is simpler and fine for many apps. - Start-up launch. Prefer the installer's "launch at start-up" option over
app.setLoginItemSettingswhen you want the choice made at install time; both write the same kind of Run entry. - Code signing. The packaged
MyApp.exeand theSetup.exeare unsigned unless you sign them. Unsigned downloads can trigger the SmartScreen warning; see the SmartScreen guide.
Compared with electron-builder's NSIS target
electron-builder can also produce an NSIS installer, and it is a good tool when you need its full feature set: delta updates, custom NSIS scripts, MSI output, signing hooks. The trade-off is configuration and a build environment to maintain. ExeTup builds the same kind of NSIS installer from the packaged folder, with the options set in a form, which suits teams who release occasionally or who build on a Mac and don't want a Windows pipeline for the installer alone.
FAQ
Can I upload the Electron project folder instead of the packaged app?
No. The installer wraps the output of Electron Packager or Forge: the folder that contains MyApp.exe. The source project, node_modules and the dev tooling don't belong in it.
Which install scope should an Electron app use?
Per user is the common choice, because it installs without an admin prompt into the user's own folder. Choose all users when IT departments deploy the app for every account on a machine.
Does the installer handle the app being open during uninstall?
The uninstaller removes the files it installed. Ask users to close the app first, as with any Windows program; a running .exe can't be deleted until it exits.
Will this work for apps built with Tauri or NW.js?
Yes. Any folder with a Windows .exe and its files can be wrapped. Tauri ships its own bundler, but the plain packaged output works the same way here.
Related guides
- How to make a Setup.exe for your Windows app (no code)What a Setup.exe actually does, the three ways to make one, and how to turn an app folder into a professional installer in minutes without writing an installer script.
- Create a Windows installer on a Mac or LinuxYour options for building a Setup.exe when you develop on macOS or Linux, from cross-compiling NSIS to a browser-only build, and how to test the result without owning a Windows PC.
- "Windows protected your PC": what the SmartScreen warning means and how to get rid of itWhy Windows shows the "unknown publisher" warning on a new installer, what users can click, and how code signing and reputation make it go away.