About Windows Installer, the .NET Framework, and Visual Studio.
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 results in the Windows Installer error 1706 to be displayed if installing with a user interface and in the log, and the Windows error 1603 (ERROR_INSTALL_FAILURE) to be returned from the process.
Prior to Windows Installer 2.0 the original installation source was always necessary but that was fixed by Windows Installer 2.0. Now by adhering to certain rules you can mitigate prompts for source:
Using whole files in a patch is also a good idea, but if you can support only Windows Installer 3.0 and newer you can support binary delta patching against a baseline cache that Windows Installer creates for smaller patch size. This allows patches to contain a binary delta between the target and upgrade binary files. For example, a QFE targeting the RTM can contain deltas between the RTM- and QFE-level binaries regardless of other patches that are installed, as long as that patch would supersede any other QFE that patched the same file set. To take advantage of the baseline cache, one must author the MsiPatchSequence table into their .msp file. Administrators can set the maximum size for all baseline caches or even disable it - though not recommended - by setting the MaxPatchCacheSize policy.
Because the .NET Framework 2.0 has to support Windows Installer 2.0 as the highest version currently supported on Windows 98 and Me, the setup team create their own installer cache with all files contained in both the download redistributable as well as within the MSI. Cabinet streams are not stripped. This cache is found in %WINDIR%\Microsoft.NET\Framework\v2.0.50727\Microsoft .NET Framework 2.0. The custom action CA_AddSource.3643236F_FC70_11D3_A536_0090278A1BB8 adds this path to the source list by calling the MsiSourceListAddSource function when the product is first installed. If and when the source of a file is required it is available and you do not have to obtain the original installation source as was sometimes necessary with previous released of the .NET Framework.
Just had this problem: when I try to do a build of my VS.NET 2003 solution I also build 3 MSI files.
Fixing problems building MSI's in Visual Studio 2005 Team Suite
A lot of customers have recently started seeing the following errors, all stating in various ways that
PingBack from http://www.joyofsetup.com/2008/06/21/why-serviceability-is-important/
Windows Installer is an engine for performing transactional installations. When installing a product
Windows Installer 5.0 is shipping in Windows 7 as part of the operating system. To address the issue
During the rebuild of my development environment I wanted to use the same trick I used before to reduce...