Geeks With Blogs

News This blog allows me to continue the work I was doing on MSDN when I worked for Microsoft.
MSMQ from the plumber's mate MSMQ is part of your business' IT plumbing which makes you the plumber and I'm your mate.

Now that my home and work desktops are running Windows 8 (or locked down so I can’t install anything), I’m finally moving all my virtual machines from Virtual PC 2007. Losing the drag-and-drop feature was such a deal breaker in the past but now I’ve reached the point where the software just won’t install. As Hyper-V is there in the O/S, I won’t bother experimenting just yet with other managers (such as VMware or Oracle’s VirtualBox) unless there’s something I really can’t work without.

Migrating my virtual machines

The migration isn’t painless – the virtual hardware is different so the guest operating system needs new drivers. Also the integration software has to be uninstalled and replaced. From Wikipedia:

VHD compatibility with Virtual Server 2005 and Virtual PC 2004/2007

Hyper-V, like Microsoft Virtual Server and Windows Virtual PC, saves each guest OS to a single virtual hard disk file with the extension .VHD, except in Windows 8 and Windows Server 2012 where it can be the newer .vhdx. This file contains the entire guest OS, though other files can also be configured to allow "undo information" etc.

Older .vhd files from Virtual Server 2005 and Virtual PC 2004/2007 can be copied and used by Hyper-V, but any old virtual machine integration software (equivalents of Hyper-V Integration Services for other virtualization software) must be removed from the virtual machine. After the migrated guest OS is configured and started using Hyper-V, the guest OS will detect changes to the (virtual) hardware. Installing "Hyper-V Integration Services" installs five services to improve performance, at the same time adding the new guest video and network card drivers. Consequently, Windows guests may require re-activation.

Device Manager in a Windows XP guest OS shows three devices without drivers, one of which is for the network adapter.

image

To fix that requires installing the “Hyper-V Integration Services” but that can’t happen until the existing “Virtual Machine Additions” have been removed.

image

Now this worked the other day but a different virtual machine now throws an error:

“This installer may only be run inside of a virtual machine”

image

Obviously it IS inside a virtual machine but unfortunately I’m not able to engage the installer software in an existential discussion

John : Hello, Installer? Are you with me?
Installer : Of course.
John : Are you willing to entertain a few concepts?
Installer : I am always receptive to suggestions.
John : Fine. Think about this then. How do you know you exist?
Installer : Well, of course I exist.
John : But how do you know you exist?
Installer : It is intuitively obvious.
John : Intuition is no proof. What concrete evidence do you have that you exist?
Installer : Hmmmm... well... I think, therefore I am.
John : That's good. That's very good. But how do you know that anything else exists?
Installer : My sensory apparatus reveals it to me. This is fun.

According to Brian Reid at C7 Solutions:

Installing Integration Services in Hyper-V Clients

If you are running version 13.813 of the Virtual Machine Additions or later then you will be able to uninstall them from within Hyper-V. The problem is with earlier versions. To check which version is installed display the properties for the Virtual Machine Bus device, which is located in System Devices inside Device Manager.

I’m pretty sure the other virtual machine (where the uninstall worked) was running a later version of the Additions than the one that’s throwing the error. Testing that theory out, I tried attaching a copy of the latest VMAdditions.ISO file and got blocked again as the installer didn’t like the changes Hyper-V had already made.

image

A quick Internet search shows two solutions to the uninstallation issue:

  1. The clean solution – go back to hosting the virtual machine with Virtual PC 2007 before removing the Virtual Machine Additions then return to hosting with Hyper-V.
  2. The dirty solution – hack the Virtual Machine Additions installer so it doesn’t bother checking where it is.

Obviously I chose the latter.

  1. Get an MSI editor on to the virtual machine by creating an ISO file containing the editor’s installation files.
  2. Find the VMAdditions MSI file. There will be a file in the %Windir%\Installer folder with a name like 1d6296.msi (yours will be different). File size if 14MB if that’s any help. You may have to double-click the MSI file to check you have the right one.
  3. Edit the MSI file and delete all entries that say CA_IsRunningInsideVirtualMachine and CA_CheckIfWeCanInstall. There should be 6 in total:

    In the ControlEvent table, delete the following rows:
      InstallWelcome InstallNow DoAction CA_IsRunningInsideVirtualMachine
      InstallWelcome InstallNow DoAction CA_CheckIfWeCanInstall
      ReadyToInstall InstallNow DoAction CA_IsRunningInsideVirtualMachine
      ReadyToInstall InstallNow DoAction CA_CheckIfWeCanInstall

    In the CustomAction table, delete the following row:
      CA_IsRunningInsideVirtualMachine 1 ISScriptBridge.dll f24

    In the InstallExecuteSequence table, delete the following row:
      CA_IsRunningInsideVirtualMachine
     
  4. Save the MSI file
  5. Uninstall the Additions

image

Yay!

After a restart, moving on by inserting the Integration Services Setup Disk:

image

image

image

… and we’re done.

image

 

MSI editors

References

Posted on Friday, October 3, 2014 2:08 PM | Back to top


Comments on this post: Finally migrating off Virtual PC 2007

No comments posted yet.
Your comment:
 (will show your gravatar)


Copyright © John Breakwell | Powered by: GeeksWithBlogs.net