Inno Setup is a free installer for Windows programs. First introduced in 1997, Inno Setup today rivals and even surpasses many commercial installers in feature set and stability.

Key features:

Support for all versions of Windows in use today: Vista, XP, 2008, 2003, 2000, Me, 98, 95, and NT 4.0. (No service packs are required.)

Extensive support for installation of 64-bit applications on the 64-bit editions of Windows. Both the x64 and Itanium architectures are supported. (On the Itanium architecture, Service Pack 1 or later is required on Windows Server 2003 to install in 64-bit mode.)

Supports creation of a single EXE to install your program for easy online distribution. Disk spanning is also supported.

Standard Windows 2000/XP-style wizard interface.

Customizable setup types, e.g. Full, Minimal, Custom.

Complete uninstall capabilities.

Installation of files:
Includes integrated support for "deflate", bzip2, and 7-Zip LZMA file compression. The installer has the ability to compare file version info, replace in-use files, use shared file counting, register DLL/OCX's and type libraries, and install fonts.

Creation of shortcuts anywhere, including in the Start Menu and on the desktop.

* Windows 7 change:- Added new [Icons] section flag: excludefromshowinnewinstall. Prevents a Start menu entry for a newly installed application shortcut from receiving a highlight on Windows 7 (or later). Ignored on earlier Windows versions.* Compiler IDE change:- Changed shortcut for Edit | Complete Word to Alt+Right (but still recognize Ctrl+Space). Reportedly, Ctrl+Space conflicts with the Chinese IME.* Fixes:- Inno Setup Preprocessor: #include handling of '.\' and '..\' now treats such filenames as relative to the directory containing the current file, not to the current directory (which is undefined).- On the 5.4.1 Unicode compiler, trying to build a multi-language installer while running under a DBCS code page could unexpectedly result in "Illegal null character" errors.- On Unicode, string-type parameters passed to BeforeInstall and AfterInstall functions were being converted to ANSI.