The latest Windows 7 SP1 ISO from MSDN contains almost every update for Windows up through that point, but does not include some optional packages. Specifically, it does not include the latest version of Internet Explorer. When setting up new computers, I like to have everything as up-to-date as possible. Is there any way to slipstream Internet Explorer 9 into a Windows 7 SP1 install disk?
Because some organizations cannot upgrade to IE9 due to requirements of old web apps which do not support all modern standards, it's typical for IE upgrades beyond the version included with the original release of the OS not to be included on a Windows disk.
It is possible however to integrate the latest version of IE into your Windows 7 source disk.
There is a very detailed article on TechNet about "Internet Explorer 9 Preinstallation Techniques" which outlines how to do this. I tried following the steps exactly, but ran into errors during the process and found it all rather tedious, so here is a more simple, summarized version.
Things you will need in preparation:
- Download and install the Windows Automated Installation Kit (WAIK)
- Locate the latest ISO for Windows 7, for the version and architecture you want to use*. If you don't have an installation ISO, you can find links for them from the following SU question: How can I reinstall Windows 7 if I lost my installation DVD?
(*You can really use any version. It's trivial to make your disk install any version of Windows 7. I'll mention how to do this later)
- The following files, with the proper version for your architecture (x64 or x86). The KB files are not all needed if you're using an SP1 disk:
The process of extracting and manipulating windows installation disk files is very slow and time consuming. It takes a significant amount of processor power and a lot of disk activity to do all of these steps. There are a few things you can do if you have advanced hardware which will speed this up considerably:
If you have an SSD, do all of the "working folder" stuff on the SSD. You will benefit greatly from the faster access times.
If you have enough RAM to forfeit 5-10GB of it (so if you have about 8GB or more of RAM), I would strongly encourage you to consider putting some of the working files in a RAMdisk. If you don't, skip this paragraph as it doesn't apply to you. See https://superuser.com/questions/34388/whats-the-best-ramdisk-for-windows for details on how to make a RAMdisk. I used imDisk to make a 16GB RAM disk and it worked very well, and sped up the operations by at least an order of magnitude. You can't say "no" to 1Gbps read/write times! If you can only make a small RAMdisk, I would make a virtual drive large enough for the WIM + about 500 MB for the stuff you're adding. If you have enough room (about 2.5x the size of the WIM) to put both the image and working directory in the RAMdisk, that would be best. Of course, you don't need to do this to follow the procedure.
I also found that having Microsoft Security Essential's real-time protection enabled significantly slowed down the speed of the operations, because it was scanning each file as it was extracted and integrated. I highly recommend that you temporarily disable real-time scanning on your antivirus software while doing these operations.
Note that this procedure involves a lot of typing out commands and trying to keep everything straight. Messing up is frustrating because it takes so long for a lot of the file manipulation steps to run. Through trial and error I created a batch file which almost entirely automates the process below. I will post this batch file on my website soon (just didn't quite have time now). If you like getting your hands messy, go for it and follow the steps below. If you would rather make things a bit easier, you can use my batch file to expedite parts of the process and reduce the chances of messing up.
Extract the contents of the ISO to your hard drive
\sources\install.wimfile to a working directory (on your SSD or RAMdisk if you are using one)
Create a mount-point for the WIM file, by creating a new empty folder (also on your SSD or RAMdisk)
Open the WAIK Deployment Tools Command Prompt as an administrator (it's in the start menu if you've installed WAIK)
Find the image index for each image you want to integrate IE9 with. To do this, run the following command:
Dism /Get-WimInfo /WimFile:"<path_to_wim>"
For example, for the image above, index 4 has Windows 7 Professional, so we will use that. If you intend to integrate IE9 for all versions of Windows to make an all-in-one Windows 7 disk, you can do the following procedure for all of the image indexes.
Now, mount the image to the empty working mount directory you created above, using the following command:
Dism /Mount-Wim /WimFile:"path_to_wim_file.wim" /index:<Index_Number> /MountDir:"path_to_empty_mount_point_folder"
According to Microsoft's instructions, you should install the KB patches before adding the IE9 package. I found this to corrupt the image (the reason may have been unrelated, I don't know for sure). Adding the IE9 package first worked fine though, so I would recommend doing it this way.
To install the IE9 package to the WIM image, make sure you have the correct MSU file for the architecture (x64 or x86) of the installation image , not of the computer you are using! Note that you cannot manipulate an x64 WIM from an x86 computer, but you can do either from an x64 computer. Use the following command to integrate IE9:
Dism /Image:"image_mount_folder" /Add-Package /PackagePath:"MSU_File_path"
Next, integrate all of the hotfixes listed above. Use the following command to install them individually:
Dism /Image:"image_mount_folder" /Add-Package /PackagePath:"KB_MSU_file"
Or, to add them all at once (if they are all in the same folder):
for %k IN ("path\to\updates\*.msu) DO Dism /Image:"image_mount_folder" /Add-Package /PackagePath:"%k"
At this point, make sure that none of the previous steps have resulted in any error messages. If there have been any errors stating that the image is no longer serviceable, do not save the image, as it will potentially ruin it. If there were any errors, type the following command to discard changes:
Dism /Unmount-WIM /MountDir:"image_mount_folder" /discard
If all of the changes have been successful, type the following command to save the WIM image and unmount it:
Dism /Unmount-WIM /MountDir:"image_mount_folder" /commit
If you want to integrate IE9 with other images (other editions of Windows), repeat all of the above steps starting with step 6, for each additional disk image.
At this point, move the WIM file out of the working directory or RAMdisk and paste it back into the folder with the extracted contents of the ISO. You will now need to rebundle the ISO and make it bootable. If you want to make your installer work for any edition of Windows 7, just delete the ie.cfg file in the
\sources\directory of the extracted ISO before you rebuild it.
This can be done with another tool built in to WAIK:
oscdimg –b"folder_with_extracted_iso/boot/etfsboot.com" –h –u2 –m -lDiskName "folder_with_extracted_iso/" "path_to_desired_saved_install_image.iso"
Test your image in a virtual machine before wasting a disk, just to make sure it works. I would recommend creating a new empty virtual machine to test it. Once you've verified that it works, you can burn the ISO from Windows 7 using the built-in disk image burning software, or you can make a bootable USB flash drive with it.
Don't forget to re-enable your anti-virus software if you turned off realtime protection to speed up disk mounting, and also, unmount the RAMdisk if you used one, so you can recover that memory for use by your system.
This general process can be used to integrate any Microsoft Updates into your install disk. I chose to write about integrating IE9 because that's what I was trying to do. It can also be done to integrate drivers.
This will all be part of a much more detailed SU blog post on creating an integrated installer disk, but I wanted to get each of the components out there in an easily understandable form. After spending hours hunting tediously through forums and MSDN/TechNet documentation pages, I figured it was time to have some readable, comprehensive, and clear guides out there!
The following sites were instrumental in figuring out this process: