Creating a .NET Windows Installer – Part 1 - Introducing the Windows Installer Service (Page 3 of 14 )
Microsoft's Windows Installer (MSI) technology isn't specific to .NET. In fact, it's included with all new versions of the Windows operating system (including Windows 2000, ME, and XP) and is available as a separate download for Windows 98 and Windows NT 4. Some of its hallmarks include:
Support for a system-maintained installation database. Windows uses this database to uninstall software without damaging other applications.
Support for self-repair, which allows modified or deleted files to be restored automatically from a Windows Installer setup. This allows your application to recover if a curious user makes some reckless changes. All you need to do is right-click on the original setup file and choose Repair from the context menu.
Support for transactional installation. If a user cancels a setup, or if a setup fails halfway through, any changes that have been made are rolled back, leaving the computer in the exact same state that it was in before installation began.
Windows Installer files always have the extension .msi, which is registered to the Windows Installer service (typically C:\WINNT\System32\msiexec.exe). Though they look like ordinary installation programs, MSI files do not contain a traditional stand-alone setup program (.exe file). Instead, they rely on the installation service built into the Windows operating system. This service supplies a few pre-defined dialogs and a limited amount of preset configuration.
It's important to note that Windows Installer projects are not really.NET projects. They aren't coded in a .NET language, and they don't use the CLR. However, Visual Studio .NET can help you create Windows Installer projects based on .NET programs with ease, automatically taking care of assemblies and dependencies. Instead of writing installation scripts, you configure the options provided in the Visual Studio .NET designers and property windows.