Visual Studio Setup

Installation and containerization of the Visual Studio family of products

How to relocate the Package Cache

Visual Studio can require a lot of space on the system drive. Based on years of data collected from customers’ installations from the Customer Experience Improvement Program, we took advantage of this feature in Burn – the Windows Installer XML (WiX) chainer – to eliminate most errors during repair, servicing, and even uninstall. This ...

Delete shadow copies to compact VHDs and AVHDs

For a few years my primary development machine has actually been a VM with source located on a physical hard drive attached to the VM. This helps reduce latency compared to a differencing disk (AVHD) which may need to expand to accommodate additional data (common when building). It’s also easier to maintain than multiple boot entries ...

Testing for components that install under TARGETDIR

A while back I explained how Windows Installer sets the TARGETDIR property to the root of the fixed drive with the most free space available. The problem is that even an attached USB external drive can appear as a fixed drive, and these may be later detached. If components are installed to that drive and the drive is detached, repairing, ...

Booting Windows to a Differencing Virtual Hard Disk

Testing software can be fun and rewarding. You get to see new, upcoming features and provide valuable feedback to the developer. But as with most pre-release software, we recommend that you don’t install it on production machines. You could dedicate extra machines for testing, or even test in a virtual machine. Virtual machines are great for...

Enable BITS Logging

Microsoft Visual Studio 2008 Service Pack 1 uses a new bootstrap application that chains several packages together for a seamless installation experience. Because VS2008 SP1 contains a lot of fixes and new features, it is also quite large - almost 3 times as large as VS2005 SP1.To download all this data, we use the Background Intelligent ...

Functional Testing of Cmdlets

While developing unit and functional tests for Windows Installer PowerShell Extensions, I needed a way to invoke cmdlets without requiring elevation on Vista. That is, of course, because running elevated has always been a bad idea unless it is required. In order to load a PowerShell snap-in, however, one must write to HKEY_LOCAL_MACHINE which ...

Group by Different Properties for Format-Table

For my Windows Installer PowerShell Extensions, I've been simplifying some of the use cases and adding additional formats. One thing I wanted to do was display source list information in a table and group either by the attached ProductCode or PatchCode properties. The format-table cmdlet doesn't support multiple properties and doesn't appear ...

Get Binder Variables for Assemblies without Installing into the GAC

Binder variables in WiX are variables that are resolved, coincidentally, at bind time. This is when the linker, light.exe, collects file information, assigns auto-GUIDs, and generates the output packages among other things. There are binder variables for all versioned binaries, and binder variables specific to both managed and native ...

How to Install TFC without PPE

Microsoft Visual Studio 2008, now available for MSDN subscribers and Express editions freely available to everyone, is a huge application. It takes a while to install and, in the case of Visual Studio 2005 Service Pack 1, a long time to patch. Installing or patching multiple copies of shared components can be time-consuming. So if you've ...