Back when it was first announced I made a couple of posts about Windows 7 XP Mode (available here and here). Now that I’ve been using almost every day for the past few months, I wanted to revisit the topic and write about my hands-on impressions. In this post I’ll show how applications that run under XP Mode integrate with the regular Windows 7 environment.
The integration features of XP Mode work really well, for the most part. Applications installed in the Virtual Machine appear right there on the Start Menu:
The Start menu gains a “Windows XP Mode Applications” folder under “Windows Virtual PC”,
which holds all apps installed in the XP Mode virtual machine (click picture to enlarge)
And even show up when searching, which is extremely convenient.
The Quick Search functionality of the Start menu covers
XP Mode Applications. (click picture to enlarge)
When you launch applications, Windows starts up the XP Mode virtual machine behind the scenes, showing a progress toolbar instead of XP’s boot up sequence.
Windows XP Mode virtual machine startup. Notice it is running under
Windows Virtual PC. (click picture to enlarge)
Once the application starts up, you’ll notice it is running on XP Mode since the UI uses XP’s windows, instead of Aero:
Visual Basic 6.0 on XP mode, complete with default Windows XP “Luna” theme. (click picture to enlarge)
The following screenshot shows this more clearly, by contrasting the Visual Basic 6.0 IDE running under XP Mode and Visual Studio 2008 running directly on the Windows 7 desktop.:
Visual Basic 6.0 on XP mode (Luna theme) vs. Visual Studio 2008
on Windows 7 (Aero Glass theme). (click picture to enlarge)
Another VERY NICE feature is that the "My Documents” folder is transparently mapped to Windows 7’s “Documents” library:
Visual Basic 6.0 on XP mode Open Project dialog showing the My Documents folder.
Notice the same contents on the Documents library in Windows 7. (click picture to enlarge)
These integration features of XP Mode make life much easier for legacy applications, but it is far from perfect. In the next post I’ll mention the annoyances I’ve run into while working with XP Mode.
Yesterday I blogged about Windows 7’s XP Compatibility Mode, and have some additional pieces of information that I consider interesting if you are considering using it in the future:
- First of all, not all CPUs would be able to use XP compatibility mode. Take a look at this page over at Tom’s Hardware, and the post over at Ed Bott’s blog. I think the image halfway down the page on the second link speaks for itself – you probably won’t be able to know if the deployment target for your application supports XP Mode or not, which can complicate the installation experience.
- The second bit of information I want to comment about is the fact that even though applications running under XP mode appear seamlessly alongside Windows 7 applications, they are still running on a virtual machine. From what I’ve seen the boundary is not noticeable to the end user - the application’s shortcuts appear in Windows 7’s start menu, the tray icons appear in Windows 7’s tray, etc. But apps in XP Mode run completely separate from their Win7 counterparts, and the VM itself needs to be patched with its own version of Windows Update, requires specific policies applied to it, etc. It goes without saying that all this adds overhead to managing these type of deployments, and may cause incompatibilities if an app requires interaction with other programs installed on the Windows 7 side (VB6 apps using Office’s COM API is a common example – will you require separate versions of Office, one in the XPVM, and another one on W7 for daily use?).
- Finally, XP Mode uses Terminal Services and something similar to the RemoteApp mechanism to display applications on the Windows 7 desktop (not sure how other VMMs such as Parallels’ Coherence manage it) . Even though the integration is almost seamless, there are a few quirks here and there that make for an inconsistent experience (drag and drop files, etc), and may affect the performance and L&F of the application.
This post argues that the best solution would be to use Microsoft’s App-V technology to virtualize “XP and older” applications. I agree that would be an ideal solution. But maybe there is a reason why it works like it does – so that you won’t get too comfortable. XPM, IMHO, should be considered as an intermediate step towards moving your legacy apps to the latest technologies.
(As a side note, remember I did a lot of work on Virtualization, and think it is a good way to get the most out of your IT infrastructure resources. XPM, to me, is an excellent idea to start dropping all the legacy parts of Windows without compromising application compatibility, and a smart move at that. )
As a Visual Basic 6.0 developer you may want to become yourself familiar with the .NET platform before putting it into production (and making the corresponding investments). In this blog post I wanted to give some pointers to commonly used resources that can help you in that regard.
To run one of the latest Microsoft operating systems you can take advantage of the VHD Test Drive program that I blogged about some time ago. Through this program you have access to a large number of OS configurations that you can try out for a limited time. The ones I would recommend to get started are the Windows Vista 30-Day Eval VHD, the Windows Server 2008 Evaluation, and the Microsoft Windows Server 2003 R2 Enterprise Edition VHD. Remember you need either Virtual PC, Virtual Server or Hyper-V in order to run the virtual machines.
You’ll also need to install Visual Studio 2008, and for this you can either install the Express Editions (which have some limitations, but are free), or a 90-day trial version of Visual Studio 2008 Professional Edition or Visual Studio Team System 2008 Team Suite. Another alternative is to download a full virtual machine with Visual Studio Team System 2008 Team Foundation Server installed.
Also, to get familiar with specific .NET features, you can take advantage of the free e-book offer and the additional content currently up at Microsoft Visual Studio 2008 Learning Portal.
A quick post to tell everyone that the day finally came: Windows Server 2008 was released today. You can find more information about it on the Windows Server 2008 page, and watch the keynote here.
The biggest deal, from my perspective, is Hyper-V. This will have a significant impact on the IT market, by exposing thousands of IT profesionals to a hipervisor-based virtualization solution. Another very interesting technology is RemoteApp, which allows you to use, through Terminal Services, just one application instead of the complete desktop. It solves a deployment issue that required expensive software solutions in the past - and something we run into every once in a while when determining the best deployment strategy for migrated Informix 4GL applications.
For those of you who missed it, Windows Server 2008 RC1 was released yesterday, with the Beta of Hyper-V. Finally!
You can download it here, and there is some more information on the Virtual PC Guy's WebLog.
Ever since we started working on the Virtual Server seminars, we’ve been hearing about I/O Virtualization, and how it will improve the virtualization landscape as the VT instructions did. Well, today Intel unveiled its vPro platform, with this new technology.
The technology is called Virtualization Technology for Directed I/O or VT-d. VT-d controls access from Virtual Machines to memory at the physical page level, preventing one VM from accessing other VM’s memory. This has the side effect of virtualizing interrupts and DMA tranfers, which in turn should increase the performance of virtual machines since the VMM would no longer need to trap and emulate the behavior from virtual machines.
For more information, check out or this article at Intel’s website, which contains a detailed explanation of the platform. For a more digested approach, check out this coverage at Arstechnica.
In case you missed it, Microsoft recently unveiled a new Virtualization Website. This website centralizes the information about all of Microsoft’s virtualization products.
I especially like the page about the different Virtualization Solutions offered by the company. It also caught my attention that they now have Softgrid application virtualization fully integrated with the virtualization stack.
Today while tryng to do a V2V migration form Parallels to VMWare, I had the need to boot my current VM into BartPE so I could create an image with Tru Image. When the VM started up, I tried to press al sorts of F key combos to get to the BIOS screen. In Virtual Server/Virtual PC, pressing F2 does the trick; but in Parallels it was not working.
After taking a trip to the VM preferences, I found that this is set within the VM properties, and is actually quite simple:
Today I was helping a colleage to restore an image that was created with TrueImage to an empty VHD. The process can be narrowed down to the following steps:
- Create the image using TrueImage
- Create two VHDs on the target VM (one to store the image, and the other to restote the image to)
- Mount the VHD that will hold the TrueImage image using vhdmount and format it
- Copy the Image from step 1 onto the VHD
- Unmmount the image and commit changes
- Boot into drive image and restore the image
Sounds easy? Well, usually it is - but today I faced a problem with step 3 above. When I mounted the VHD and formatted it, everything seemed fine, but when TrueImage tried to read the VHDs, it barfed and said that it was "unsupported". This was very weird since I mounted the VHDs time and time again without problems and the contents were inside. The VHDs were formatted as NTFS, so there really was no reason for the "unsupported" file format.
We tested and decided to format the partitions from within TrueImage using the new hardware wizard. After formatting them, I mounted the one that would hold the TrueImage image, copied the file and then tried to restore the image once again.
To my surprise, this time around TrueImage read both drives and the image contained on the VHD that I just copied. After that, it was just a matter of specifying the source and target and the P2V migration was underway.
Bottom line, if you are planning on using empty VHDs with TrueImage (the bootable CD), make sure that you format the VHD with the utility itself and not within Windows using vhdmount. Why? Dunno, but if someone would like to shed some light on this issue, please be my guest!
During the last month, due to some testing we had to carry out with a software project, I needed to work with 64-bit virtual machines. Virtual Server does not support 64-bit virtual machines, so I downloaded a copy of VMWare's free server solution and decided to give it a try. After playing around with VMWare Server, I've had my ups and downs which I will try to contrast with my previous experiences with Virtual Server. Price
Both are free, no contest there. VMWare requires a registration process to obtain the product key for the server, which can be a bit of a hassle. Virtual Server requires a registration process as well but no product key is needed.64-bit Support
VMWare's server runs as a 32-bit process on 64-bit hosts and offers support for 64-bit VMs (read again, slowly and it will make sense). Virtual Server runs as a 64-bit process on 64-bit hosts and does not offer support for 32-bit VMs. Types of Virtual Hard Drives
VMWare offers virtual drives that expand as they become bigger or ones that are of fixed size. It does not offer what is known as Difference Disks in Virtual Server. These disks are amazing when working with lab environments or for multiple restore points, and is one feature I cannot believe is in some way or another on VMWare.Undo Disks
VMware and Virtual Server both have this option. The restore process under VMWare is easier to carry out than on Virtual Server.
VMWare Virtual Server imports Virtual Servers vhds seamlessly. It does, however, convert them to a big mess of chunks that is hard to maintain. Although Virtual Server does not import any other type of virtual hard drive from another reseller, there are tools out there that will do the job for you.GUI
Even though there are some clear advantages of having a web interface for Virtual Server, there should have been a binary to administer it. There are some new alternatives
out there that might work for Virtual Server, but the bottom line is that the 32-bit client for controlling VMWare's server blows any web application out of the water.
Overall, both are excellent products and the fact that they are free is amazing. I have grown so used to Virtual Server that I will continue to use it unless I have the specific need for a 64-bit VM, and when that time comes, I will hopefully be able to use Longhorn Virtualization.
VMWare, VirtualPC, Virtual Server, Parallels - they all have one thing in common: in order to work faster, they install a set of drivers that patch the VM. This has a very positive effect on the virtual experience, but what happens when, say - the VMWare drivers are running under Virtual Server?
As you might have guessed it, no good things happen.
Products such as Parallels and VMWare Virtual Server allow you to import machines that were created with Microsoft's virtualization products. If you grab a machine from Microsoft's VHD test drive program and import it right away, you are in for a nasty surprise. The drivers for the previous product are still there, and they *will* conflict when you install the additions of the new product.
So remember, get rid of your product's "additions" *before* migrating virtual machines.
This has been a very exiting week for virtualization, at least on the Microsoft side of things. Microsoft made two significant anouncements between Monday and today:
- First of, Virtual Server R2 2005 SP1 was finally released! You can download it from Virtual Server’s website. Make sure you check out the details about the release as well. BTW, the website also got a new “modern” look. Nice job!
- Also, today Microsoft released the whitepaper “Licensing Microsoft Server Products with Microsoft Virtual Server and Other Virtual Machine Technologies”. This whitepaper details the licensing requirements to run Microsoft’s products in Virtual Server, VMWare, and other virtualization solutions. It also covers some restrictions for scenarios like moving virtual machines from one server to another, virtual machine libraries, products licensed by CPU/Virtual CPU, and others.
For the licensing, remember that you can also use Windows Server Virtualization Calculators to figure out the licensing cost of running Microsoft’s server products on a virtual environment.
Right now my colleague Stephen
is delivering the last hands-on lab of the Virtualization for Developers Lab Series
. This means that one of the most interesting trainings I have delivered is now over. It has been a good run, and, even though we sometimes didn’t get the attendance we wanted, a great experience. Some of the highlights of the series include:
- Meeting all sorts of interesting people with interesting (and crazy) projects at every location
- The experience of getting the setup process for the labs almost fully automated - learned a lot about Windows in the process
- See Windows Server Virtualization live for the first time on a presentation by Arno Mihm at a Redmond event
- Going to a tapas bar (“de tapeo”) in Huesca with some of the attendees at the Zaragoza event
For the next few months we’re going to be working on some new trainings and in some other exciting projects. I’ll keep you all posted. In the meantime, remember about the HP Integrity labs – that’s where I’ll probably head next!
Today I finally got a chance to play with Beta 2 of the System Center Virtual Machine Manager. Here are my preliminary impressions:
- First of all, the product has improved significantly. It has tons of new features, and uses tons of new pre-requisites. Fortunately, you can download a pre-configured VHD with SCVMM, ready to go, from Microsoft Connect.
- This version of SCVMM uses the new Windows Remote Management (WinRM) package to manage remote servers. This is a step in the right direction, IMHO, since it is Microsoft’s implementation of the WS-Management Protocol. The downside is that I had to install the WinRM package on the servers, but well, its a nice trade-off for getting a SOAP-based, standard management product.
- One thing I really like about it is the Powershell integration. It is finally included in this version of SCVMM, and the implementation rocks – at the end of most wizard, you get a button that says “View Powershell Script”:
Pressing that button shows you the Powershell script equivalent to the options you selected:
So far I’ve only been able to add hosts and manage the virtual machines on those hosts. I am looking forward to working with the new advanced features, including (and especially) the physical to virtual migration. Overall I think the new features are great, and you should give it a try.
On a previous post I was having problems with the VMRC ActiveX control when creating an instance at runtime. The problem boiled down in having an invalid OCX state exception thrown at me whenever I tried to access a property of the VMRC ActiveX control at runtime.
After researching for quite a while on the Internet, it struck me that if I just placed the VMRC ActiveX in a UserControl at Design time, and instantiated that UserControl instead of the ActiveX directly, things would work great. I implemented this into the VMCA application and it worked perfectly fine. You can see I managed to get VMRC connections to different machines in different tabs at runtime on this post.
Some people have asked where they can get a copy of the VMCA. Unfortunately as of now, the application hasn't been thoroughly tested and is missing some functionality which I deem as basic. Also, this is something I have been working on my spare time and lately I have been swamped with other projects. Perhaps the best approach would be to take it to stable phase and then try and get it on CodePlex so that everyone can pitch in...we'll see how that goes.
For all things related to software migration, be sure to visit Artinsoft's website. For training in Visual Basic to C# migrations, Visual Basic to VB.Net, Virtualization, and 64-bit training check our training web page.
Today Microsoft released the Beta 2 of
Carmine System Center Virtual Machine Manager. This Beta 2 release adds long-awaited functionality, like P2V and V2V migration, among others. From the release notes:
- Completely new look-and-feel (same as System Center Operations Manager 2007, Service Desk and System Center Essentials)
- Physical-to-Virtual (P2V) Conversions
- Virtual-to-Virtual (V2V) Conversions
- 64-bit VMM server support
- EveryVMM component is now remotely installable
- Full Windows PowerShell support
- Better overall performance and scalability
- Every feature from Beta 1 with more functionality and enhancements
I am currently downloading it, and will post back once I get a chance to play with it a little bit. One of the features that I’m dying to try out is the Powershell support – as powerful as vbscript is, I’m not particularly fond of it, and replacing its use on yet another MS product is another step in the right direction.
You can download Beta 2 from https://connect.microsoft.com/vmm. Remember you have to register first!
Last week it seemed that the Paris
events were going to be the last ones in the Virtualization for Developers lab series. Well, due to popular demand, there's a new lab scheduled for Singapore, on May 16-18
. Click the link to sign up, or check out the series at the Virtualization for Developers Lab Series
In a couple of weeks we’ll have the last of the scheduled Virtualization for Developers Labs. The two labs will take place on the same week – one in Zaragoza, Spain, on May 8–10, and the other one in Paris, France on May 9–11.
If you are interested in Virtual Server, the upcoming Windows Server Virtualization, or Virtualization in general, I suggest you check them out. So far we’ve had some great reviews of the labs, and it is a great opportunity to get hands-on training with Virtual Server and its APIs.
You can now download the Release Candidate for Virtual Server 2005 R2 SP1 from https://connect.microsoft.com. Remember that you need to be registered in the beta program to be able to download the files.
This release contains bug fixes from Beta 2 – other than that, it doesn’t have any additional functionality.
As I previously mentioned, I've had some chance of working on the application dubbed as the Virtual Machine Configuration Assistant in the last few days. One of the most noticeable changes are the GUI. This is the old GUI of the app:
This is the revamped, improved version:
The application has undergone major revisions under the hood. I have tried to separate tasks into different classes in order to gain modularity. So far I have a VMManager, a VHDManager, a VMRCManager and so on. Reading the code now makes a lot more sense than before.
This is the part in which most of the work has been lately done, the Disks tab:
From here, you can pretty much do anything related with VHDs. After modifying some ISOs, I have also managed to completely automate the defragmentation-precompaction-compaction phase required to reduce the size of VHDs. Now I just leave the process running and when I arrive the next day, my VHDs are like 50% smaller.
I had not touched C# in a while, and all I can say is "Wow". C# rocks, it is very intuitive and creating efficient GUIs is a bliss. One can only wish that there was a 2.0 framework to run under OS X.
I have also fixed the problem with OCX stats at runtime - actually it was a workaround, not a fix. Here is a video I made of some of the features of the application, which include:
- VHD Attachment
- VHD Creation
- VM Creation
- VMRC in tabs for each of the machines
*sigh*...It has been impossible to embed the video here, here is the youtube link
In case the resolution of the movie above is too small, the avi can also be downloaded.
For all things related to software migration, be sure to visit Artinsoft's website. For training in Visual Basic to C# migrations, Visual Basic to VB.Net, Virtualization, and 64-bit training check our training web page.