Background
I have some old VPCs which I used to run on Virtual PC 2007 SP1. In Virtual PC, we used ‘VM Additions’ which would install some drivers to make the VPC run smoothly in the virtualized environment. For example these additions would enable smooth usage of the mouse across host and guest. There are multiple versions of these additions, some dating back to the old Virtual Server 2005 days.
Problem
Now, I have Windows 8, which brings along with it Hyper-V. So when I moved my (rather old) Windows 2003 VPC image to the Hyper-V platform, and I tried to use my mouse to click within the guest OS, this is what I got:
Generally, this is due to the lack of the right type of additions for the virtualization platform. Now, Hyper-V has its own Integration Services which perform a role similar to that played by the previous VPC additions (which used to be installed from VMadditions.ISO). So when I moved my old VPC’s VHD file and created a VM under Hyper-V, I expected that a simple ‘Install Integration Services’ click would suffice. Normally, this works for VHDs previously used inside of Virtual PC, but in my case, when I did this, it failed with the following ‘Virtual machine additions detected’ error:
OK, so I had to uninstall the Virtual PC additions first. Let’s try to Add/Remove them. But this also failed with the following cryptic error ‘Tahoma8 You can install Virtual Machine Additions only on a virtual machine that is running a supported guest operating system’. Well, at that time, Windows 2003 was indeed supported so I wonder why this error is reported when I try to uninstall
The existing VM additions version I have on the guest is 13.552:
Ideal solution
The ideal case is, you still have Virtual PC somewhere, using which you can uninstall the VM additions and then move the VHD back to Hyper-V. But in my case, I no longer have Virtual PC anywhere on my computers.
Workaround
After a bit of digging around, I found the workaround. You can use this at your OWN RISK. It worked for me, but please do not blame me if it does not work for you
Locating the MSI
First, we will locate the MSI installer which is used to install the VM Additions. To do this, firstly you have to be pretty good with your keyboard skills
- First, put the guest into ‘Full Screen’ mode. This will allow you to use the Windows keyboard shortcuts on the guest.
- Start up Windows Explorer on the guest (Windows key + E)
- Do a Alt-D to go to the location bar. Type in “C:windowsinstaller” (you cannot see this folder normally)
Now, there are 2 ways to get to know which MSI is the VM additions MSI. Here is the first way:
- In the list that you get, look at each MSI file and check its properties. To do that use the properties key (right side of the spacebar normally)
- Use Tab and shift-Tab to navigate to the Summary tab of the properties window. Look at the ‘Subject’ field.
- Quick tip: the VM additions MSI file for 13.552 is around 821KB in the Installer folder.
The second way is to use the Details screen, and use the ‘Choose Details’ Windows Explorer option to select the Subject field.
Once you press enter, you can choose the Subject column. Make sure you use the ‘Move Up’ button to move this Subject next to the Name.
Next, use your top notch keyboard skills , use the Tab key, navigate to the details window and locate the file which has the subject of Virtual Machine Additions:
Obtaining the ORCA tool
Next, we will edit that MSI file to remove the validations used to check for valid guest OS. To do this, we will use the ORCA utility which ships with the Platform SDK. Please see this KB article for more background. In my case I used the Windows 2003 Platform SDK for simplicity.
(note: you can also consider third party MSI editor like InstEd to edit the MSI).
- Let’s say you installed the Platform SDK 2003 to a standalone folder like C:win2k3sdkBin
- You will find the Orca.MSI file there
- Create an ISO image containing this ORCA MSI file. You can use any freely available ISO image creator to do this.
Editing the MSI
- Mount the ISO image on the guest OS.
- Then install the Orca tool inside the guest OS.
- Then load the VM Addition MSI file (which we identified previously) into the ORCA tool.
- Using your top-notch keyboard skills, locate the CustomActions Node, and tab to the right pane. There locate the custom action called ‘Error_CheckForRunning…’. Delete it.
- Locate the other CustomAction called ‘CA_CheckForRunningIns…’. Delete it as well.
- Similarly, locate the InstallExecuteSequence on the left pane, and delete the 2 entries there as well: ‘CA_CheckForRunningIns’ and ‘Error_CheckForRunning’.
- Save the MSI (Ctrl-S).
Removing the old VM additions
Finally, we will replace that MSI file and then uninstall the old VM Additions.
Finally… success!
Once this step is done (and you follow it with a reboot) you are ready to install the Hyper-V integration services!
I hope you found this workaround useful – please leave a comment if you found it saved you!