Visual Studio Setup

Installation and containerization of the Visual Studio family of products

Microsoft .NET Framework 2.0 Service Pack 1, and How to Detect It

No doubt you've heard the Microsoft .NET Framework 3.5 was released. Aaron Stebner has posted a list of links to 3.5, as well as 2.0 Service Pack 1 (SP1) and 3.0 SP1. It's important to note that if you install 3.5 you're actually getting 2.0 SP1 and 3.0 SP1 both.The .NET Framework 3.5 consists of the following: While 2.0 SP1 and 3.0 SP1 are ...

EXE Custom Actions are Bad

Windows Installer custom actions that launch executables (base custom action type msidbCustomActionTypeExe, 0x2) are typically bad and should be avoided. How are they bad? Let the Windows Installer team count the ways.During internal audits we question any EXE custom actions (CAs) but inevitably some make it into the product. Typically these ...

Transform Validation in WiX Patch Build

In the latest WiX v3 drops a new element is supported to configure transform validation bits. The default is still 0x0922001f but you can now configure them. Torch.exe was also modified to accept transform validation bits using the same flags as msitran.exe in the Windows Installer SDK, as well as transform types that group together common ...

Column Types Cannot be Changed in a Patch or Transform

Transforms can change just about anything in an installation package - even the code page. Transforms can also add and drop both tables and columns but they cannot, however, change the column type. This is true for patches as well, since a patch package contains transforms.At their core, transforms store data aligned to the size of the data ...

WiX v3 Patching Improvements

In last week's release some changes to patching with WiX were made with more exciting changes to come. Peter Marcu has implemented some changes he'll talk more about on his blog, but suffice to say has reduced the number of commands and command line arguments required to build a patch.I've added some documentation for the new the patch build ...

Unchanged Files Break Patch Uninstall

I've discussed a couple different reasons that Windows Installer 3.0-style patches - those with the MsiPatchMetadata table in the patch package itself - might not be uninstallable. I explained another reason in a discussion about the new patch build support in Windows Installer XML (WiX) v3 recently, describing why unchanged files should not ...

WiX Extension for PowerShell Snap-ins

To write an installer for your PowerShell snap-in, the PowerShell documentation instructs you to extend the PSSnapIn or CustomPSSnapIn class. When you add your snap-in assembly to the Custom Action view in a Windows Installer Project in Visual Studio, the InstallerClass property should be set to True and your installer class will be run when ...

Patch Families Can Only Ever Grow

Peter Marcu has begun talking about new functionality added into WiX 3.0 that he's been working on a lot. One of the specific features is filtering by patch families. Based on a concept Office has used internally, patch families in this case are a set of resources that must be in a patch, and that patch can only be superseded by another patch ...

Installing Assemblies for Runtime and Design-time Use

The Microsoft .NET Framework installs assemblies into two different locations, and this practice is recommended to developers wishing to deploy assemblies both for runtime and design-time use. Runtime assemblies are those assemblies needed for an application to execute. It is recommended that you add runtime assemblies to the Global Assembly ...

Always use Unique Package Codes

It's well documented and understood that package codes should be unique for product and patch packages. The package code, also referred to as a patch code for .msp files, is a unique identifier for that package. For patches, the patch code may also be used for obsolescence, where patch codes for patches to be obsolesced are entered into the ...