Where’s Msi.lib?

If you’re developing custom actions for Windows Installer or a bootstrapper in Visual Studio 2005, or utilizing the resiliency and install-on-demand features of Windows Installer in your product developed in Visual Studio 2005, you might get link errors for Windows Installer functions. Msi.lib was not included for x86 in the Platform SDK lib directory if… Read more

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… Read more


Looking through my referrals for common queries that lead people to my blogs, I noticed several recently from http://www.installsite.org/ and was pleased to see this blog listed in Stefan’s related blogs. InstallSite.org has been run by Stefan Krueger for many years, dating back to when Windows Installer 1.0 was released when I happened across the site… Read more

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… Read more

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… Read more

Blog Customizations, Part 3: OO JavaScript

Not satisfied by the search feature provided by Community Server I’ve again created some helpful JavaScript classes this time using object-oriented JavaScript to define a basic search provider and to subclass that for specialized providers like MSN Search. I defined several private properties and several privileged methods that can access those private properties, unlike public… Read more

Shell Extensions for .NET Assemblies, Version 1.4.1993

Some time back I made modifications to the previous version of my shell extensions for .NET assemblies to display differences in the column handler for both native and managed binaries targeting the x86, IA64, and x64 platform architectures. Now that the Microsoft .NET Framework 2.0 has released, I’ve updated my public drops. In a future… Read more

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 %ERRORLEVEL% variable being set accordingly it won’t be. In this scenario I… Read more

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 Installer shipped on what versions… Read more

Setup Troubleshooting Guide Applicable for Patches, Too

Aaron Stebner has posted a compilation of links to many great posts about troubleshooting setup issues regarding, primarily, Visual Studio 2005 and the .NET Framework 2.0. It’s important to note that much of this is relevant to patch issues, too; though, I suspect you’ll see far fewer of these than with previous releases because of… Read more