• Stars
    star
    9,893
  • Rank 3,546 (Top 0.07 %)
  • Language
    Shell
  • Created over 13 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Automated installation of the Microsoft IE App Compat virtual machines

Overview

Microsoft provides virtual machine disk images to facilitate website testing in multiple versions of IE, regardless of the host operating system. With a single command, you can have IE6, IE7, IE8, IE9, IE10, IE11 and MSEdge running in separate virtual machines.

Click here to lend your support to ievms and make a donation at pledgie.com!

Quickstart

Just paste this into a terminal:

curl -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh | bash

Requirements

  • VirtualBox > 5.0 (http://virtualbox.org), select 'command line utilities' during installation
  • Curl (Ubuntu: sudo apt-get install curl)
  • Linux Only: unar (Ubuntu: sudo apt-get install unar)
  • Patience

NOTE Use ievms version 0.2.1 for VirtualBox < 5.0.

Installation

1.) Install VirtualBox and check the Requirements

2.) Download and unpack ievms:

3.) Launch Virtual Box.

4.) Choose ievms image from Virtual Box.

The OVA images are massive and can take hours or tens of minutes to download, depending on the speed of your internet connection. You might want to start the install and then go catch a movie, or maybe dinner, or both.

Recovering from a failed installation

Each version is installed into ~/.ievms/ (or INSTALL_PATH). If the installation fails for any reason (corrupted download, for instance), delete the appropriate ZIP/ova file and rerun the install.

If nothing else, you can delete ~/.ievms (or INSTALL_PATH) and rerun the install.

Specifying the install path

To specify where the VMs are installed, use the INSTALL_PATH variable:

curl -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh | env INSTALL_PATH="/Path/to/.ievms" bash

Passing additional options to curl

The curl command is passed any options present in the CURL_OPTS environment variable. For example, you can set a download speed limit:

curl -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh | env CURL_OPTS="--limit-rate 50k" bash

Disk requirements

A full ievms install will require approximately 69G:

Servo:.ievms xdissent$ du -ch *
 11G    IE10 - Win7-disk1.vmdk
 22M    IE10-Windows6.1-x86-en-us.exe
 11G    IE11 - Win7-disk1.vmdk
 28M    IE11-Windows6.1-x86-en-us.exe
1.5G    IE6 - WinXP-disk1.vmdk
724M    IE6 - WinXP.ova
717M    IE6_WinXP.zip
1.6G    IE7 - WinXP-disk1.vmdk
 15M    IE7-WindowsXP-x86-enu.exe
1.6G    IE8 - WinXP-disk1.vmdk
 16M    IE8-WindowsXP-x86-ENU.exe
 11G    IE9 - Win7-disk1.vmdk
4.7G    IE9 - Win7.ova
4.7G    IE9_Win7.zip
 10G    MSEdge - Win10-disk1.vmdk
5.1G    MSEdge - Win10.ova
5.0G    MSEdge_Win10.zip
3.4M    ievms-control-0.3.0.iso
4.6M    lsar
4.5M    unar
4.1M    unar1.5.zip
 69G    total

You may remove all files except *.vmdk after installation and they will be re-downloaded if ievms is run again in the future:

$ find ~/.ievms -type f ! -name "*.vmdk" -exec rm {} \;

If all installation related files are removed, around 47G is required:

Servo:.ievms xdissent$ du -ch *
 11G    IE10 - Win7-disk1.vmdk
 11G    IE11 - Win7-disk1.vmdk
1.5G    IE6 - WinXP-disk1.vmdk
1.6G    IE7 - WinXP-disk1.vmdk
1.6G    IE8 - WinXP-disk1.vmdk
 11G    IE9 - Win7-disk1.vmdk
 10G    MSEdge - Win10-disk1.vmdk
 47G    total

Bandwidth requirements

A full installation will download roughly 12.5G of data.

NOTE: Reusing the XP VM for IE7 and IE8 (the default) saves an incredible amount of space and bandwidth. If it is disabled (REUSE_XP=no) the disk space required climbs to 95G (49G if cleaned post-install) and around 22G will be downloaded. Reusing the Win7 VM on the other hand (also the default), saves tons of bandwidth but pretty much breaks even on disk space. Disable it with REUSE_WIN7=no.

Features

Clean Snapshot

A snapshot is automatically taken upon install, allowing rollback to the pristine virtual environment configuration. Anything can go wrong in Windows and rather than having to worry about maintaining a stable VM, you can simply revert to the clean snapshot to reset your VM to the initial state.

Guest Control

VirtualBox guest additions are installed after each virtual machine is created (and before the clean snapshot) and the appropriate steps are taken to enable guest control from the host machine.

Resuming Downloads

If one of the comically large files fails to download, the curl command used will automatically attempt to resume where it left off. Unfortunately, the modern.IE download servers do not support resume.

Reusing XP VMs

IE7 and IE8 ship from MS on Vista and Win7 respectively. Both of these images are far larger than the IE6 XP image, which also technically supports IE7 and IE8. To save bandwidth, space and time, ievms will reuse (duplicate) the IE6 XP VM image for both. Virtualbox guest control is used to run the appropriate IE installer within the VM. The clean snapshot includes the updated browser version.

NOTE: If you'd like to disable XP VM reuse for IE7 and IE8, set the environment variable REUSE_XP to anything other than yes:

curl -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh | env REUSE_XP="no" bash

Reusing Win7 VMs

Currently there exists a bug in VirtualBox (or possibly elsewhere) that disables guest control after a Windows 8 virtual machine's state is saved. To better support guest control and to eliminate yet another image download, ievms will re-use the IE9 Win7 image for IE10 and IE11 by default. In addition, the Win7 VMs are the only ones which can be successfully "rearmed" to extend the activation period.

NOTE: If you'd like to disable Win7 VM reuse for IE10, set the environment variable REUSE_WIN7 to anything other than yes:

curl -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh | REUSE_WIN7="no" bash

NOTE: It is currently impossible to install IE11 without reusing the Win7 virtual machine.

Control ISO

Microsoft's XP image uses a blank password for the IEUser, which disallows control via Virtualbox's guest control by default. Changing a value in the Windows registry enables guest control, but requires accessing the VM's hard drive. A solution is to boot the VM with a special boot CD image which attaches the hard disk and edits the registry. A custom linux build has been created based on the ntpasswd bootdisk which makes the required registry edits and simply powers off the machine. The ievms script may then use Virtualbox guest controls to manage the VM.

The control ISO is built within a Vagrant Ubuntu VM. If you'd like to build it yourself, clone the ievms repository, install Vagrant and run vagrant up. The base ntpasswd boot disk will be downloaded, unpacked and customized within the Vagrant VM. A custom linux kernel is cross-compiled for the image as well.

Acknowledgements

  • modern.IE - Provider of IE VM images.
  • ntpasswd - Boot disk starting point and registry editor.
  • regit-config - Minimal Virtualbox kernel config reference.
  • uck - Used to (re)master control ISO.

License

None. (To quote Morrissey, "take it, it's yours")

More Repositories

1

iectrl

Command line interface and Node module for managing ievms virtual machines
CoffeeScript
197
star
2

karma-browserify

[deprecated] Browserify for Karma
CoffeeScript
72
star
3

karma-chai

Chai for Karma
JavaScript
60
star
4

jekyll-rst

A ReStructuredText plugin for Jekyll and Octopress
Python
58
star
5

karma-ievms

Karma launcher for ievms virtual machines
JavaScript
57
star
6

spinnaker

Sails Resources Service for AngularJS
CoffeeScript
53
star
7

chef-hatch-repo

Hatch - Easily create a live, self-managed Chef server
Ruby
38
star
8

phorms

Phorms is a general purpose HTML form factory for PHP
PHP
22
star
9

node-alsa

ALSA bindings for Node.js
C++
22
star
10

puppet-appstore

Ruby
21
star
11

node-pcm-utils

PCM audio utilities for Node.js
CoffeeScript
19
star
12

pihotenuse

raspberry pi image development tool
Shell
18
star
13

cocoapods-cordova

Cocoapods plugin for developing Cordova plugins
Objective-C
18
star
14

monowave-eagle

Support files for Eagle used by Monowave Labs
JavaScript
17
star
15

node-resampler

PCM audio sample rate conversion for Node.js
C++
15
star
16

karma-ios-launcher

Karma launcher for the Xcode iOS Simulator
CoffeeScript
14
star
17

elm-localstorage

LocalStorage task adapter for Elm
Elm
11
star
18

wordprest

A reStructuredText editor enhancement for WordPress.
PHP
11
star
19

php-doctest

Python style doctests for PHP.
PHP
11
star
20

meteor-cucumber

CucumberJS test runner and Velocity reporter with Selenium Webdriver and Zombie support
CoffeeScript
10
star
21

utidylib

HTML Tidy Python Library
Python
9
star
22

meteor-meds

MongoDB full-text search for Meteor
CoffeeScript
8
star
23

node-echoprint-codegen

Echoprint Codegen Addon for Node.js
C++
8
star
24

grid-less

Grid LESS - The LESS Grid System.
6
star
25

meteor-mirror

Run multiple instances of a single meteor app
CoffeeScript
4
star
26

iosctrl

Node module for controlling the Xcode iOS Simulator
CoffeeScript
4
star
27

dforms

Django style forms for PHP
PHP
4
star
28

intern-yadda-loader

Yadda loader for Intern
JavaScript
4
star
29

redmine-generators

Helpful generators for Redmine plugin authors.
Ruby
4
star
30

skel

Skel - A lightweight, full featured framework for Django.
3
star
31

xue-ui

Xue UI is a web interface for Xue, a priority job queue for Meteor
CSS
3
star
32

git_wit

GitWit - Dead simple Git hosting for Rails apps.
Ruby
3
star
33

grunt-stylint

Validate stylus files with stylint
JavaScript
3
star
34

xdissent.github.com

Just a dude in a dress.
3
star
35

redmine_git_server

Ruby
2
star
36

vendor

Vendor Repository.
2
star
37

rst2phpdoc

A reStructuredText to PHPdoc translator.
Python
2
star
38

node-linux-cec

Linux CEC bindings for Node.js
C++
2
star
39

puppet-safari

Puppet
2
star
40

XCode-Templates

My XCode templates
Objective-C
2
star
41

redmine_staydown

A killer Markdown formatter for Redmine - hopefully.
JavaScript
2
star
42

xue

Xue is a priority job queue backed by MongoDB, built for Meteor
CoffeeScript
2
star
43

sonata-sandbox

Testing out Sonata Project
PHP
1
star
44

lorem

Just a test.
Python
1
star
45

impact-leveldata

An ImpactJS plugin to store and load arbitrary data in levels.
JavaScript
1
star
46

meteor-cucumber-selenium

Selenium WebDriver support for CucumberJS
JavaScript
1
star
47

css-sourcemap-tests

CoffeeScript
1
star
48

nuclide-test-runner-mocha

Nuclide test runner for mocha
JavaScript
1
star
49

foobarnashville

fooBAR. site
PHP
1
star
50

red_rest

ReStructuredText plugin for Redmine
Python
1
star
51

vmdb2

http://git.liw.fi/vmdb2
Python
1
star
52

disrequire

Remove a file or module from the node require cache
JavaScript
1
star