NSIS
The Nullsoft Scriptable Install System, a tiny open-source scripting language for building Windows installers that grew out of the Winamp setup program and still ships software for major publishers today.
Created by Nullsoft (Justin Frankel and contributors)
NSIS — the Nullsoft Scriptable Install System — is a small, open-source scripting language and compiler for building Windows installers. You write a plain-text script describing what files to copy, what registry keys to set, what pages the user sees, and what logic to run; the makensis compiler turns that script into a single, self-contained setup.exe. NSIS is prized for producing tiny installers with a very small overhead, which made it ideal for internet distribution in the dial-up era and keeps it relevant for bandwidth- and size-conscious software today.
A domain-specific language, not a general-purpose one. NSIS is a scripting language built for exactly one job: installing (and uninstalling) software on Windows. Its design choices — a shared stack, numbered registers, string-only variables, and a compiler that emits a Windows executable — all serve that goal, and give NSIS its distinctive, slightly low-level character.
History & Origins
NSIS was created by Nullsoft, the company founded by Justin Frankel that built Winamp, the era-defining Windows media player. As Winamp grew, distributing it as a plain ZIP file or a basic self-extracting archive became inadequate: the installer needed to run logic, write registry entries, and manage a growing world of third-party plugins. NSIS evolved out of two earlier Nullsoft packagers, PiMP (the Plugin Mini Packager) and its successor SuperPiMP, and the first public release, NSIS v1.0f, appeared on July 31, 2000.
A note on the year. Some sources date NSIS to 2001, when it became more widely known as open-source software, but the documented v1.0 public release is July 31, 2000. This page treats 2000 as the first appearance.
After the 2.0a0 alpha, the project migrated to SourceForge, where developers outside Nullsoft began contributing regularly. This transition mattered enormously: it turned NSIS from an in-house tool into a community-maintained open-source project with a liberal zlib/libpng-style license, which it retains to this day. Almost two years of work and seventeen release candidates later, NSIS 2.0 shipped on February 7, 2004, bringing the Modern UI, an easier plug-in architecture, LZMA compression, and multi-language installers.
Design Philosophy
NSIS is built around a few uncompromising priorities:
- Smallness. The installer stub adds only a small fixed overhead, so even simple installers stay tiny. This was a deliberate response to the limits of internet distribution.
- Scriptability. Rather than a fixed wizard, NSIS gives you a full scripting language with conditional logic, loops (via helper macros), functions, and a stack, so you can express “even the most complex installation tasks.”
- Extensibility through plug-ins. Functionality the core does not provide is added through DLL plug-ins that scripts call directly, keeping the base system lean.
- Windows-only output, portable compiler. Generated installers run only on Windows, but the
makensiscompiler itself can be built and run on POSIX systems such as Linux and BSD — useful for cross-platform build pipelines.
Key Features
Script structure
An NSIS script is organized into a handful of core constructs:
Sectionblocks define units of installation work (copying files, writing registry keys). Sections can be optional and grouped, which is what drives component-selection installers.Functionblocks hold reusable logic, including special callback functions like.onInitthat fire at defined moments during installation.- Pages define the wizard’s screens (welcome, license, directory, components, install, finish), assembled through the page system or the Modern UI macros.
Variables, registers, and the stack
NSIS variables are untyped strings. Alongside user-declared Var variables, scripts use built-in registers $0–$9 (plus $R0–$R9) and a shared stack manipulated with Push and Pop. This stack-and-register model gives NSIS its characteristic low-level feel and is how plug-ins and functions pass arguments and return values.
; A minimal NSIS script
Name "Hello"
OutFile "HelloSetup.exe"
InstallDir "$PROGRAMFILES\Hello"
Page directory
Page instfiles
Section "Install"
SetOutPath "$INSTDIR"
File "hello.exe"
WriteUninstaller "$INSTDIR\uninstall.exe"
SectionEnd
Compression and the Modern UI
NSIS can compress installer data with ZLib, BZip2, or LZMA, the last of which generally yields the smallest output. The Modern UI (MUI, and later MUI2) provides a polished, wizard-style interface layered on top of the page system, and LogicLib supplies readable ${If} / ${While} style control-flow macros that make scripts far more approachable than the raw underlying instructions.
Evolution
The largest leap came with NSIS 3.0 on July 24, 2016, which added optional Unicode installers so setups could display any language the OS supports, improved Windows 10 behavior, and a HiDPI-aware UI — all while keeping installers compatible with older Windows. Since then the 3.x line has seen steady, security-conscious maintenance: 3.10 (March 2024), 3.11 (March 2025), and 3.12 (April 19, 2026), the last of which closed a possible privilege-escalation issue for installers running as SYSTEM and added preliminary ARM64 support in the build of makensis.
| Version | Released | Highlights |
|---|---|---|
| 1.0f | Jul 2000 | First public release, built to distribute Winamp |
| 2.0 | Feb 2004 | Modern UI, plug-in system, LZMA, multi-language |
| 3.0 | Jul 2016 | Optional Unicode, Windows 10/HiDPI support |
| 3.11 | Mar 2025 | LogicLib and compiler improvements |
| 3.12 | Apr 2026 | Security fix, new string operators, preliminary ARM64 |
Current Relevance
More than two decades after its first release, NSIS remains an actively maintained, widely deployed installer system. It competes with both commercial tools (InstallShield, Advanced Installer) and other free systems (Inno Setup, WiX), and it underpins a great deal of modern software: electron-builder generates NSIS installers as its default Windows target, putting NSIS behind a large share of contemporary Electron desktop apps, and major publishers — among them names like Amazon, Dropbox, Google, Ubisoft, FL Studio, and McAfee — have used it to ship Windows software. The combination of tiny output, deep scriptability, a plug-in ecosystem, and a permissive license keeps it firmly in use.
Why It Matters
NSIS is a case study in how a tool built to solve one company’s immediate problem — getting Winamp onto millions of Windows desktops over slow connections — can become foundational infrastructure for an entire platform. By exposing installation as a programmable scripting language rather than a fixed wizard, it gave developers fine-grained control over the Windows setup experience and proved that an open-source, community-maintained installer could stand alongside expensive commercial products. Its emphasis on small size and flexibility, decisions rooted in the constraints of the early-2000s internet, turned out to be durable virtues, and they explain why a language that began as the Winamp setup program is still compiling installers in 2026.
Sources
Timeline
Notable Uses & Legacy
Winamp
NSIS was originally written by Nullsoft to package and distribute Winamp, the hugely popular Windows media player, including its sprawling third-party plugin ecosystem. Winamp remains the foundational use case that shaped the language.
electron-builder
The widely used electron-builder tooling produces NSIS-based installers as its default target for packaging Electron desktop applications on Windows, putting NSIS behind a large share of modern cross-platform desktop apps.
Major commercial publishers
NSIS has been used by large software companies — names commonly cited include Amazon, Dropbox, Google, and McAfee — as a free, scriptable alternative to proprietary installer products like InstallShield.
FL Studio (Image-Line)
Image-Line has distributed its FL Studio digital audio workstation using NSIS installers, taking advantage of the language's flexibility for large, plugin-heavy creative software.
Game distribution (Ubisoft, BitTorrent clients)
Game publishers such as Ubisoft and peer-to-peer clients in the BitTorrent ecosystem have shipped Windows builds via NSIS, where small installer size matters for internet distribution.
PortableApps.com
The PortableApps.com platform relies on NSIS to build its self-contained portable application installers, and maintains portable builds of the NSIS toolchain itself.