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. 

* Added the Windows 8.1 "compatibility" section to the various manifest resources used by Inno Setup.  This enables any check for the operating system version to get the real version number (6.3) instead of getting the same version number as it did in Windows 8 (6.2).*  Compiler IDE: Added new option: Show line numbers in gutter (default: off).*  Pascal Scripting changes:- Added new event function CurInstallProgressChanged, which you can use to monitor progress while Setup is extracting files, creating shortcuts, creating INI entries, and creating registry entries. -  WizardForm. BeveledLabel visibility is now automatically handled even if its caption was set from [Code].*  Unicode [Code] based on RemObjects Pascal Script Git commit 538905910852bcbeef646f26592a973d15d3d5ec.*  Minor tweaks.