Xenocode and multiple IE’s

Saturday 5 September 2009

One of the banes of a web developer’s existence is the need to test their site in Internet Explorer, not just once, but in multiple versions of Internet Explorer. These days, IE’s 6, 7, and 8 are pretty much required. Because of their tight integration with Windows, it’s difficult to run all three side by side.

There are installers that claim to run them independently, but we’ve definitely seen side-by-side IE6 behave differently than a true IE6-only machine.

A technology that’s been making the rounds of our office is Xenocode, which is a new kind of virtualization: application-level virtualization.

In the heat of a last-minute debugging session, a co-worker insisted I visit their browser sandbox page and click on IE7. My machine has a pristine IE6 install which I have resisted upgrading so that we can have “real” IE6 available. I didn’t understand what this Xenocode thing was going to do, so I was nervous.

I clicked on IE7, and after downloaded, it ran, and I had an IE7 window running on my machine. When I started to enter the URL to test, it auto-completed for me! A little spooky for an application that is supposed to be running in a sandbox.

Still curious about how this worked, I used Process Explorer to see what was going on. I expected to see xenocode.exe or something, but it claimed to be iexplore.exe, and it claimed to be in “C:\Program Files\Internet Explorer”. Scary. It seemed like it had upgraded me to IE7, but that’s exactly what it claimed not to do.

Just to experiment, I ran a Xenocode application that I didn’t already have installed on my machine, a poker client. Sure enough, the Poker Stars application ran, and Process Explorer claimed it was running out of “C:\Program Files\Poker Stars”. Except that directory doesn’t exist on my machine!

Xenocode virtualizes the operating system services seen by the application, and provides a virtual view of the filesystem, registry, and so on. This lie is complete enough that even third-party OS utilities believe it, and report that the code is running from Program Files directories that don’t exist.

So far, it looks like it really works. It’s a great way to get multiple IE support on one machine. I don’t know why you’d need to run other kinds of applications virtually, but it sure seems like impressive technology.

Comments

[gravatar]
Jonathan Hollin 7:57 PM on 5 Sep 2009

That's pretty cool. Virtualisation has improved massively in a relatively short space of time. It really thrills me that we can do things like this. Presumably Xenocode itself would run happily inside a Windows environment running in a virtual container on a Mac?

Doesn't this blow your mind?

[gravatar]
Nate 10:24 PM on 5 Sep 2009

That is some crazy, wacked-out tech! Very cool. I can imagine a dozen uses for it for our client - trial periods, testing, demo machines, etc.

[gravatar]
mikey 6:04 AM on 6 Sep 2009

My old standby - Multiple IEs, doesn't run on Windows 7 (or Vista for that matter), so will test this right away. Ned, Google must like you, as your blog post is already #5 in a result set for 'multiple ies' (no quotes).

[gravatar]
andrew 6:27 AM on 6 Sep 2009

Cool name too. Very aptly descriptive.

[gravatar]
Yoav Shapira 3:52 AM on 11 Sep 2009

This is really useful. Thanks for sharing!

[gravatar]
Carriep63 11:28 AM on 9 Oct 2009

Amazing. Jonathan, you are absolutely right. I can run this in Virtual Box on my Mac. Microsoft has recently locked up their virtual image files so I was not able to download IE6 or 7 on Virtual Box. I was just about to go buy a (cheap) Windows machine. Now I don't have to.

Add a comment:

Ignore this:
Leave this empty:
Name is required. Either email or web are required. Email won't be displayed and I won't spam you. Your web site won't be indexed by search engines.
Don't put anything here:
Leave this empty:
URLs auto-link and some tags are allowed: <a><b><i><p><br><pre>.