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.
Features:
View: JRSoftware
Download: Inno Setup 5.1.3 BETA
Features:
- Support for all 32-bit Windows versions in use today -- Windows 95, 98, 2000, 2003, XP, Me, NT 4.0.
- Supports creation of a single EXE to install your program for easy online distribution. Disk spanning is also supported.
- 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.
- Full source code is available (Borland Delphi 2.0-5.0)
- and so much more
Changes:
- Pascal Scripting: When Setup/Uninstall is running in 64-bit mode, most of the support functions that access files now disable WOW64 file system redirection, meaning they are now capable of working with files located in the 64-bit System directory
- Pascal Scripting: Replaced FileSearch function with a new implementation that properly supports MBCS, and doesn't search the current directory unless it is told to (e.g. by including "." in the directory list)
- Uninstaller: Now hides the taskbar button when the /VERYSILENT switch is used
- IDE change: Added an option to the New Script Wizard to specify that the application doesn't have a main executable file
- Based on RemObjects Pascal Script SVN code revision 1039
- Other Minor tweaks

Extremely flexible through its scripting language that still isn't that complex, and a ton of features, with the generated installer doing a great job mimicing standard modern Windows installer UI's as icing on the cake.
And it even supports 7zip compression!
- Restores original computer state upon installation failure: Windows Installer keeps track of all changes made to the system during the application installation process. If the installation fails, Windows Installer can restore, or roll back, the system to its initial state.
- Helps prevent certain forms of inter-application conflicts: Windows Installer enforces installation rules that help to prevent conflicts with shared resources between existing applications. Such conflicts can be caused when an install operation makes updates to a dynamic link library (.dll) shared by an existing application, or when an operation deletes a dynamic link library shared by another application.
- Reliably removes existing programs: Windows Installer can reliably uninstall any program it previously installed. It removes all the associated registry entries and application files, except for those shared by other installed software. You can uninstall an application at any time after a successful installation. (Removal should not be confused with rollback, which restores a computer to its initial state when an installation failure has occurred.)
- Diagnoses and repairs corrupted applications: An application can query Windows Installer to determine whether an installed application has missing or corrupted files. If any are detected, Windows Installer repairs the application by recopying only those files found to be missing or corrupted.
- Supports on-demand installation of application features: Windows Installer can be instructed to initially install a minimal subset of an application. Later, additional components can be automatically installed the first time the user accesses features that require those components. This is known as advertising. For example, Windows Installer could install Microsoft Word with a minimal set of features. The first time the user tried to access a mail merge function (not included with the original installation), Windows Installer would automatically install the mail merge component. Similarly, Windows Installer can also purge components that go unused in an application. For example, Windows Installer could be configured to remove the mail merge component if it goes unused for 60 days.
- Supports unattended application installation: Installation packages can be configured to require no installation process interaction from the user. During the installation process, Windows Installer can query the computer for desktop attributes, including determining whether any applications were previously installed by Windows Installer.
I can understand if it's something like Office that relies on these features to repair its installation if necessary (and add/remove components at will) but using MSIs on small tools is just as useless as driving to your next door neighbour's house.
The concern about many features aren't really valid, as those features are built into the Windows Installer engine that is bundled with all newer versions of Windows and are likely to exist on even old versions of Windows since it often comes along as a redistributable for packages that require it --and it is shared by all the Windos Installer packages.
If you are afraid of the complexity when creating a "simple installer" then that is really up to the authoring tool you use and not the Windows Installer engine. I wish someone would write a darned good open source Windows program that could be used to author Windows Installer packages, or that Microsoft would provide it for free --it would be a killer app...
Anyway, let me ask you what you would prefer --an installation via an executable file where you have no idea of what will be executed (and what will get f**cked up due to sloppy coding, viruses/trojans, etc.) and may be tricky to remove, or a passive package that you can inspect most of its content beforehand and use your trusted built-in engine to install knowing that you always can get rid off it afterwards (even if it fails midway through installation)?
Note that Linux/UNIX has relied on a similar approach for quite some time via RPMs, .pkg, etc.
Keep in mind that Windows Installer packages are just databases with defined content, so that all installers can be based on the same installer code (the Windows Installer engine). Think of it this way, would you rather prefer that every installer have their own implementation of code to populate the registry, or would you prefer every installer to use the same code to do that? I think the chances of f*$k ups are much greater if you go ahead with .exe based installers as opposed to a Windows Installer package, but what the heck --I may just be a bit too concerned about what I execute on my Windows machines...
Last edited by 39704 on 07 May 2005 - 16:17
Version handling should be supported by InnoSetup.
Well, of course InnoSetup does this too. It's a requirement for any decent installer.
Good for large software packages, but not really that useful otherwise. Besides, are you sure InnoSetup doesn't offer this?
InnoSetup support "silent" installs.
Exactly. Until then, I can't really see MSI becoming a good alternative for Windows enthusiasts. The thing is that IS is this "darned good open source Windows program" for setup authoring, used by anyone from a Neowinian to NASA. Sure, MSI may have its advantages, but I'm also sure IS has other different advantages MSI lack as well.
That is exactly what scares me, "enthusiasts" hacking together .exe based install packages.
I never said InnoSetup is not good, and it may have features not found in Windows Installer --however, Windows Installer do support execution of scripts/external code so anything that can be done can also be done via Windows Installer based packages. My point is that all the normal functionality is built-in, so I don't see the point in these products that come out and basically re-implement the functionality that is already in the OS.
This may not be such a big issue for enthusiasts, because they usually can deal with problems on their own with rather minor consequences --but some of us are professionals and for us reliability is more important, and I rather put my thrust in an OS built-in installation technology than a third-party program that replicates this.
Again, nothing bad about InnoSetup, I just think strategically it is time to drop these types of installers. Feel free to have a different opinion, I am not claiming that you guys are wrong and I am right (actually, I think I am, he, he,...) --I am just expressing my opinion on the subject and wanted to raise awareness of this because I feel these instalers are beyond EOL.
Last edited by 39704 on 07 May 2005 - 19:31
Anyway I tried to compile a .MSI package...
- InnoSetup-based setup for ZG Standard: 5.9 MB
- .MSI package (same files included): 9.8 MB !!!
Moreover, the MSI package doesn't perform some software check that InnoSetup does (I mean, with InnoSetup I can check if there is a previous ZipGenius setup on end-user's system, then it can stop setup and invites user to uninstall the software before proceeding).
Commenting has either been disabled on this article or you are not logged in. Click here to login or register, its free!
Note: Anonymous commenting is disabled in order to keep the quality of responses to a high standard.