Okay, before I go anywhere, I want to give 100% credit for this post to John Bristowe. He showed me this at Tech-Ed. He was going to do a Grok Talk on the subject, but just got too busy I think. He (and me too now) is genuinely shocked more developers aren't using Virtual PC. Now I've used VPC quite a bit since its release (and even before it was called Virtual PC). However, during our conversation, John showed me a very cool feature I didn't even know existed ... Differencing Disks. If you already know what Differencing Disks are in the context of Virtual PC, you can click next in your RSS aggregator ... because the rest of this post is about how to use them to create many different development environments with very little effort and hard space.
Differencing Disks allow you to use an existing VHD (Virtual Hard Disk) as the parent for a new VHD. For example, if you want to have one VPC for Visual Studio 2003 and a different one for Visual Studio 2005 Beta 2, and you wanted them both on Windows XP Professional, you can create a parent VHD with Windows XP Pro on it and use it as the parent for each of the two Visual Studio VPCs. This saves a ton of hard disk space because the OS only exists in a single VHD. It also saves a lot of time - have you ever created copies of VHDs or installed the same OS on several VHDs? Yuck. This is how I'm setting up my VPC hierarchy.
The beauty of this is each of the product are only installed once even if I have several different systems using it. Nice, huh? Okay, let me show you have to put this into practice ... just in case you were curious.
In the next few screen shots, I'm going to create a new VPC for a Visual Studio 2005 Beta 2 release based on an existing Windows XP Professional VPC. This is what my Virtual PC Console looks like:
The first step is to create a new VPC. Be sure to put it exactly where you want it using the Browse button (I keep mine on an external USB drive). Define the amount of memory you want it to have and create a new VHD. Now go to the Settings of the VPC and click on the new VHD.
From here, click on the Virtual Disk Wizard button and create a new VHD.
For the location, choose the same VHD that was just created with the new Virtual PC.
When you click the Next button here, you'll be asked if you want to overwrite the existing file. You do. The next step is deciding what kind of VHD it is. Of course you want a Differencing Disk.
The rest is self explanatory. When you start up this VPC, you'll notice that Windows XP is already up and running for you ... no duplication ... and no wasted time. I am totally using this snot out of this. THANKS JOHN!