Installing Windows is a complex operation that provides an incredibly unique capability—the ability to run a new version of Windows on a vast array of hardware configurations and combinations that were designed with no knowledge of a future Windows, even a version with substantial re-architecture of the Kernel. While most people do not experience the full code path of setup/upgrade (because they buy new PCs and choose to get a new version of Windows that way), even orchestrating the new PC “out of box experience” (OOBE) is a complex technical challenge. Our aim in improving setup is to reduce the time from start to finish so that customers can get to Windows and use the full power of Windows to further customize and ultimately enjoy their new Windows experience. This post was written by Christa St. Pierre on our Setup and Deployment team.
(Note, we’re taking a break for the US Holiday)
Setup is something that gets a lot of attention from us in any Windows release. It needs to just work reliably across a huge number of variations of hardware and software. This is true whether you are upgrading your own laptop, or you’re an IT pro who is migrating 10,000 desktops in an enterprise using broad deployment tools. For Windows 7 our main focus was on improving successful install rates, and we did a lot of work to improve reliability and deal with many tough (but relatively rare) cases that had caused problems in setting up earlier versions of Windows. This work gave Windows 7 a more reliable setup experience than in any previous Windows release, as measured by lab testing, customer support incidents, and setup telemetry.
For Windows 8, our goal was to continue to improve reliability while also improving the installation experience and raw performance. Not only did we want it to be rock solid, but also faster and easier to use.
A big challenge
Although millions of people choose to upgrade their existing PCs, most people choose to get a new version of Windows preinstalled on a new PC. In the past that often had to do with increasing system requirements in new Windows releases, and the need to purchase new PCs with more power to run the new version. With Windows 7 however, we made a commitment to work on many more existing PCs by keeping system requirements low and maintaining compatibility. We’ve continued that commitment with Windows 8, so many of you with existing PCs can simply upgrade. Looking just at Windows 7 customers, there are currently more than 450 million PCs that will be able to run Windows 8, but we expect that many systems running Windows Vista and even Windows XP will also be eligible.
Support for these PCs running different Windows versions is a big challenge in terms of testing all possible upgrade paths, languages, service packs, architectures, and editions. When you think about it, it is a rather remarkable achievement that hardware designed for one OS can be supported on an OS that did not exist when the hardware was created, especially considering that connecting hardware to software is a fundamental role played by the OS.
There are always complexities involving hardware support. Sometimes PCs are equipped with peripherals that require updated drivers for Windows 8, and in other cases, for any number of reasons, a PC maker decides that a particular model or configuration is not supported on a new version of Windows. There are also complexities in getting software to work seamlessly upon upgrade, particularly utilities that hook into the lowest levels of Windows such as anti-virus, disk format and defrag, or virtualization. While we have a massive test and ecosystem effort, ultimately the final say on support on a new version of Windows for a PC, peripheral, or software package is determined by the maker of that product. Our commitment to keeping things running and bringing forward software is industry leading and continues with Windows 8. At one recent team meeting, a member of our team showed Windows 8 running Excel version 3.0, which is the 16-bit version of Excel from 1990!
Perceived as “difficult”
During planning for Windows 8, we wanted to hear from customers who chose not to upgrade to Windows 7 even though their PCs would run it. In 2010 we commissioned a study of how people make PC purchase decisions, and talked to customers in three global markets to find out more. While the list of reasons as to why a customer chose not to upgrade varied by market, we have received notable feedback that upgrading the PC was perceived as difficult. So even though many customers wanted to upgrade, the current setup experience might be something that just wasn’t easy enough to make them feel confident in doing so.
Different customer needs
Hearing that some customers think it is too difficult really highlights the fact that we have many different customer needs we need to fulfill with setup. Most customers who buy a Windows upgrade from a retailer just want it to be fast and easy, but a few also want to be able to do some more complex things, such as setting up in a multi-boot configuration. And of course, we also have the IT Pro customers, who need to take full control over configurations, install from network as well as media, and add customizations to the setup image. The advanced user’s needs are a lot like those of the IT Pro, both because they require more fine-tuned control and because it’s hard for us to predict exactly which controls they may want to manipulate. For this reason, we have not created a “super advanced setup” mode, but we encourage people who want to create unattended setup configurations for home or work to use our standalone deployment tools. In Windows 7, we provided a Windows Automated Installation Kit, and in Windows 8 we have enhanced that with additional tools in the Windows Assessment and Deployment Kit, which is available for download to MSDN subscribers.
For this post, I’ll talk mostly about the interactive GUI setup experiences, since that’s where we have the most changes. We sought to maintain very high backwards compatibility with existing unattended installation configurations that IT Pros or advanced users have spent time on for Windows 7, so you can expect those to work consistently for Windows 8 as well, without having to start over. So rest assured that your custom deployments continue to be fully supported as before.
Streamlining the end-to-end experience
Leaving aside automated installations and just looking at the typical GUI scenarios, we still wanted to serve two distinct customer groups in the setup user experience:
- People who want an easy way to upgrade to the new release with an absolute bare minimum of hassle
- People who want to do a clean install, and want more control of setup options, disk layout, and partition configuration
The way we approached these needs was based on the realization that the first group typically runs setup in the UI of their current Windows OS (i.e. they launch it like an app), while the second group typically runs setup from boot media. So, rather than trying to rationalize two fairly different experiences and customer requirements, we chose to maintain two setup user experiences: a streamlined setup that you reach by running an .exe from the DVD or via web delivery, and an advanced setup that runs when you boot off of a DVD or USB key. The streamlined setup is a new experience, optimized for ease-of-use, upgrades, and web delivery via download. Advanced setup is the home of all things familiar to the advanced user, including full support for unattended installation, partition selection, and formatting. Under the covers they share all of the same setup engine components. So both experiences benefitted from our ability to focus on a common codebase for performance and reliability enhancements.
Shifting towards web delivery methods
Before going into the detail on the user experience changes, there’s one big change that is important to call out. In the past, if you wanted to buy an upgrade for Windows, it involved purchasing a boxed product from a retail outlet, taking it home, (sometimes being infuriated while trying to open the box,) and inserting a DVD. However, buying boxed software is quickly becoming the exception rather than the rule, with more and more software being purchased online as broadband penetration increases and large-size media downloads become more common. While we will continue to offer boxed DVDs, we are also making it easier than ever to purchase and install online. This includes starting the setup experience online as well, and having one continuous integrated experience from beginning to end. There is also one big advantage that is a favorite of mine. With our web setup experience, we actually “pre-key” the setup image that is downloaded to a unique user, which means that you don’t have to type in the 25-digit product key when you install!
Streamlining – Reducing repetition and integrating experiences
More than 20 million customers downloaded and ran the Windows 7 Upgrade Advisor during the first six months of availability. Many customers also ran Windows Easy Transfer during this same time period. A reasonable (and often recommended) installation experience for Windows 7 followed a flow like this:
- Download and install Windows 7 Upgrade Advisor
- Run Windows Upgrade Advisor
- Run Windows Easy Transfer to save files and settings
- Run Windows 7 setup and clean install
- Run Windows Easy Transfer to restore files and settings
This end-to-end experience included 4 different web and client experiences and required the average customer to walk through 60 screens to complete. The primary reason for the high screen count was the repetition of information. We can visualize it something like this:
In Windows 8, rather than having Upgrade Advisor, Setup, and Windows Easy Transfer as separate apps or features, we’ve folded them together into one fast and fluid experience in which we first determine if your PC, apps, and devices will work in the new OS, note which things you want to keep (apps, files and/or settings), and then install the new OS.
We’ve also added the capability for setup to resume automatically after certain actions (such as resolving a blocking compatibility problem), which in the past would have required restarting setup again from the beginning.
Here’s what to expect when you launch the new setup experience from the web :
The first thing we do is scan the PC to determine compatibility, resulting in a summary report such as this one:
Windows 8 setup compatibility summary
It provides information on the apps and devices that will work in Windows 8, those that won’t work, and any other system information that is useful to know when determining whether or not to purchase and install Windows 8. A detailed compatibility report is also available if you want to print or save the information, or desire more detail about what to expect once you get to Windows 8, including which apps or devices will require updates.
The compatibility data behind the report covers hundreds of thousands of applications and devices, including retail software, OEM preinstalled software, and peripherals. If an application or device ran on Windows 7, our goals is that it should run on Windows 8 too, but in some cases it may require an update or other support from the OEM or vendor. Some applications also have custom installation logic – installing certain components or settings depending on the OS you’re upgrading from (this is particularly true of system utilities and software that is tightly connected to hardware and peripherals). You may need to uninstall and reinstall these types of apps. (This is also a reason to be careful of 3rd party “app mover” applications, which claim to move apps from one OS to another, as the end result can be unpredictable or broken.) As a reminder, the best drivers for any system are the ones available directly from the PC manufacturer for embedded hardware and from the device manufacturer for peripherals.
Detailed compatibility report
Downloading Windows 8
Next, an integrated download manager provides time estimates, data validation, the ability to pause, resume, and re-download only parts of the file if something goes wrong. Additionally, because we have already scanned the PC to determine compatibility we know which version of Windows 8 to download – eliminating the need to ask questions such as which language or OS architecture to choose.
Downloading the Windows image from the web
Continuing with installation or creating bootable media
Once the download is complete, you are presented a choice to continue the installation, or install on another partition. The latter option takes you to advanced setup, and allows you to save an ISO or create a bootable USB drive before completing other advanced setup options. (This is the option you’ll need to choose if you want to dual boot, for example.)
Creating bootable media from web-based setup
Choosing what to keep
Next is the upgrade choice. You can choose to keep all, some, or none of your personal data depending on the OS you’re upgrading from, and your personal preferences.
Windows 8 setup options for upgrade and migration
The “Windows settings, personal files, and apps” option is akin to the existing “upgrade” option in Windows 7 and Windows Vista, where an in-place upgrade is performed over the current OS, retaining the apps that were previously installed as well as settings and user files on disk.
The “Just personal files” option is a new functionality, which allows you to get a clean install, but still keep your data without a separate tool such as Windows Easy Transfer.
The upgrade options that you might see in the screen above depend on which version of Windows you are upgrading from. Here’s the list of what you can migrate based on your currently installed version of Windows:
|You can transfer these…||When upgrading from…|
|Windows 7||Windows Vista||Windows XP|
|User accounts and files||x||x||x|
Clean install is supported across all versions.
Resolving blocking issues
Often you may need to make changes to your PC before you can continue with the installation. Common requirements include things like uninstalling an application, freeing up disk space, or suspending BitLocker. When encountering this scenario in Windows 7 setup, you would simply see a warning message and then you’d have to exit, take care of the clean-up that was listed, and resume setup again from the beginning. In Windows 8, most items listed in the actionable compatibility report (shown below) include a button to help you directly resolve the blocking issue. For example, if an app needs to be uninstalled, clicking a button in this report automatically launches the uninstaller for that particular app. Once the app is uninstalled the report automatically refreshes, and setup continues without having to start again.
Resolving blocking issues directly from the setup experience
This also works in the case where a reboot is needed. For example, if the blocking app requires a reboot after it is uninstalled, setup will resume from where it left off before the reboot.
The scenario we presented at the beginning that included four different wizards and up to 60 screens in a Windows 7 upgrade can now be accomplished in one end-to-end experience and as few as 11 clicks, an improvement of 82% fewer clicks in Windows 8. The exact number of steps you need to take to complete the installation varies based on your existing OS, migration choices, install method, and number of blocking issues you need to resolve to get the PC ready for installation, but the experience is greatly simplified for everyone. We accomplished all of this with no loss of functionality or customization—we simply streamlined the existing experience.
Improving upgrade performance
If you had a large number of files on your system, you may have seen that installation times in Windows 7 didn’t scale very well. In fact, as you can see in the diagram below, the more user files there are on a PC being upgraded (regardless of the size of the files) the longer the upgrade takes to complete.
Windows 7 time to upgrade in relation to the number of files on a PC
Note: Time in this graph represents time to complete the upgrade once the installation is
initiated, and does not include time to download or read files from media.
The reason for this is that in Windows 7, the upgrade process preserved the customer’s applications in the Program Files folder and their files in the Users folder by moving each file to a transport location (so that the original folders can be deleted to make way for the newer installation), and then moving them back again to complete the installation. With music and photo collections, it’s not unusual to have hundreds of thousands of files, so even relatively fast move operations can really add up.
To address this in Windows 8, we have made several modifications to the upgrade engine to reduce the impact on upgrade times.
Moving whole folders
In the past, each file that was preserved across upgrade was moved individually. In Windows 8, instead of moving things file-by-file, we move entire folders, drastically reducing the number of file operations required. This goes a long way towards shrinking the variation in upgrade times due to the amount of data the customer has on the machine.
At a high level, the logic for whether or not we need to move a given folder is:
- Every file in the folder (and its sub folders) is preserved (there are no exclude rules removing some of the files, for example).
- The entire folder is placed on the target OS unchanged.
- The target destination doesn’t already exist (i.e. we don’t have to merge an existing folder on the destination OS with one from the source OS). There are a few exceptions to this rule however – for example, every folder has a desktop.ini file, but we have logic that allows the source folder to overwrite this file, as in many cases the file is only a cache and can be regenerated.
Simplifying the transport
In Windows 7 the transport (this is the place where we store the files and settings being preserved between the old and new operating systems) was comprised of two folders: “Windows.~q” and “Windows.~tr”. In Windows 8 we have simplified this to just one folder. We have repurposed the “Windows.old” naming convention for consistency with clean install (which creates a “Windows.old” folder containing the previous OS in order to be able to roll back should the installation fail). Merging the transport folders into the single Windows.old folder speeds up the upgrade process, as it removes the need to move files between the ~tr and ~q folders.
Switching to hard links
In upgrades to Windows 7, files were moved between the old OS, the transport, and Windows 7 by using file move operations. In upgrades to Windows 8, we use hard link operations instead. This means we can link to the actual data on disk in the transport location without having to physically move the file, which has a significant performance gain. And if something goes wrong with setup and we have to roll back, we just need to delete the hard links, and the files are completely unaffected on disk.
Removing the down-level gather phase
In Windows 7, the files and settings to be preserved across the upgrade were calculated while the previous OS was still running. The registry values and data collected by our upgrade logic were also gathered while running on the old OS. The content of the files was then gathered offline during the Windows Pre-Installation Environment (Windows PE) phase in order to avoid file-in-use issues.
Most of this work has been removed in Windows 8. The gather rules no longer run during upgrade; instead, we just move the following folders into Windows.old when the PC is offline:
- Program files
- Program files (x86)
- Program data
This means that during the “apply” phase of upgrade (once we are running in Windows 8), everything we need to preserve can be extracted from the Windows.old folder (as we touch no other folders during the upgrade), eliminating the need for a gather phase. Speaking of the Windows.old folder, we have also added a new feature that automatically deletes that folder 4 weeks after a successful install, so you don’t have to worry about removing it. Of course, you can still use the Disk Cleanup tool to remove it immediately if you prefer.
In our labs we compared Windows 7 upgrade times to upgrading to a recent Windows 8 build, and found that the variation in upgrade times based on number of files has been virtually eliminated, as shown in the diagram below.
Windows 7 vs. Windows 8 time to upgrade
Note: Time in this graph represents time to complete the upgrade once the installation is initiated
and does not include time to download or read files from media.
Additional optimizations for web delivery
As I mentioned above, Windows 8 setup has been designed for online delivery, in addition to the local delivery from a DVD or USB drive. While downloading Windows has been possible in the past, it was primarily a physical media experience made available for download. In Windows 7 upgrades, for example, two copies were created of the download content on the customer’s drive—the compressed download and the extracted contents—requiring ~5 GB. This could be very problematic on space-constrained systems. Additionally, both the compressed and extracted download contents remained on disk, even after a successful installation.
For Windows 8, in addition to the setup experience improvements for web delivery, we also optimized other aspects. Our goal was to minimize the time it takes for the download to complete, verify the integrity of the bits that are downloaded, minimize disk space requirements, and ensure a resilient download experience for the customer. The two main areas of improvement for Windows 8 are constructing optimized download packages, and making sure that downloading is flexible and resilient.
Constructing optimized download packages
The Windows 7 media layout for x86 consists of 874 files and 200 folders, with a number of redundant files both in the media and compressed within install.wim and boot.wim. To efficiently store and transfer the contents of installation media, we typically use ISO files. For example, an ISO created from the x86 client media is 2.32GB. In order to optimize for download in Windows 8, we take the required subset of files for the specific version of Windows being downloaded. After eliminating duplicates and compressing resources, the single-file size is 2.10GB (as compared to 2.32GB), a savings of 9.5%. After this optimized package is created we compress it using an improved compression algorithm specifically for Windows 8 setup, which provides an additional 28% savings. In this example (using the Windows 7 x86 ISO) the size of the download would be reduced from 2.32GB to 1.51GB.
Downloading is flexible and resilient
The download manager included in Windows 8 setup downloads the optimized package containing the new OS and reconstructs the layout required to run through the install process, without leaving duplicate files on the system. The download manager leverages the Background Intelligent Transfer Service (BITS) as the default transport protocol to transfer files from the Internet to the local machine and provides the ability to pause, resume, and restart. It verifies the bits that are downloaded in 10MB increments. If verification fails for a particular increment, the download manager has the ability to re-request only that specific block of data without having to restart the entire download.
In Windows 8, customers do not have to install a separate download manager, mount the ISO to begin the installation, check the hash of the file for verification post-download, manually clean up unneeded files, or restart a download from the beginning should connectivity be interrupted. Setup takes care of all of these steps automatically, providing a fast, resilient, and easy setup experience. And again, this is true whether you just want to run a quick upgrade on an existing installation, or to create boot media for an advanced setup experience – either with GUI or unattended.
Advanced setup for IT Pros
I said at the beginning that this post wouldn’t go into a lot of detail about our automated installation using the Assessment and Deployment Kit (formerly the WAIK) but I know that many readers of this blog may be interested in learning more about it. So, here are a couple of handy configurations that will make it easy for you to customize a bootable USB drive (that you can create as part of our download experience) and automate your installation. For full details about all of the configurations that are possible, check out the Windows 8 ADK (for MSDN subscribers only). If you aren’t an MSDN subscriber check out the Best Practices for Authoring Answer Files article on TechNet. These best practices still apply for Windows 8 and all of the tools and documents referenced in the article are available in the Windows 7 WAIK or the Windows 8 ADK.
Here’s a video demonstrating an advanced setup from a USB flash drive. Note that this experience is not yet available in the Developer Preview build, but will be there in the final release.
You may have noticed in the screenshots and video above that none show the familiar “type your product key” experience. In the web setup scenario you won’t see those screens because of key injection from the server, but if you boot from media and choose to do an advanced setup, you’ll have to type it in. With “unattend” settings though, you can do your own key injection, so that you can skip this step. This is handy if you’re reinstalling after changing some system components or replacing a drive.
The specific setting that you will need to configure to do this is the ProductKey setting.
Here’s a sample:
You can also automate other parts of the experience so that you don’t have to manually click through the screens. Here are a couple of other settings that are useful when automating your install:
You can choose the UI language used for Windows:
There are additional settings for every UI choice, so you can script it to the point that the install is essentially hands-off from start to finish.
Dual boot configuration
Unattend is also useful when you want to automatically configure the system for booting multiple operating systems. You could do this all manually in the Advanced Setup GUI and BCD configuration, but why do that when you can script it? The unattend framework is very flexible and you can instruct Setup to format, create, or modify partitions on the PC’s disk(s).
Here’s a sample to install to a specific partition:
<Path> Z:\sources\install.wim </Path>
Where to save your unattend answer file
Once you have your answer file configured to your liking you can copy it to the root of your USB media. (Remember, if you use setup from the web, you can still create a bootable USB drive or save to an ISO.) You can also include the file at the root of the DVD media where you burned the ISO, if you chose that route instead. Even cooler, the unattend file doesn’t even have to be on the installation media. In fact you can place the unattend file at the root of a USB flash drive, plug in the flash drive before starting setup, and setup will automatically find it and use it.
An improved setup experience
With Windows 8 setup we have greatly improved both speed and ease of use, while still retaining all of the advanced setup functionality that many customers will demand. We have integrated what was once many separate steps for people to perform when preparing and starting their setup into a streamlined user experience, with a fast and reliable setup engine under the hood. Customers who choose to install Windows from an online source will have a greatly improved experience over what we’ve delivered in the past, with smaller and faster downloads, as well as increased resiliency and control. We hope that you will find these improvements to be a great way to start your experience using Windows 8.
–Christa St. Pierre