Visual Studio Setup

Installation and containerization of the Visual Studio family of products

Suppressing Console Windows for Custom Actions

If you have authored a custom action into your installer package and are annoyed by the console window that always pops up when the custom action runs, it's because the custom action executable is running under the console subsystem.When you link your object files with the VC++ linker you can specify the subsystem using the /SUBSYSTEM switch...

Waiting to Install

If you've ever tried to install a Windows Installer package and had returned (1618) it's because the Windows Installer execution server is already processing another install, administrative install, or advertisement action. That is, Windows Installer is processing the InstallExecuteSequence table, the AdminExecuteSequence table, or the ...

Error 2262: Not Necessarily a Fatal Error

Someone wondered if the following found in a Windows Installer log was indeed an error:MSI (c) (A8:A0) [14:38:51:427]: Transforming table Error.MSI (c) (A8:A0) [14:38:51:427]: Note: 1: 2262 2: Error 3: -2147287038Recall from Diagnosing Installation Errors that field 1 in the second line indicates the Windows Installer error. If you look that ...

Diagnosing Installation Errors

When problems occur when installing, repairing or patching, or uninstalling a product using Windows Installer technology, you need to be able to figure out what happened and why it happened. Dialogs that occur when the user interface is displayed can be helpful sometimes, but many times you need to look at a log to determine the exact cause of...

Resolving Prompts for Source

When discussing the Windows Installer cache, I mentioned how cabinet streams are stripped from the .msi file when the Windows Installer package is cached, and how this is a contributing factor to prompts for source. A prompt for source will occur when repairing or patching a product if the source for a file to reinstalled is not present. This ...

Windows Installer Cache

Windows Installer packages may contain streams identified in the Media table if the Cabinet column value begins with the number sign #, as documented for the Cabinet data type. This cabinet is embedded as a stream within the .msi file and contains files referenced in the File table using their File key column value. When packages are installed...

Waiting for msiexec.exe to Finish

Since Windows Installer 1.0 was first released, msiexec.exe has always run in the Windows subsystem. That means that when it is executed from the console or by a batch script control returns to the console or script immediately. If you depend upon the variable being set accordingly it won't be. In this scenario I like to use from the command...

Windows Installer Supportability

Because newer versions of Windows Installer are released with new functionality dependent on operating system features, and older versions of Windows reach the end of their support lifecycle, different versions of Windows Installer are supported on different versions of Windows. Below is the supportability matrix for what versions of Windows ...

Save Time when Installing Patches

Beginning with Windows Installer 3.0 you can install multiple patches at once, i.e. in a single install transaction. To do this you pass a semicolon-delimited list of fully-qualified paths to patches to the property. Windows Installer 2.0-style patches are sequenced first in the ordered specified, but then 3.0-style patches are sequenced ...