Est. 2000 Intermediate

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)

Paradigm Imperative scripting; domain-specific installer language
Typing Untyped (string-based variables and a shared stack)
First Appeared 2000
Latest Version NSIS 3.12 (April 2026)

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 makensis compiler 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:

  • Section blocks define units of installation work (copying files, writing registry keys). Sections can be optional and grouped, which is what drives component-selection installers.
  • Function blocks hold reusable logic, including special callback functions like .onInit that 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.

VersionReleasedHighlights
1.0fJul 2000First public release, built to distribute Winamp
2.0Feb 2004Modern UI, plug-in system, LZMA, multi-language
3.0Jul 2016Optional Unicode, Windows 10/HiDPI support
3.11Mar 2025LogicLib and compiler improvements
3.12Apr 2026Security 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

2000
Nullsoft publicly releases NSIS v1.0f on July 31, 2000. Created by Justin Frankel's company to distribute Winamp, it evolves from the earlier PiMP and SuperPiMP packagers when self-extracting archives prove too limited for Winamp's growing plugin ecosystem.
2002
After the 2.0a0 alpha, development moves to SourceForge and opens up to contributors outside Nullsoft, beginning the long community-driven phase of the project.
2004
NSIS 2.0 final is released on February 7, 2004 after roughly two years and 17 release candidates, introducing the Modern UI, an easier plug-in system, LZMA compression, and broad multi-language support.
2006
NSIS is named SourceForge Project of the Month in January 2006, reflecting its popularity as a free alternative to commercial installer tools such as InstallShield.
2016
NSIS 3.0 is released on July 24, 2016 after a long beta cycle, adding optional Unicode installers, improved Windows 10 support, and a new HiDPI-aware interface while keeping installers running on legacy Windows.
2024
NSIS 3.10 is released in March 2024, continuing steady maintenance of the 3.x series with bug fixes and compiler improvements.
2025
NSIS 3.11 is released in March 2025, with further fixes and additions to the LogicLib helper macros and the makensis compiler.
2026
NSIS 3.12 is released on April 19, 2026, fixing a possible privilege-escalation issue for installers running as SYSTEM and adding new LogicLib string operators along with preliminary ARM64 build support in makensis.

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.

Language Influence

Influenced By

PiMP / SuperPiMP (Nullsoft Install System predecessors)

Running Today

Run examples using the official Docker image:

docker pull
Last updated: