No: the compatibility modes aren't the same as the real browser - they try but some features, especially things like CSS or DOM handling of errors, non-standard properties, etc. will not be consistent enough to avoid testing in the real thing.
When IE8 was out, setting IE7 compatibility mode using an HTTP header worked for 99% of a huge internal business app but I had to monkey-patch around a third-party library because the code which worked in IE7 raised an exception in IE8's IE7 compatibility mode due to significant differences in the underlying JavaScript engine. This was an improvement - IE7 should have done the same - but it broke a huge enterprise shovelware system with an indifferent vendor who waited until after IE8 was released to start testing (a support manager actually contacted me asking if they could redistribute my patch!).
Compatibility mode isn't what he's talking about. In the developer tools, there's also "browser mode", which allows you to select a different user agent, and "document mode", which allows you to select a rendering engine from IE7 onwards.
the sad truth is; anything below ie7 should be dropped. Unless you are developing for a corporation that won't move away from ie6 and then you should only test on ie6.
My experience is that about 90% of the time, the compatibility mode in IE9 or IE10 will give you an accurate prediction of behavior in IE7 or IE8. It's that last 10% of the time, generally related to JavaScript issues in the original browser engines or obscure CSS bugs. So it works for basic stuff, but if you have anything complex going on you should test in a VM running the actual browser version you want to test.
Selling an operating system is an afterthought in Microsoft's attempts to get you to give them money. If only our other incompatibility woes were so blessed with such afterthoughts.
I've been using these for the past few months and they've worked fine. Plenty of things I wish worked better, but for the most part I'm happy that it's free and I don't have to reboot just to debug some CSS.
VMWare Fusion's importer works perfectly - in the past there used to be a concern with drivers but at least by VMware 4 it just works.
Procedure:
1. Download
2. Use unrar or http://wakaba.c3.cx/s/apps/unarchiver.html to unpack the segments
3. Open VMWare Fusion & choose import
4. Get coffee & wait for disk I/O
5. Install VMWare tools & pending Windows Updates
6. Take a snapshot so you can reset it after the timelimit sets in (as noted by Microsoft, they disallow storing data durably for more than 90 days)
There are utilities to convert a VirtualBox VM to VMware, if you are feeling adventurous :-). From my experience though, it's kinda painful (I forget what the issues were but I remember regretting the decision to convert the VM).
If you're on a Mac and have VMWare fusion its actually really easy. Just use VMWare to import the VHD files and it works fine. No need to use other utilities.
I was a little baffled why MS would make this images only run on Windows when the people most likely to need to emulate other versions of IE / Windows would be non-Windows users.
Presumably it's useful for web developers on Windows 7 or above, but who need to test on IE6/7.
As to why they'd use their own VM in preference to VirtualBox I don't know. But to be fair, Microsoft isn't the only company that neglects developers who aren't on their platform; "not invented here" syndrome seems to impact all software companies eventually!
I suspect it's more useful for their big customers who need to test multiple versions – IE's most dedicated users are in the enterprise space, where Windows XP is still a major desktop platform.
The biggest problem with these is that they all have an expiration date - and Microsoft frequently forgets to update them. And getting through to Microsoft to tell them it is out of date... forget about it.
I'm surprised more people haven't done this as it would seem an obvious way to solve the problem.
I've recently been in several large corporations and they won't support anything below IE8 now. Most are dropping support for IE8 after IE10 becomes more widely available.
The XP image has a hard expiration date (currently just a few months from now: 2/14/13). I believe you would need to rollback to s snapshot and screw with the system date or the VM.
I've been using these since ~2007 or so and this is a frequent issue. When new versions of IE or Windows come out they have been very, very slow to update these.
These have been around for years. I put together a guide for personal use a while ago, for how to get them running under VirtualBox on OSX. Should be a similar process under Linux. I don't have a blog or anything, so I'll include them here, hoping they'll be helpful to people here, sorry about the length (I last did this a few months ago, so it should be pretty up-to-date).
- Extract the RAR files. On OSX use UnRarX: http://www.unrarx.com/ At least with UnRarX, it will still work despite the first RAR file being a self-extracting .exe file which, obviously, can only run on Windows. You may have to open the multi-part archive using the second file, it will still work.
- Install VirtualBox from https://www.virtualbox.org/
Inside of VirtualBox, create a new virtual machine using the wizard. Make sure to choose the appropriate OS (for example Windows 7) and give it enough memory (the default 512MB is definitely not enough). Also, we're using 32-bit OS only. The important part is to select the .vhd file you extracted from the .rar files as an existing hard drive.
- Do not run the virtual machine yet. It won't work, because it's designed only to work with Microsoft Virtual PC. To make it compatible, click "settings" in VirtualBox to change some things:
- On the system tab, check Enable IO APIC. This is necessary to get your mouse to work (I think).
- On the storage tab, remove your VHD from the "SATA Controller" list. Then add the same VHD file back, only under the "IDE Controller" tab. The VHD is expecting an IDE controller, and you'll get a BSOD if you don't do this step.
Under the network tab, change "attached to" from "NAT" to "Bridged Adapter". This is necessary to be able to access a webserver running on your local machine, that is outside of the VM. (You don't need to do this if you just want to access websites in general). Start the Virtual Machine.
- You'll notice the mouse doesn't work. We'll get to that. For now, the Tab key and Alt+Tab are your friends.
Log in with either the "IE User" or the "Admin" account. The password is "Password1".
- It will ask you to activate. Ignore for now.
- In VirtualBox, go to the "Devices" menu in your OS menu bar and click "Install Guest Additions...".
- In Windows, launch Explorer somehow. Easiest way is the "run" command (try Windows Key + R) and type "explorer".
From within explorer, use Tab and Enter and arrow keys to navigate to the inserted CD. Select the "Autorun" file and hit "Enter" to run it.
- You are now installing guest additions. During the process, you'll need to Alt+Tab to the new prompt window to hit enter every time you need to confirm something.
- Once guest additions is installed, use the start menu to restart the virtual machine. Once it restarts, your mouse should now work inside the virtual machine, hooray!
- It will ask you again to activate. Try to activate online. If it works without asking you for a product number, awesome. If it asks you for a product number, hit cancel, open up a command prompt (run "cmd"), and type the following:
slmgr -rearm
(If it says you don't have permission, then try logging in under the other account when Windows starts up, if more than one account is listed, e.g. both "Admin" and "Administrator". One of them should work.) This will activate Windows for 30 days, and you can redo this every 30 days. Note: if you don't activate or run this command instead, then Windows will shut itself down after 15 minutes.
- Open up IE. It should be able to browse the Internet. But it will not open up sites on nonstandard ports, so browsing to your own site at something like
192.168.0.10:8080
will not work. To fix this, go to Internet options, then the Security tab. Click the Trusted Sites icon. Click the Sites button. Uncheck the "Require server verficiation (https:) for all sites in this zone" checkbox. Click Add, then type in the IP address of your machine (for example
http://192.168.0.10
). Click Close. Then, with the Trusted Sites icon still selected, change the security level for this zone to the lowest possible setting. Now, browsing non-standard ports like 8080 should work.
- If you find yourself Cmd+Tabbing between the Virtual Machine and the rest of your programs, you may find that every time you Cmd+Tab back to the Virtual Machine, it opens up the windows menu. This can get real annoying real fast, because it removes focus from whatever you were working on. You can disable the "Windows key" inside of the VM from this Microsoft webpage:http://support.microsoft.com/kb/216893 Obviously, this will disable any windows key shortcuts, but that's probably fine. Remember, normal shortcuts like Ctrl+V etc use the Ctrl key on the Mac keyboard, not the Cmd key.
Hackers don't search for easy solutions ;) You can use any hex editor to cut the PE file: just cut from the beginning to the point where the Rar! signature starts and rename the extension to .rar.
Thank you for this. What I wish I could find was a way to buy a low-cost version of Windows to run in VirtualBox on a Mac, not for testing IE, but just to be able to use Windows occasionally.
I'm not sure why MS wants to make buying Windows without a PC so expensive. I suppose they feel that locking us into PC hardware (that won't run MacOS, thanks to Apple's lock-in policies) is the best way to lock us into Windows. For me, someone who uses Mac, Windows, Linux, iOS, and Android for different things, it all just drives me toward a policy of trying to find ways to get by without MS and Apple as much as I reasonably can. A $39 "Windows for VMs" package would keep my foot in the Windows world, but lacking Apple's (current) hardware quality advantage, MS is the easiest to learn to do without entirely.
Have you seen the pricing on Windows 8? It's $48 here in Australia (roughly the same in USD) and I believe there's a $40 download-only version too. It sounds like that would suit your needs?
It's my understanding that that's an upgrade price, not a new installation. They're doing it, because so many Windows users are saying they'll keep using Windows 7, an actual computer OS, rather than upgrading to the new "post-PC" Windows 8.
You could be right, and I could be wrong, though....
Just a quick note that one of the easiest ways to get a legitimate license key is to join BizSpark. If you are a startup (which I imagine a lot of people here have some sort of startup) there is no reason not to be a part of it.
I agree. I'm a bizspark member with my side-business. It's actually been quite useful since I develop the application in C#, I can get Visual Studio Professional and every version of Windows to test against.
IIRC, it cannot be just any kind of startup, i.e. if you have a software service house (build software for others / consulting), you are not going to get into BizSpark.
One thing I also wanted to add is that BizSpark gives you free Azure platform access...with Windows Server keys! I think it works out to be two "large instances" for a year. I think large is like 2GB ram or so.
Some of these even do mobile browsers too. After spending several hours setting up just 1 or 2 VMs, I'm convinced using these services is not only cheaper and more stress-free but also lets you keep more up to date.
Thank you for mentioning these. I tried BrowserStack and got so much value from the free 30min trial (found & fixed several IE8 bugs) that it was a no-brainer to sign up for a monthly plan.
Even the tunneling to a local Vagrant instance, with a subdomain (through lvh.me), worked simply and flawlessly. I couldn't have asked for a better experience.
This is nice, but it suffers from the same flaw all the other virtual browser services suffer from: No pay by the minute/hour. I probably only need 1 or 2 hours with IE 8 every month or two.
xdissent made a great command line installer on github for virtualbox and these virtual machines; you can get them running with one command. I've used the script for the last year or so when I've had to set up a new box for testing and I've really enjoyed it.
I came here to post this; instead I'll mention more features:
- Handles interrupted downloads for you, continues them.
- Hilariously, each browser comes in a distinct version of the operating system. Windows 95 for IE7, Windows Vista for IE8, and Windows 7 for IE9. A trip down memory lane!
- Debugging for IE7 is not enabled by default on the IE7 image. Thanks, MS ... people mostly use IE8 with IE7 mode turned on, but it is possible to get a full debugger in IE7.
shiver
Now I'm going to go back to pretending those abominations don't exist. Until later next week, when yet another responsive web app needs to be backported to the days of buggy whips ...
Bear in mind they're time limited. If you're running Windows 7 you can use multiple instances of "XP Mode" (basically Virtual PC + a VHD image you can download from MS) to run all versions of IE http://blog.dotsmart.net/2009/06/24/using-windows-7s-xp-mode...
...and since I use Win7 for work I was tempted to try http://www.my-debugbar.com/wiki/IETester/HomePage but ended up using my old solution out of fear of messy installs/unistalls that such software could do on my "clean" work OS though I'm curious if anyone tried it as it still seems more comfortable and I'd switch to it if I could...
In the past (about four years ago) we had a difficult to debug issue which only manifested in IE on one team member's computer - we traced it down to Multiple IE screwing up cookie handling in some odd manner. So you'd be testing with an environment that's not necessarily 100% the same as your end users.
Yes, I have also seen peculiarities with Multiple IE. IMO, it's decent for casual testing, but you still need to do testing on real installations of your target platforms.
For web devs, if you want to test your site on IE7, download the XP image and install IE7 on it - the image comes with the installer on the desktop. Don't bother with Vista unless you need to support something OS-specific, which if you do - you should just stop what you're doing and severely rethink your web dev stragedy.
For use with Oracle VirtualBox, you'll have issues with networking, which will prevent you from Activating the VM.
That's always bothered my about Internet Explorer. I can download Firefox, Chrome, and Opera all for under 20MB but I need to download 4GB to test Internet Explorer 8?
Seems strange, doesn't it? But the rendering engine is shared with countless other system components, it's not portable between operating systems (no IE9 on XP, no IE on mac/linux, no IE7 on certain x64 windowsen) and all attempts to extract the rendering engine into a portable .dll have quirks of their own (IETester et al).
Sad state of affairs, but a whole OS image is the only way to get guaranteed compatibility with what real-world users are seeing - A better comparison would be to iOS Safari or the Android browser, where the vendor just has zero incentive to make that specific browser work (identically) on other platforms.
Another alternative is using an application virtualization solution. In that case you can run IE6 directly in Windows 7. It works as a sandbox and you don't nees the whole operating system. My company is providing this technology to Symantec.
The right thing to do is sometimes just to give it up. People will stop using the old browser, even if that isn't immediate in large companies that can't roll out new versions quickly due to the expense and time involved.
A while ago I used Windows XP Mode to create VMs with different versions of IE for testing - very easy if you have Windows 7 Pro because XP mode can be duplicated/copied around like any other VM and has automagic licensing provided the host in Windows 7 Pro (if you move the VM to a different type of host it will fail to work)
Obviously this is only good if you're already on windows but that was a huge help for development and didn't take much effort to set up.
I'm fairly sure IETester is not a 100% accurate representation. Although saying that, I have used it before and it certainly is more convenient. I suppose it depends on how important the compatibility of your site is on the older IE versions.
In Virtualbox you can take a snapshot of the VM after the initial install and revert to that snapshot to reset the trial period. ievms does this for you automatically.
This is awesome. Anyone have a pointer to Win2003 Server (ie7)? We have a bunch of folks there with a hard-to-knockdown bug not showing up elsewhere. Our solution so far has been to say: Upgrade the OS.
You don't need VMs or the sort to test old versions of IE.
Open IE and hit F12, this will open IEs equivalent of Chrome Developer tools. It has options to change which IE engine it uses all the way back to IE7 for testing.
Which gets you close, but not close enough to say "I've testing in IEX." Although the DOM modelling is very close, the CSS and JS quirks between different versions aren't emulated enough in F12 to catch the problems that using the actual version would expose.
From the title I thought they were hosting VMs that you could RPC into to test your site. That would be quite cool (not that I need it at the moment though).
the only way early versions of IE would go away is if the computers upgraded themselves.
Even going out of support won't kill them as some people/businesses still won't allow their computers to upgrade IE, or install anything else.
Example: Over the weekend I was at a big chain store and decided to sign up for a discount card (which is done online). The employee pulls up the browser, and it's IE6.
The website we go to, the company's public website, is broken in IE6, yet they still use IE6 on their computers.
If businesses won't upgrade from IE6, even though the tools they make their employees use don't function properly in IE6, I don't think there's anything MS can do about it.
But that's precisely the point - the only thing that can force businesses to upgrade is if the cost of developing, testing and maintaing software for IE6 becomes more than what it costs to do a full overhaul and re-education. Microsoft stepping in to make IE6 support easier and cheaper simply sends the message that it's still a valid choice for development and support.
There's a script called ievms that will automatically downloade those VMs and convert them for use with VirtualBox on OS X or Linux:
http://xdissent.github.com/ievms/