Visual Studio Setup

Installation and containerization of the Visual Studio family of products

Double-clickable Patches

Beginning with Windows Installer 3.0, bare .msp files can be double-clicked (invoked with the default verb) and will install correctly, assuming no other problems. Windows Installer will determine the updated features based on the changed components and will automatically reinstall those features. The effect is the same as specifying those ...

Building Quality Windows Installer Packages

Building quality installation packages not only helps set up your application correctly but also helps maintain your application. A quality installer fosters quality patches. The Windows Installer SDK offers a lot of information about how to author installation packages but how do you do it right? Why not ask the Windows Installer team?...

Controlling how MsiPatchSequence is Generated

When running on Windows Installer 3.0 and newer, the MsiPatchSequence table dictates how patches apply to a target product install. When using PatchWiz.dll, you can allow this table to be automatically generated, fill it with data yourself, or even prevent it from being generated if you want Windows Installer 2.0 behavior. This means that ...

Don't Install from a Drive Substitution

If you're not familiar with the subst.exe application, it allows you to create DOS devices for a given path using the API. Note in the API remarks the following:Windows Server 2003 and Windows XP: The function creates a device name for a caller that is not running in the LocalSystem context in its own Local MS-DOS device namespace. If the ...

Catching Exceptions in JScript.NET

JScript.NET was created to be compatible with JScript while benefiting from and providing access to more robust features of the .NET Framework. If you're accustomed to more oft-used managed languages like C# and VB.NET, catching different types of exception classes should be no stranger. Considering JScript.NET, however, what would you expect ...

Monad Beta 2 Available

Want a shell that doesn't peak at the for command and that's built on the latest .NET Framework? Monad beta 2 is available for download! Monad is an object-oriented shell that lets you manipulate output and has an extensible provider model so that you can traverse different data sets. Beta 2 ships with providers for Monad aliases, Windows ...

Blog Customizations, Part 2

As mentioned earlier, I wanted to persist your preferences for whether certain collapsible panels were in the collapsed or expanded state. With a simple ECMA-compliant wrapper class around and a few minor changes to the class, state for unique panels can be remembered. The cookie wrapper class is pretty straight forward: To initialize the , ...

How Patching Works

Previously I blogged about what is in a patch, but how do patches work? To put it imply, patches transform a view of the product or products that the patch targets.Patches (.msp files) contain a set of transforms: one transform changes the target product into the upgraded product, and one transform adds information specific to the patch. This ...

Blog Customizations

In my seemingly never-ending quest to provide a simple, compact, yet stylish design for this blog I have recently made a customization based on what Josh Ledgard did sometime back to make collapsible panels, though I wanted something more easily reusable. I whipped together an ECMAScript — that is, ECMA-compliant JScript and ...

Updated Sample MSI Scripts

Yesterday I blogged about what a patch file (.msp file) contains, as well as most other Windows Installer files. You might find, however, that some of the sample Windows Installer scripts in the Samples\SysMgmt\Msi\Scripts don't work with patch files. The reason is because you must pass (32) to the automation method. This corresponds to ...