Before the advent of the Windows Installer service, software developers created installation packages with proprietary authoring tools from vendors such as Wise Solutions and InstallShield Software. Such installation engines exclusively managed the entire process of installing, and often uninstalling, an application. Microsoft introduced Windows Installer as an integral part of Windows 2000 in an attempt to standardize and better control the installation process. (You can easily retrofit Windows Installer to Windows NT 4.0 and Windows 9x.)
To take advantage of Windows Installer, software developers must package their applications in Microsoft's standardized .msi format. An .msi package is an OLE-structured database file that provides the application description and installation instructions to Windows Installer. The .msi package file usually resides alongside the application's source files, but it can also include the source files. To promote adherence to the Windows Installer standard, Microsoft requires all applications that carry the Certified for Microsoft Windows logo to be in .msi format. For a thorough discussion of Windows Installer, see Darren Mar-Elia, "Windows Installer Takes Control," June 1999.
The benefits of using .msi packages for your installations, especially in a Win2K Active Directory (AD) environment, are numerous. AD Group Policy Objects (GPOs) and Windows Installer technology provide a high level of application deployment and management functionality (through Microsoft's policy-based Change and Configuration Management—CCM). If you're in a pure Win2K AD environment, Windows Installer might be all you need. However, AD and GPOs usually don't provide the flexibility that larger organizations require. Furthermore, some organizations will take a while to implement AD.
Even if you haven't implemented AD, applications in .msi format still have distinct advantages for Windows-based clients, such as standardized installation rules, transacted installations (which can be reversed or restarted from any point if the process is interrupted), installation on first use, and self-repair. For this reason, packaging utilities should provide a wrapper for .msi packages that lets you deploy them without compromising their built-in functionality. Utilities should deliver an .msi package to the client, then turn over installation responsibility to Windows Installer.