During Microsoft Ignite there was an awesome session on the Windows 10 Setup Engine. It was the “Upgrading to Windows 10 In Depth” session presented by Aziz El Ouaqid which you find here: http://channel9.msdn.com/events/ignite/2015/BRK3307
In this post you find a summary of that session together with my own findings of the Windows 10 Setup engine.
Windows 10 Inplace Upgrade Process
If you are one of the lucky companies that are able to use the Windows 10 inplace upgrade process, you will find that for the very first time in Microsoft setup history, there is now a strong story around the process. E.g. well tested, and so far appears to work just fine.
Note: The most important part to the Windows 10 inplace upgrade is that you cannot use your own corporate image if it include any applications. You can still use an image that contains Windows 10 updates, but it cannot include any extra applications. In addition to that, make sure to read up on all the Windows 10 upgrade limitations.
An inplace upgrade is taken place by running the setup.exe or setupprep.exe on the running Windows 7 or Windows 8/8.1 system. The typical syntax is: Setup.exe /Auto Upgrade /Quiet /NoReboot with the optional /DynamicUpdate Disable for SCCM deployments, and /PostOobe and /PostRollback switches to specify locations for SetupComplete.cmd and SetupRollback.cmd. E.g. to be able to automate things when setup is either completed, or is rollbacked because of an issue.
Anyway, when running the inplace upgrade setup, it runs through four different stages, or phases.
Note: Windows 10 is capable to recover from failure in any of the four phases.
The inplace upgrade in progress (WinRE phase). The circle progress is overall progress, the progress info in the bottom is the individual phase progress.
1. Down-level phase
This is where all the prereq checks and scans are happening. The various checks are part of the compatibility database which is continuously updated by Microsoft, Everything that happens in this phase is logged to C:$Windows.~BTSourcesPantherSetupact.log. The major actions are listed below and will dictate whether upgrade will stop, prompt for consent, or continue:
- System Checks: Free disk space (not only to install, but also to recover), check CPU features, available memory (currently 1 GB for x86 and 2 GB for x64 is required). The cool thing about the setup adapts itself to be able to deal with low disk space scenarios, setup can even prompt to use external storage if needed.
- Critical Drivers Check: Primarily storage and network class drivers. If any of those are missing, the upgrade (setup) will not continue. The boot critical drivers are injected into the WinRE.WIM file.
- Generic Hardware and Drivers Inventory: Setup allows an Enterprise to specify a driver folder for updated drivers. Other than that, all third-party drivers will be migrated except if they are known to be not compatible. These drivers are put in a cache. No inbox drivers are migrated.
- Miscellaneous Checks: Not a Windows To Go stick, not a VHD (native boot from VHD), UEFI is compliant, machine is not booted into Audit mode.
- Applications Inventory: Windows 10 is really good in detect and inventory existing apps.
- Stage WinRE: The Windows Recovery Environment (WinRE) is copied to the drive, and the boot record is configured to boot from WinRE.
2. WinRE phase
After rebooting into WinRE, the setup is now running offline, neither the old nor the new OS is running. In this phase the major actions are:
- Backup down-level OS into windows.old
- Apply the new Windows 10 image
- Inject drivers into the driver store
- Do the offline migration tasks
3. First boot phase
This is the first time the new OS is booting, and in this phase the major actions are:
- Specialize the machine. New SID, Computer Name and more.
- Install matching drivers, from the driver set that was previously staged into the store.
- Migrate applications
4. Second boot phase:
Now Windows 10 is booted cleanly into new OS, in this phase the major actions are:
- Last migration touch ups
- Welcome the user back via the OOBE (Out O the Box Experience)
Uninstalling Windows 10
Even when the Windows 10 operating system is fully installed, there will be an option to uninstall it, and go back to the previous OS. Current thinking (May 7, 2015) is that you should be able to uninstall up to about 30 days, but that number may change until Windows 10 is released.
Enterprise Setup Readiness check may come
According to Aziz Microsoft is currently working with some 50 TAP (Technical Adoption Program) customers to create an Enterprise prereq check for Windows 10 upgrades that you can run without starting an actual upgrade.
Download for latest SDB file may come
Also, since SCCM 2012 cannot use the dynamic setup update feature, to download the latest compatibility database (SDB file), Microsoft is considering other ways to download the latest SDB file.
The inplace upgrade should automatically cleanup the the Windows.old folder after X number of days (not yet determined). But you can still do it manually by running the Disk Cleanup or System Cleanup wizard.
The Disk Cleanup wizard, showing previous windows installation(s).