Skip to content

Build an NSIS installer online, without writing a script

What NSIS is, what a minimal .nsi script looks like, and how to get a standard NSIS Setup.exe with the Modern UI wizard, shortcuts and an uninstaller from a form instead of a script.

Updated October 31, 2026 · 3 min read

NSIS, the Nullsoft Scriptable Install System, has been the quiet workhorse behind Windows installers for over twenty years. VLC, 7-Zip, Audacity and countless Electron apps ship with it. It is free, produces small installers, and does exactly what its script says. The script is also what stops many people: you learn a macro language to get a wizard most apps want in the same shape anyway. This guide shows what the script involves and how to get the same installer without writing it.

What NSIS does

makensis compiles a text script (.nsi) into a self-contained Setup.exe. The script declares the pages of the wizard, the files to install, the shortcuts and registry entries to create, and an uninstall section that reverses it all. With the Modern UI (MUI2.nsh) you get the familiar welcome, licence, folder, progress and finish pages, translated into dozens of languages.

The output is compact: solid LZMA compression often beats a zip of the same files. Installers support silent mode (/S) and a custom install folder (/D=) with no extra work.

What the script looks like

A minimal, realistic script for an app folder runs to about eighty lines. The skeleton:

!include MUI2.nsh
Name "My App"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES64\My App"
RequestExecutionLevel admin

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "license.txt"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"

Section "Install"
  SetOutPath "$INSTDIR"
  File /r "app\*"
  WriteUninstaller "$INSTDIR\uninstall.exe"
  CreateShortcut "$SMPROGRAMS\My App.lnk" "$INSTDIR\MyApp.exe"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\My App" "DisplayName" "My App"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\My App" "UninstallString" "$INSTDIR\uninstall.exe"
SectionEnd

Section "Uninstall"
  Delete "$INSTDIR\MyApp.exe"
  RMDir /r "$INSTDIR"
  Delete "$SMPROGRAMS\My App.lnk"
  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\My App"
SectionEnd

The real one grows from there: version information for the file properties, a desktop shortcut, 64-bit registry views, per-user installs under $LOCALAPPDATA, a language selection dialog, "run after install", an estimated size for Windows Settings, and an uninstaller that deletes only the files it installed rather than the whole folder (users do put their own files next to apps). Each is a few lines, and each is a place to get a detail wrong.

Getting the same installer from a form

ExeTup is an NSIS installer builder: it generates a script like the one above from your answers, compiles it with makensis in the cloud and gives you the Setup.exe. What you fill in:

  • Files: a zip of the app folder, or a single .exe, plus optional "other files" to install alongside.
  • Details: name, version, publisher, website, licence text.
  • Options: all users or current user, 64-bit or 32-bit, Start Menu and Desktop shortcuts, launch after install, launch at start-up.
  • Languages: any of fifteen, with NSIS's language dialog when you pick more than one.
  • Icon: a .ico for the installer and the shortcuts.

The result is a standard NSIS installer with the Modern UI, solid LZMA compression, the uninstaller registered in Windows Settings, version info in the file properties, and /S silent installs. Every value you type is escaped before it reaches the script, which matters because NSIS scripts can run commands at compile time.

When to write the script yourself

Write NSIS by hand when you need custom pages, plugins, conditional sections, service installation, or integration with a CI pipeline that already builds on Windows. The NSIS documentation and the examples shipped with it are good. For an app that needs the standard wizard, shortcuts and an uninstaller, generating the script is faster and harder to get wrong.

FAQ

Is the output a real NSIS installer?

Yes. ExeTup generates an NSIS script and compiles it with the official makensis. The Setup.exe behaves like any NSIS installer, including /S and /D= switches.

Can I download the generated .nsi script?

The script is generated at build time from your settings. The installer itself is what you download; its options are visible in the preview before you build.

Does NSIS run on Mac or Linux?

makensis compiles on all three platforms, and Homebrew and apt package it. You still write the script yourself. ExeTup needs only a browser; see building a Windows installer on a Mac.

Which languages are supported?

English, Simplified Chinese, Hindi, Spanish, French, Arabic, Brazilian Portuguese, Russian, Indonesian, German, Japanese, Turkish, Korean, Vietnamese and Italian, using NSIS's own translations.

Related guides