Windows Installer
 
Unrestricted access to Windows Installer functionality!
 
Open Source
 
Open source!
 

<xml/>

 
Plain XML based source scripts!
 
Free
 
Free, no strings attached!
 
Build Automation
 
Command-line interface for automated application build process!
 
Community
 
Thriving community support!
Why WiX?
What is Windows Active Setup?

Windows Active Setup is a process that runs automatically when a Windows user logs in. This technology has nothing to do with Microsoft Windows Installer. It is a feature of the operating system. However, it can also be used in conjunction with software packages in special situations such as enterprise wide mass software deployments where user profile specific data is a big concern.

If software deployments are done by means of a Software Distribution tool (such as Microsoft Systems Management Server) under a local administrator account, Windows Active Setup feature can be used very effectively with Windows Installer packages to replicate user profile specific data during user login. After an automated software deployment is done under the local administrator account, even if the package installs the application for all users who have access to the same computer (per-machine installation), user profile specific data will not be available unless the user triggers the application via an advertised entry point (such as an advertised shortcut). When application is triggered by means of an advertised entry point, Windows Installer typically repairs the application by re-installing the user profile specific data for the new user and then launches the application. Even though this process takes care of the problem in most cases, users depend on advertised entry points created by the installer to get user profile specific data for the first time. If this application is triggered by a non-advertised entry point such as command line interface then the application will probably fail due to Windows Installer not fixing the application at run-time. Windows Active Setup helps administrators fixing the application which is installed by a Software Distribution System during user login before even application is triggered by the user.

HKLM\Software\Microsoft\Active Setup\Installed Components\[ProductCode]

HKCU\Software\Microsoft\Active Setup\Installed Components\[ProductCode]

The registry keys listed above are compared, and if the HKCU registry entries don't exist, or the version number of HKCU is less than HKLM, then the specified application is executed for the current user.

If your application requires installation of components such as files or registry keys specifically for the current user profile (per-user), but your application has no advertised entry points or other triggers to initiate the installation process (such as Windows Installer Self-Repair), then Active Setup is the solution.

In order to implement Active Setup, you need to package all your user installation requirements into a package and place the package preferably on the target workstation during the main application installation process.

Then, populate the following registry key with the following values:

KEY:

HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\[ProductCode] - where [ProductCode] is the product code GUID in the MSI package. However, it can also be an arbitrary string as long as it is unique on that workstation.

VALUE1:

StubPath=msiexec.exe /fu “c:\Source\HelloWorld 1.0\HelloWorld 1.0.msi” /qb-!

VALUE2:

Version=1.0

VALUE3:

ComponentID=”HelloWorld”

VALUE4:

Locale=”EN”

VALUE5:

IsInstalled= dword:00000001

VALUE6:

@=”HelloWorld 1.0 Current User Keys”

When each new user logs on, the operating system compares Active Setup keys between HKLM and HKCU, and runs the command line in StubPath if the HKCU entry is missing or the version in HKCU is less than HKLM.