A direct Windows Server 2016-to-2025 upgrade is supported only for an eligible nonclustered server using installation media; after the rollback, run SetupDiag and inspect the rollback logs before attempting the upgrade again.^1^
1. Confirm that the attempted method is supported
- Physical server or non-Azure VM: Windows Server 2016 can upgrade directly to Windows Server 2025 by launching
setup.exe from Windows Server 2025 installation media.
- Windows Update: Windows Server 2016 cannot use the Windows Update feature-upgrade path directly to Server 2025. That method requires Server 2019 or Server 2022 plus its required cumulative update.^2^
- Failover cluster: A normal direct in-place upgrade is not applicable. Cluster OS rolling upgrades advance only one version at a time.^1^
- RDS role installed: RDS supports upgrading only two Windows Server versions at a time. Therefore, Server 2016 cannot go directly to Server 2025; use a staged path or migrate to new Server 2025 RDS hosts. The documented role upgrade order begins with RD Connection Broker and then RD Licensing before RD Session Host.^3^
- Azure VM: Use the Azure VM upgrade procedure or Windows Update rather than the general installation-media procedure. Azure also provides an OS Upgrade Assessment Tool for validating the path and known issues.^4^
2. Obtain the actual reboot-stage failure
After Windows rolls back to Server 2016, first check the SetupDiag result that Windows Setup normally creates:
$paths = @(
"$env:windir\Logs\SetupDiag\SetupDiagResults.xml",
"C:\`$Windows.~BT\Sources\Rollback\setupact.log",
"C:\`$Windows.~BT\Sources\Rollback\setuperr.log",
"C:\`$Windows.~BT\Sources\Rollback\setupapi\setupapi.dev.log"
)
$paths | Where-Object { Test-Path $_ } |
ForEach-Object { Get-Item $_ | Select-Object FullName, Length, LastWriteTime }
SetupDiag examines Windows Setup logs and reports the matched failure rule. Windows Setup stores its automatic result at %WinDir%\Logs\SetupDiag\SetupDiagResults.xml; when multiple failures are reported, the last failure is normally the fatal one.^5^
If that result is absent or inconclusive:
- Download and run the latest SetupDiag from an elevated command prompt.
- Save the result outside the temporary Setup folders:
mkdir C:\SetupDiag
SetupDiag.exe /Output:C:\SetupDiag\Results.log /Verbose
notepad C:\SetupDiag\Results.log
- Record the complete result and extend code, such as
0xC1900101 - 0x30018, plus the matched rule and failing driver, file, or component.
3. Inspect the rollback evidence
For a failure after restart, preserve the entire hidden folder C:\$Windows.~BT\Sources before cleanup. The principal files are:
-
C:\$Windows.~BT\Sources\Rollback\setupact.log — rollback actions.
-
C:\$Windows.~BT\Sources\Rollback\setuperr.log — Setup errors.
-
C:\$Windows.~BT\Sources\Rollback\setupapi\setupapi.dev.log — device and driver installation.
-
C:\$Windows.~BT\Sources\Rollback\setupmem.dmp — upgrade bug-check dump, when created.
-
C:\$Windows.~BT\Sources\Rollback\*.evtx — rollback event logs.
setupact.log is the primary starting point. Search from the bottom upward for the last occurrence of the result code, then correlate that timestamp across setuperr.log and setupapi.dev.log. Also search for Shell application requested abort and Abandoning apply due to error.^6^
Do not apply a boot-record repair such as bcdboot, remove drivers, or alter partitions without a SetupDiag rule or log entry identifying that specific problem.
4. Correct the identified blocker, then retry
Before retrying:
- Create and restore-test a full backup of the OS, applications, and data.
- Verify that installed roles and applications support Server 2025. AD DS domain controllers should be replaced through clean installation, promotion, and demotion rather than upgraded in place.^2^
- Confirm that architecture, language, installation type, and edition transition are supported. Server Core cannot switch to Desktop Experience during the upgrade, and Datacenter cannot downgrade to Standard.^1^
- If NIC Teaming is configured, disable it for the upgrade and restore it afterward.
- On non-Azure, nonclustered systems, mount matching Server 2025 media, run
setup.exe, select the correct edition, and choose Keep files, settings, and apps.^2^
If SetupDiag still cannot identify the fatal failure, provide Microsoft Support with SetupDiagResults, the complete Panther and Rollback folders, the full result/extend code, and any setupmem.dmp.
References
- Plan your Windows Server upgrade
- Perform an in-place upgrade of Windows Server
- Upgrade Remote Desktop Services deployments
- In-place upgrade for VMs running Windows Server in Azure
- SetupDiag
- Windows upgrade log files