NSIS software icon

NSIS 3.13

NSIS (Nullsoft Scriptable Install System) is a free, open source tool that compiles a plain-text script and application files into a compact Windows installer, complete with wizard pages, compression, plug-ins and an uninstaller.

Updated September 27, 2026
1.49 MB
0.0

Use the arrow keys to choose a rating, then press Enter or Space to submit it.

Not rated yet 0 user ratings

App Specs

DeveloperNSIS Project
LicenseFreeware
CategoryUtilities
Available platformsWindows
Downloads0

Overview

NSIS (Nullsoft Scriptable Install System) is a free, open source tool for building Windows installers. The developer writes a plain-text script describing each installation step. The NSIS compiler turns that script and the application files into one self-contained executable. The installers it produces run on Windows, while the compiler itself runs on Windows and can also be built for Linux, BSD and macOS. NSIS is released under the zlib/libpng license and is free for any use, including commercial software.

From script to setup executable

Every NSIS project starts as an .nsi file. Each line holds one command, and shared functions or macros can live in .nsh header files pulled in with !include. A script combines installer attributes, wizard pages, sections and functions.

The command-line compiler, makensis, parses the script and packs the referenced files into the installer. MakeNSISW is a graphical front end for the same compiler. You can compile a .nsi file from its right-click menu. The window shows the compiler output and offers to test the finished installer. Errors stop the build and report the script line where they occur. On a Linux or BSD build server, the POSIX build of the compiler produces the same Windows installers without Windows or Wine.

Pages, sections and install types

The wizard a user sees is defined with Page commands, which appear in script order. Built-in pages cover the license agreement (plain text or RTF), component selection, destination folder and the progress page where files are installed. Page callbacks let a script skip a page or keep the user on it until an entry is valid.

Sections are the installable components. A section’s name becomes its label on the components page, and its code runs only if the user selects it. Sections can be hidden, unchecked by default or grouped into a tree. Install types such as Minimal, Typical and Full, or custom ones, preselect different combinations of sections. The default install folder can be read from the registry, so an update lands where the earlier version was installed.

The NSIS scripting language

NSIS installers run their own small virtual machine with user variables, twenty ready-made registers, a stack and flow control. The instruction set is aimed at setup work. It covers extracting files with chosen overwrite rules (always, never, if newer, if different), copying, renaming, deleting and searching files. It also covers creating shortcuts and running programs with or without waiting for them to finish. Scripts can read, write, enumerate and delete registry keys. They can also edit INI and text files and register DLLs and ActiveX controls. Scripts can schedule files to be replaced or deleted at the next reboot.

Besides low-level comparisons and jumps, the included LogicLib header adds If/Else, Switch and loops. Callback functions react to events such as startup, cancellation or a failed install. A compile-time preprocessor supports constants, macros and conditional compilation. This lets one NSIS script generate several variants, for example a lite and a full edition.

Compression and installer size

NSIS keeps the code it adds to each setup program very small, which suits downloads from the web. Three compressors are built in. ZLIB is the default and is fast with low memory use. LZMA produces the smallest installers, and BZIP2 sits between the two. Files can be compressed individually or as one solid block. Decompression is part of the installer stub, so no separate self-extractor is needed. A CRC32 checksum lets the installer verify itself before running.

Modern UI and custom pages

Installers can use the classic NSIS interface or the Modern UI. Modern UI adds a header describing the current step, a description area for components, a welcome page and a finish page. The finish page can launch the application or restart the computer. Fonts, icons, images and text are customizable. Developers can use nsDialogs or InstallOptions to create pages that the built-in set does not cover. The Start Menu plug-in adds a page for choosing a shortcut folder.

Plug-ins for extra tasks

NSIS extends its instruction set through plug-in DLLs written in C, C++, Delphi or other languages. A script calls them with a single line in the form PluginName::Function. Only the plug-ins a script actually uses are compressed into the installer. Bundled plug-ins handle custom dialogs, HTTP downloads, file patching, running console programs and direct Win32 API calls. Web installers use the download plug-in to fetch their payload during setup. Developers can also write their own using the supplied headers.

Languages and Unicode

A single NSIS installer can carry several interface languages. More than forty translations are included, custom language files can be added, and right-to-left languages such as Arabic and Hebrew are supported. An installer can also be compiled as Unicode.

Uninstallers and silent installation

The same script that installs an application can also generate its uninstaller. Uninstall sections and functions carry an un. prefix and have their own pages. For automated deployment, any standard NSIS installer can run silently with the /S switch, installing its default sections. /D= sets the target folder from the command line. A script can also declare whether administrator rights are required.

Similar Apps