Windows 10 Deployment – In-Place Upgrade
Click here for an overview of the blog serie “Windows 10 und ConfigMgr Deployment Serie”
Why using In-Place Upgrade?
In the past, the migration process of operating systems including user settings and files was performed by using Configuration Manager / MDT and USMT (User State Migration Tools). This wipe and load approach worked very well.
With the release of Windows 10, Microsoft provided a powerful feature called “In-Place Upgrade”. This will upgrade your operating system while the user data will remain untouched.
When not to use In-Place Upgrade?
For Enterprise purposes, there is a reason why you would not this upgrade process.
The Windows 10 image must be untouched, so you cannot use a customized image by your organization.
You need to consider the language settings of the running OS and the image, language packs cannot be downloaded by the In-Place upgrade process
How does the In-Place Upgrade work?
The upgrade process replaces the operating system. Drivers, applications, user settings and user data will be untouched.
Preferred options (Enterprise):
- System Center Configuration Manager or MDT
- Windows 7, 8, 8.1
- Use the standard Windows 10 image (Windows 10 Setup files)
Important In-Place upgrade LogFiles:
The most important LogFile is the setupact.log which is located here
- %Systemdrive%\$Windows.~BT\sources\panther (during upgrade process)
- %Systemdrive%\Windows\panther (after upgrade process and OOBE)
- %Systemdrive%\Windows\panther\unattendGC (after OOBE and first Logon)
If anything went wrong, the setuperr.log could be helpful, the location is nearby the setupact.log.
The four primary upgrade process phases
Down Level phase
- Current operating system Windows 7 / Windows 8 / Windows 8.1
- System check for compliance
- Inventory of applications
- Inventory of drivers
- Analyze the operating system components
- Download updates (not required for upgrade process)
- Prepare WinRE
Running operating system
The In-Place upgrade process can be performed from Windows 7 / 8 / 8.1
System check for compliance
The first upgrade step checks the current operating system hardware for compliance, this contains the following devices.
- CPU
- RAM (at this moment 1 Gigabyte for Windows 10 x86 and 2 Gigabyte for Windows 10 x64)
- Available Disk Space (for OS installation and recovery), If the disc space is below the actual needed capacity, it could be expanded by using external devices like thumb drives. This is important for Tablets with limited disk space. On ordinary devices the upgrade process tries to compress the file system.
- Critical Drivers (Storage and network class drivers)
- UEFI Version (The required UEFI Version is 2.3.1)
- The current operating system must not be a Windows ToGo Stick or a VHD-Boot Machine
The setupact.log (%Systemdrive%\$WINDOWS.~BT\Sources\Panther) describes this process on a very detailed level:
The compliance checks starts at:
1
|
CONX Compatibility scan started. Scenario: 3, Categories: 0x00000021 |
And ends with:
1
|
CONX Compatibility scan finished. Scenario: 3, Categories: 0x00000021 |
The results is stored in an XML File:
1
|
CONX Compatibility scan data is saved to D:\$WINDOWS.~BT\Sources\Panther\CompatData_2016_03_22_10_29_24_3_00000021.xml |
Content of CompatData_2016_03_22_10_29_24_3_00000021.xml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
< System X64Capable = "True" X64Running = "True" /> < Hardware > < HardwareItem HardwareType = "Setup_HostIsBootedFromVHD" > < CompatibilityInfo BlockingType = "None" /> </ HardwareItem > < HardwareItem HardwareType = "Setup_HostIsBootedFromPortableWorkspace" > < CompatibilityInfo BlockingType = "None" /> </ HardwareItem > < HardwareItem HardwareType = "Setup_HostIsBootedFromAuditMode" > < CompatibilityInfo BlockingType = "None" /> </ HardwareItem > < HardwareItem HardwareType = "Setup_HostIsUEFICompliant" > < CompatibilityInfo BlockingType = "None" /> </ HardwareItem > < HardwareItem HardwareType = "Setup_SafeMode" > < CompatibilityInfo BlockingType = "None" /> </ HardwareItem > < HardwareItem HardwareType = "Setup_HostIsNonStagedBuild" > < CompatibilityInfo BlockingType = "None" /> </ HardwareItem > < HardwareItem HardwareType = "Setup_InsufficientDiskSpace" > < CompatibilityInfo BlockingType = "None" /> </ HardwareItem > </ Hardware > < SystemInfo UplevelEdition = "Windows 10" OSMajorVersion = "6" OSMinorVersion = "1" /> </ CompatReport > |
Example of failed compatibility check (mismatched language):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<? xml version = "1.0" encoding = "utf-8" ?> < System X64Capable = "True" X64Running = "True" /> < Hardware > < HardwareItem HardwareType = "Setup_HostIsNewer" > < CompatibilityInfo BlockingType = "None" /> </ HardwareItem > < HardwareItem HardwareType = "Setup_NonStandardDirectory" > < CompatibilityInfo BlockingType = "None" /> </ HardwareItem > < HardwareItem HardwareType = "Setup_HostIsOldPrerelease" > < CompatibilityInfo BlockingType = "None" /> </ HardwareItem > < strong >< HardwareItem HardwareType = "Setup_MismatchedLanguage" > < CompatibilityInfo BlockingType = "Hard" /> < Action Name = "Setup_MismatchedLanguage" ResolveState = "Hard" /> </ HardwareItem ></ strong > < HardwareItem HardwareType = "Setup_MismatchedBuildType" > < CompatibilityInfo BlockingType = "None" /> </ HardwareItem > < HardwareItem HardwareType = "Setup_UpgradeDisabled" > < CompatibilityInfo BlockingType = "None" /> </ HardwareItem > </ Hardware > </ CompatReport > |
Inventory of applications
The application inventory contains three basic steps:
Some Windows components will not be migrated, like Windows Media Center, because it’s not available in Windows 10.
During the upgrade process, a database with compatible applications which is stored on the installation media of Windows 10 will be used. If the upgrade process is performed in “online” mode, the latest version of this Database will be downloaded by the process. This list is available here:
https://sysdev.microsoft.com/en-us/hardware/lpl/
The upgrade process shows the application inventory data in a xml File in %Systemdrive%\$WINDOWS.~BT\Sources\Panther\<…>_APPRAISER_ApplicationInventory.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
<…> < Program Name = "7-Zip 15.14 (x64 edition)" Type = "Application" Source = "Msi" Publisher = "Igor Pavlov" Version = "15.14.00.0" Language = "1033" MsiProductCode = "{23170F69-40C1-2702-1514-000001000000}" MsiPackageCode = "{23170F69-40C1-2702-1514-000002000000}" InstallDate = "03/22/2016 08:15:59" RootDirPath = "D:\Program Files\7-Zip" Id = "00001743f7a629a03aff738a3c38d1957afe00000904" > < Indicators > < MsiIndicators > < Msi InstallDateMsi = "03/22/2016 00:00:00" MsiProductCode = "{23170F69-40C1-2702-1514-000001000000}" MsiPackageCode = "{23170F69-40C1-2702-1514-000002000000}" /> </ MsiIndicators > < AddRemoveProgramIndicators > < AddRemoveProgram InstallDateArpLastModified = "03/22/2016 00:00:00" RegistrySubKey = "{23170F69-40C1-2702-1514-000001000000}" UninstallString = "MsiExec.exe /I{23170F69-40C1-2702-1514-000001000000}" EstimatedSize = "0x1383" RegistryKeyPath = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\{23170F69-40C1-2702-1514-000001000000}" DisplayName = "7-Zip 15.14 (x64 edition)" CompanyName = "Igor Pavlov" ProductVersion = "15.14.00.0" Language = "1033" VersionMajor = "15" VersionMinor = "14" /> </ AddRemoveProgramIndicators > < ShellIndicators > < Shell ShellName = "7-Zip File Manager" TargetFileName = "7zFM.exe" TargetPath = "D:\Program Files\7-Zip\7zFM.exe" LinkPath = "D:\ProgramData\Microsoft\Windows\Start Menu\Programs\7-Zip\7-Zip File Manager.lnk" InstallDateFromLinkFile = "03/22/2016 08:16:00" ParentName = "7-Zip" Id = "0000e65b909be1fb18415c27543f039977d2fbd8b95b" /> </ ShellIndicators > </ Indicators > < StaticProperties > < Files Id = "0000da39a3ee5e6b4b0d3255bfef95601890afd80709" > < File Name = "7zFM.exe" Size = "0xcca00" SizeOfImage = "0xd0000" PeHeaderHash = "0101639e4386eda511a4500dd6d061b32992a0e03988" PeChecksum = "0x0" LinkDate = "12/31/2015 14:16:50" BinaryType = "PE64_AMD64" LowerCaseLongPath = "d:\program files\7-zip\7zfm.exe" LongPathHash = "0000753cdfe935df97f86e4710198a65f801caf3170f" /> < File Name = "7z.exe" Size = "0x6d400" SizeOfImage = "0x72000" PeHeaderHash = "010126c4bdb01a71844d39ab995996d7709e1c20e5e5" PeChecksum = "0x0" LinkDate = "12/31/2015 14:15:28" BinaryType = "PE64_AMD64" LowerCaseLongPath = "d:\program files\7-zip\7z.exe" LongPathHash = "00006b4e0c488defd48c170d0080cfac1b22f7e944a0" /> < File Name = "7zG.exe" Size = "0x87800" SizeOfImage = "0x8d000" PeHeaderHash = "0101b8597c80d8618aaf4a7fbccbe2081d9d7d601065" PeChecksum = "0x0" LinkDate = "12/31/2015 14:17:11" BinaryType = "PE64_AMD64" LowerCaseLongPath = "d:\program files\7-zip\7zg.exe" LongPathHash = "0000a51d0172cea733c3ee4c3f899303c9c950c2d236" /> </ Files > </ StaticProperties > </ Program > <…> |
Inventory of Drivers
Similar to the application inventory process, drivers are also checked regarding their compatibility.
The device driver inventory is stored in a xml file:
%Systemdrive%\$WINDOWS.~BT\Sources\Panther \<…>_APPRAISER_DeviceInventory.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
<…> < Device deviceId = "{6cab8a67-f0ce-15f7-303b-5bb7c0016575}" instanceId = "root\rdp_kbd\0000" parentId = "htree\root\0" deviceState = "96" problemCode = "0" installState = "0" description = "Terminal Server Keyboard Driver" isHidden = "1" enumerator = "root" ContainerId = "{27db0821-3bf9-f71a-f96f-a53403857690}" Excluded = "Always" > < HWID > root\rdp_kbd </ HWID > < InstalledDriver service = "termdd" matchingID = "root\rdp_kbd" infPath = "machine.inf" originalInf = "machine.inf" driverPackageId = "0000df13704fe43482824f92a1bf8d0a6141aca586fb" driverPackageStrongName = "machine.inf_amd64_neutral_a2f120466549d68b" fileName = "termdd.sys" driverVerVersion = "6.1.7601.17514" driverIsKernelMode = "1" driverVerDate = "11-20-2010" manufacturer = "(Standard system devices)" class = "system" classGuid = "{4d36e97d-e325-11ce-bfc1-08002be10318}" model = "Terminal Server Keyboard Driver" provider = "Microsoft Corporation" driverId = "0000f7089f6d7bb2b386e932aec5211689ea85fde9cc" upperFilters = "00007a5a0cd429248f010df2b1369bb906bbf3f6001b" driverInBox = "1" driverSigned = "1" driverHasBootService = "0" /> <…> |
Analyze the operating system components
The upgrade process scans the system for operating system components. In summary, the process scans over 10 000 components and its manifests.
Download Updates
If the upgrade process is performed in “online” mode, it downloads the latest cumulative updates for Windows 10 from windows update. If you use Configuration Manager or MDT, the updates can be downloaded from the local update server as well.
The setupact.log file describes the process:
The process does not only look for Windows updates, it also searches for driver updates on windows update. If it finds one, it will download the latest version of the device driver at this step.
Prepare WindowsRE
The preparing process for WinRE:
The upgrade process mounts the wim file of WinRE and injects all the necessary drivers which are needed during the WinRE phase. The wimfile is stored under %Systemdrive%\$WINDOWS.~BT\Sources\SafeOS.
During the first phase, nothing is being migrated, the process just gathers data. The migration processes will be performed in the second, third and fourth step of the whole upgrade process.
After preparing the WinRE image, the upgrade process reboots the system and launches WinRE.
WinRE phase
The Windows RE phase contains three steps:
- Backup down-level OS (current OS)
- Lay down and prepare new OS
- Prepare new OS
After booting into WinRE this screen appears:
At this moment, neither the old nor the new operating system is online.
Backup down-level OS
The backup process just moves the old operating System and its components to the %Systemdrive%\Windows.old Folder.
The setupact.log describes the process:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
Final list of source OS pieces: 2016-03-22 11:18:34, Info SP Name: WINDOWS, Original path: D:\WINDOWS, Current path: D:\WINDOWS (do not allow relocation) 2016-03-22 11:18:34, Info SP Name: PROGRAMS, Original path: D:\Program Files, Current path: D:\Program Files (do not allow relocation) 2016-03-22 11:18:34, Info SP Name: PROGRAMSX86, Original path: D:\Program Files (x86), Current path: D:\Program Files (x86) (do not allow relocation) 2016-03-22 11:18:34, Info SP Name: USERS, Original path: D:\Users, Current path: D:\Users (allow relocation) 2016-03-22 11:18:34, Info SP Name: PROGRAMDATA, Original path: D:\ProgramData, Current path: D:\ProgramData (do not allow relocation) 2016-03-22 11:18:34, Info SP Name: INETPUB, Original path: D:\inetpub, Current path: D:\inetpub (do not allow relocation) 2016-03-22 11:18:34, Info SP Name: SKYDRIVETEMP, Original path: D:\SkyDriveTemp, Current path: D:\SkyDriveTemp (do not allow relocation) 2016-03-22 11:18:34, Info SP Name: RECOVERY, Original path: D:\Recovery, Current path: D:\Recovery (do not allow relocation) 2016-03-22 11:18:34, Info SP No source symblic mappings found 2016-03-22 11:18:34, Info SP Final list of Windows.old roots: 2016-03-22 11:18:34, Info SP D:\ 2016-03-22 11:18:34, Info SP Final list of source move exceptions: 2016-03-22 11:18:34, Info SP D:\Recovery\Customizations 2016-03-22 11:18:34, Info SP Exception file/folder does not exist, ignoring 2016-03-22 11:18:34, Info SP D:\Recovery\WindowsRE 2016-03-22 11:18:34, Info SP Exception file/folder does not exist, ignoring 2016-03-22 11:18:34, Info SP D:\Recovery\DownlevelWindowsRE 2016-03-22 11:18:34, Info SP Exception file/folder does not exist, ignoring 2016-03-22 11:18:34, Info SP D:\Recovery\ReAgentOld.xml 2016-03-22 11:18:34, Info SP Exception file/folder does not exist, ignoring 2016-03-22 11:18:34, Info SP D:\Recovery\OEM 2016-03-22 11:18:34, Info SP Exception file/folder does not exist, ignoring 2016-03-22 11:18:34, Info SP CRelocateOS::DoExecute: Moving previous OS piece from D:\WINDOWS to D:\Windows.old\WINDOWS 2016-03-22 11:18:34, Info SP VERBOSE: Path D:\WINDOWS has no exceptions, trying a straight move 2016-03-22 11:18:34, Info SP VERBOSE: Successfully moved D:\WINDOWS to D:\Windows.old\WINDOWS 2016-03-22 11:18:34, Info SP CRelocateOS::DoExecute: Moving previous OS piece from D:\Program Files to D:\Windows.old\Program Files 2016-03-22 11:18:34, Info SP VERBOSE: Path D:\Program Files has no exceptions, trying a straight move 2016-03-22 11:18:34, Info SP VERBOSE: Successfully moved D:\Program Files to D:\Windows.old\Program Files 2016-03-22 11:18:34, Info SP CRelocateOS::DoExecute: Moving previous OS piece from D:\Program Files (x86) to D:\Windows.old\Program Files (x86) 2016-03-22 11:18:34, Info SP VERBOSE: Path D:\Program Files (x86) has no exceptions, trying a straight move 2016-03-22 11:18:34, Info SP VERBOSE: Successfully moved D:\Program Files (x86) to D:\Windows.old\Program Files (x86) 2016-03-22 11:18:34, Info SP CRelocateOS::DoExecute: Moving previous OS piece from D:\Users to D:\Windows.old\Users 2016-03-22 11:18:34, Info SP VERBOSE: Path D:\Users has no exceptions, trying a straight move 2016-03-22 11:18:34, Info SP VERBOSE: Successfully moved D:\Users to D:\Windows.old\Users 2016-03-22 11:18:34, Info SP CRelocateOS::DoExecute: Moving previous OS piece from D:\ProgramData to D:\Windows.old\ProgramData 2016-03-22 11:18:34, Info SP VERBOSE: Path D:\ProgramData has no exceptions, trying a straight move 2016-03-22 11:18:34, Info SP VERBOSE: Successfully moved D:\ProgramData to D:\Windows.old\ProgramData 2016-03-22 11:18:34, Info SP CRelocateOS::DoExecute: Moving previous OS piece from D:\inetpub to D:\Windows.old\inetpub 2016-03-22 11:18:34, Info SP VERBOSE: Path D:\inetpub has no exceptions, trying a straight move 2016-03-22 11:18:34, Info SP VERBOSE: Successfully moved D:\inetpub to D:\Windows.old\inetpub 2016-03-22 11:18:34, Info SP CRelocateOS::DoExecute: Moving previous OS piece from D:\SkyDriveTemp to D:\Windows.old\SkyDriveTemp 2016-03-22 11:18:34, Info SP VERBOSE: Path D:\SkyDriveTemp has no exceptions, trying a straight move 2016-03-22 11:18:34, Warning SP SPMoveFileWithShortName: Failed to move D:\SkyDriveTemp to D:\Windows.old\SkyDriveTemp, error: 0x00000002 2016-03-22 11:18:34, Info SP CRelocateOS::DoExecute: Moving previous OS piece from D:\Recovery to D:\Windows.old\Recovery 2016-03-22 11:18:34, Info SP VERBOSE: Successfully created target folder D:\Windows.old\Recovery 2016-03-22 11:18:34, Info SP VERBOSE: Path D:\Recovery\01d91ba6-efbc-11e5-bfa3-001dd8b71fc8 has no exceptions, trying a straight move 2016-03-22 11:18:34, Info SP VERBOSE: Successfully moved D:\Recovery\01d91ba6-efbc-11e5-bfa3-001dd8b71fc8 to D:\Windows.old\Recovery\01d91ba6-efbc-11e5-bfa3-001dd8b71fc8 2016-03-22 11:18:37, Info SP SPCalculateDriveMappings: Assuming implicit mapping from the registry SystemRoot value [x:\Windows] to the offline Windows dir [D:\$WINDOWS.~BT\NewOS\WINDOWS] 2016-03-22 11:18:37, Info SP pCreateSystemRootDriveMapping: SystemRoot implicit mapping is [x:\] -> [D:\$WINDOWS.~BT\NewOS\] |
Lay down and prepare new OS
- The new OS gets applied to %Systemdrive%\$Windows~BT\NewOS.
1
2
3
4
5
6
7
8
9
|
2016-03-22 11:18:52, Info SP Final list of destination OS pieces: 2016-03-22 11:18:52, Info SP Name: WINDOWS, Original path: x:\Windows, Current path: D:\$WINDOWS.~BT\NewOS\Windows (do not allow relocation) 2016-03-22 11:18:52, Info SP Name: PROGRAMS, Original path: x:\Program Files, Current path: D:\$WINDOWS.~BT\NewOS\Program Files (do not allow relocation) 2016-03-22 11:18:52, Info SP Name: PROGRAMSX86, Original path: x:\Program Files (x86), Current path: D:\$WINDOWS.~BT\NewOS\Program Files (x86) (do not allow relocation) 2016-03-22 11:18:52, Info SP Name: USERS, Original path: x:\Users, Current path: D:\$WINDOWS.~BT\NewOS\Users (allow relocation) 2016-03-22 11:18:52, Info SP Name: PROGRAMDATA, Original path: x:\ProgramData, Current path: D:\$WINDOWS.~BT\NewOS\ProgramData (do not allow relocation) 2016-03-22 11:18:52, Info SP Name: INETPUB, Original path: x:\inetpub, Current path: D:\$WINDOWS.~BT\NewOS\inetpub (do not allow relocation) 2016-03-22 11:18:52, Info SP Name: SKYDRIVETEMP, Original path: x:\SkyDriveTemp, Current path: D:\$WINDOWS.~BT\NewOS\SkyDriveTemp (do not allow relocation) 2016-03-22 11:18:52, Info SP Name: RECOVERY, Original path: x:\Recovery, Current path: D:\$WINDOWS.~BT\NewOS\Recovery (do not allow relocation) |
- The inventoried drivers and applications get integrated into the new OS. The migration of applications is similar to the technology that USMT uses.
- Modern Apps are migrated, if the current operating system has modern apps installed, the progress will check if Windows 10 contains a newer version of these.
- After that, the NewOS Folder gets redirected to %Systemdrive%.
- Every folder which conflicts with the folder structure of the Windows 10 WIM File will be copied.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
2016-03-22 11:18:52, Info SP CRelocateOS: Moving new OS pieces from D:\$WINDOWS.~BT\NewOS to D:\ 2016-03-22 11:18:52, Info SP CRelocateOS: Path D:\$WINDOWS.~BT\NewOS\bootmgr excluded, will not be moved in the final place. 2016-03-22 11:18:52, Info SP Moving D:\$WINDOWS.~BT\NewOS\BOOTNXT to D:\BOOTNXT 2016-03-22 11:18:52, Info SP VERBOSE: Path D:\$WINDOWS.~BT\NewOS\BOOTNXT has no exceptions, trying a straight move 2016-03-22 11:18:52, Info SP VERBOSE: Successfully moved D:\$WINDOWS.~BT\NewOS\BOOTNXT to D:\BOOTNXT 2016-03-22 11:18:52, Info SP CRelocateOS: Path D:\$WINDOWS.~BT\NewOS\$Recycle.Bin excluded, will not be moved in the final place. 2016-03-22 11:18:52, Info SP Moving D:\$WINDOWS.~BT\NewOS\inetpub to D:\inetpub 2016-03-22 11:18:53, Info SP VERBOSE: Path D:\$WINDOWS.~BT\NewOS\inetpub has no exceptions, trying a straight move 2016-03-22 11:18:53, Info SP VERBOSE: Successfully moved D:\$WINDOWS.~BT\NewOS\inetpub to D:\inetpub 2016-03-22 11:18:53, Info SP CRelocateOS: Collision detected for path D:\PerfLogs, which is not an OS piece. Moving out of the way. 2016-03-22 11:18:53, Info SP VERBOSE: Path D:\PerfLogs has no exceptions, trying a straight move 2016-03-22 11:18:53, Info SP VERBOSE: Successfully moved D:\PerfLogs to D:\Windows.old\PerfLogs 2016-03-22 11:18:53, Info SP Moving D:\$WINDOWS.~BT\NewOS\PerfLogs to D:\PerfLogs 2016-03-22 11:18:53, Info SP VERBOSE: Path D:\$WINDOWS.~BT\NewOS\PerfLogs has no exceptions, trying a straight move 2016-03-22 11:18:53, Info SP VERBOSE: Successfully moved D:\$WINDOWS.~BT\NewOS\PerfLogs to D:\PerfLogs 2016-03-22 11:18:53, Info SP Moving D:\$WINDOWS.~BT\NewOS\Program Files to D:\Program Files 2016-03-22 11:18:53, Info SP VERBOSE: Path D:\$WINDOWS.~BT\NewOS\Program Files has no exceptions, trying a straight move 2016-03-22 11:18:53, Info SP VERBOSE: Successfully moved D:\$WINDOWS.~BT\NewOS\Program Files to D:\Program Files 2016-03-22 11:18:53, Info SP Moving D:\$WINDOWS.~BT\NewOS\Program Files (x86) to D:\Program Files (x86) 2016-03-22 11:18:53, Info SP VERBOSE: Path D:\$WINDOWS.~BT\NewOS\Program Files (x86) has no exceptions, trying a straight move 2016-03-22 11:18:53, Info SP VERBOSE: Successfully moved D:\$WINDOWS.~BT\NewOS\Program Files (x86) to D:\Program Files (x86) 2016-03-22 11:18:53, Info SP Moving D:\$WINDOWS.~BT\NewOS\ProgramData to D:\ProgramData 2016-03-22 11:18:53, Info SP VERBOSE: Path D:\$WINDOWS.~BT\NewOS\ProgramData has no exceptions, trying a straight move 2016-03-22 11:18:53, Info SP VERBOSE: Successfully moved D:\$WINDOWS.~BT\NewOS\ProgramData to D:\ProgramData 2016-03-22 11:18:53, Info SP Moving D:\$WINDOWS.~BT\NewOS\Users to D:\Users 2016-03-22 11:18:53, Info SP VERBOSE: Path D:\$WINDOWS.~BT\NewOS\Users has no exceptions, trying a straight move 2016-03-22 11:18:53, Info SP VERBOSE: Successfully moved D:\$WINDOWS.~BT\NewOS\Users to D:\Users 2016-03-22 11:18:53, Info SP Moving D:\$WINDOWS.~BT\NewOS\Windows to D:\Windows 2016-03-22 11:18:53, Info SP VERBOSE: Path D:\$WINDOWS.~BT\NewOS\Windows has no exceptions, trying a straight move 2016-03-22 11:18:53, Info SP VERBOSE: Successfully moved D:\$WINDOWS.~BT\NewOS\Windows to D:\Windows 2016-03-22 11:18:53, Info SP SetupPlatform: Global progress: 25, Phase progress: 86 2016-03-22 11:18:53, Info SP Operation completed successfully: Relocate OS from D:\$WINDOWS.~BT\NewOS to D:\ |
The Windows.Old is scanned by the process and every file which might be necessary will be “copied” in the running operating system. It’s basically not a copy job, the process just set hard links to the new location.
1
2
3
4
5
|
2016-03-22 11:39:51, Info PLATFORMTRACK: DoesObjectExist called for D:\PROGRAM FILES\MICROSOFT POLICY PLATFORM\TGTNS_PRINCIPALBINDING.MOF 2016-03-22 11:39:51, Info GetNewLocation: Request to D:\Windows.old\PROGRAM FILES\MICROSOFT POLICY PLATFORM\TGTNS_PRINCIPALBINDING.MOF inside moved folder redirected to D:\Program Files\Microsoft Policy Platform\TGTNS_PRINCIPALBINDING.MOF 2016-03-22 11:39:51, Info GetNewLocation: Request to D:\Windows.old\PROGRAM FILES\MICROSOFT POLICY PLATFORM\POLICYPROCESSORPROVIDER.MOF inside moved folder redirected to D:\Program Files\Microsoft Policy Platform\POLICYPROCESSORPROVIDER.MOF |
First Boot to new OS
The location of setupact.log has changed, the new location is %Systemdrive%\Windows\panther.
This phase contains these steps:
- Set up windows components
- Install APPX Packages
- Install Device Drivers
- Set user settings
Set up windows components
The upgrade process starts to enable the Windows components.
Install APPX Packages
Now the installer activates the APPX packages:
1
2
3
4
5
6
7
8
9
|
2016-03-22 11:26:00, Info SYSPRP Successfully pre-registered microsoft.windowscommunicationsapps_2015.6308.42271.0_neutral_~_8wekyb3d8bbwe 2016-03-22 11:26:10, Info SYSPRP Successfully pre-registered Microsoft.WindowsMaps_4.1509.50911.0_neutral_~_8wekyb3d8bbwe 2016-03-22 11:26:15, Info SYSPRP Successfully pre-registered Microsoft.WindowsPhone_2015.1009.10.0_neutral_~_8wekyb3d8bbwe 2016-03-22 11:26:18, Info SYSPRP Successfully pre-registered Microsoft.WindowsSoundRecorder_2015.1012.110.0_neutral_~_8wekyb3d8bbwe 2016-03-22 11:26:22, Info SYSPRP Successfully pre-registered Microsoft.WindowsStore_2015.1013.14.0_neutral_~_8wekyb3d8bbwe 2016-03-22 11:26:28, Info SYSPRP Successfully pre-registered Microsoft.XboxApp_2015.930.526.0_neutral_~_8wekyb3d8bbwe 2016-03-22 11:26:36, Info SYSPRP Successfully pre-registered Microsoft.ZuneMusic_2019.6.13251.0_neutral_~_8wekyb3d8bbwe 2016-03-22 11:26:40, Info SYSPRP Successfully pre-registered Microsoft.ZuneVideo_2019.6.13251.0_neutral_~_8wekyb3d8bbwe 2016-03-22 11:26:40, Info SYSPRP Finished AppxPreRegisterPackage for all packages. |
Install Device Drivers
The process installs the drivers, if drivers were download from windows update, the upgrade process will install these drivers.
Set user settings
The process sets the user specific settings, such as user specified App settings or Windows settings.
After these four steps, the system reboots again to the fourth Upgrade phase.
Second boot to new OS
The second boot to the new OS contains two small steps:
- Finalize the upgrade
- Welcome the user and OOBE
In the fourth phase, the setupact.log is moved to %Systemdrive%\Windows\panther\unattendGC
Finalize the upgrade
The upgrade process is finished.
Welcome the user and OOBE
The User welcome screen appears, which is similar to the screen after an ordinary Windows 10 installation. After the first logon, the user will see the Out of the box experience which performs the customization of windows.
How do I know the upgrade was successful?
At first, when Windows 10 boots up and the user was able to logon, the upgrade was basically successful. If any problems appear during the process, the system will be recovered to the old OS.
The System creates a registry key, that’s all.
Of course the setupact.log (%Systemdrive%\Windows\panther\unattendGC) describes the process:
1
|
[oobeldr.exe] OrchestrateUpdateImageState: Updating image state from [IMAGE_STATE_UNDEPLOYABLE] --> [IMAGE_STATE_COMPLETE] |
Recover the system
If “something went wrong” during the upgrade process, the system will be recovered. This recovery can be performed out of any of the four upgrade process phases and beyond the first login.
Recover the system automatically by the process
Let’s see how the recovery process runs out of the four (five) phases:
Down Level
Basically the Down Level phase just gathered data. There is nothing more to do than cleaning up the system. If something causes a “hard block”, the system will be cleaned up.
WinRE
If something went wrong in the WinRE Phase, the upgrade process reboots into the original OS and cleans up the gathered data.
First Boot to new OS
If something went wrong iIn this phase, there is much more to do than just cleaning up, because the new OS is already running. So the process needs to reverse all the changes.
- Reboot to WinRE
- Remove the files and folders from the Systemdrive
- Move the files and folders out of the Windows.Old folder to their original location
- Cleanup the system
- Reboot to original OS
Second boot to new OS
Basically in the fourth phase, all recovery steps of phase three will be performed in this phase.
- Reboot to WinRE
- Remove the files and folders from the Systemdrive
- Move the files and folders out of the Windows.Old folder to their original location
- Cleanup the system
- Reboot to original OS
First Logon
If the process was fully successful and the user is able to login for the first time. If anything went wrong in this case, the system will reboot and reverse the system to its original state. The process proves that someone actually can login to the new Operating System.
Recover the system manually
It might happen, that the upgrade process completes successful and the user is able to use the new operating system at first glance, but later it turns out that a critical application does not work as expected when running on the new OS.
On order to support these scenarios, Windows 10 lets the user decide to recover the system by himself. For that purpose, the Windows.Old folder remains on the local hard disk for 30 days.
The user can start the recovery out of the system settings:
The recovery process which starts is basically the same as in the last to upgrade phases:
- Reboot to WinRE
- Remove the files and folders from the Systemdrive
- Move the files and folders out of the Windows.Old folder to their original location
- Cleanup the system
- Reboot to original OS