WIndows Server 2016 to 2022 upgrade failing

Tony Stornello 0 Reputation points
2026-10-20T19:06:00.56+00:00

I have tried several times to upgrade one 2016 server to 2022. It gives a runtime error at 88% then just sits there. I've let it sit overnight and it never progresses. I hard reboot it and then it rolls back. I ran setupdiag and I get this:

Error: 0xc1900101-0x4000d Found a missing file in driver package during device install.

Failed to install driver package: ntprint.inf, due to missing file: UNIRES.DLL.

Provider: Microsoft

Class Guid: {4d36e979-e325-11ce-bfc1-08002be10318}

Driver Version: 06/21/2006,10.0.14393.3686

Driver Package Id: ntprint.inf_x86_dcef07064d319714

Submission Id:

Recommend you update the driver package or remove the driver package, reboot and try the update again.

I've run SFC and dism restorehealth commands until no errors remain but it still fails.

Windows for business | Windows Server | Devices and deployment | Set up, install, or upgrade
0 comments No comments

2 answers

Sort by: Newest
  1. VPHAN 47,355 Reputation points Independent Advisor
    2026-10-20T19:52:44.99+00:00

    Hi Tony Stornello,

    To resolve this upgrade blocker, you must purge all obsolete x86 vendor printer drivers from both the active print spooler and the underlying Windows Driver Store prior to initiating the setup executable. Open an elevated PowerShell console as an administrator and execute Get-PrinterDriver | Format-Table Name, PrinterEnvironment to audit your spooler environment and identify any legacy drivers currently operating under the "Windows NT x86" environment architecture. Once these 32-bit packages are identified, execute the command Remove-PrinterDriver -Name "Exact Driver Name" for each legacy entry to properly unbind and strip the 32-bit drivers from your active server print configuration.

    After unbinding the active legacy drivers, you must also eradicate the underlying third-party installation files from the system repository so the Windows setup engine does not attempt to stage them during the upgrade. Open an elevated Command Prompt and execute pnputil /enum-drivers > C:\drivers.txt to export a complete text list of all installed third-party packages. Review the exported text file to locate the specific oemXX.inf published names corresponding to your legacy printer manufacturers, and execute pnputil /delete-driver oemXX.inf /uninstall for each identified package to completely wipe the offending files from the Driver Store. Once all legacy x86 dependencies are permanently eradicated, perform a standard reboot of the server to clear any locked memory handles and mount your Windows Server 2022 installation media to retry the upgrade, which will now seamlessly bypass the driver migration failure and successfully commit the installation.

    Hope this answer has brought you some useful information. If it did, please hit “accept answer”. Should you have any questions, feel free to leave a comment.

    VPHAN

    Was this answer helpful?

    0 comments No comments

  2. AI answer

    2026-10-20T19:07:07.94+00:00

    Remove any obsolete x86 vendor printer drivers before retrying the upgrade, but do not manually delete the Microsoft ntprint.inf_x86... folder or copy UNIRES.DLL from another server.

    SetupDiag matched DriverPackageMissingFileFailure, which specifically means a driver package was missing a file during device installation; updating or removing the affected package is the documented corrective action.^1^ The 0xC1900101-0x4000D code also identifies a second-boot rollback associated with incompatible driver configuration.^2^

    1. Inventory the x86 print drivers

    First take a full server backup or VM snapshot. Removing a driver that is still required can make its associated device unavailable.

    Open PowerShell as Administrator and run:

    Get-PrinterDriver |
        Select-Object Name, Manufacturer, MajorVersion, PrinterEnvironment |
        Sort-Object PrinterEnvironment, Manufacturer, Name |
        Format-Table -AutoSize
    

    Look for entries whose environment is Windows NT x86, particularly old vendor-specific drivers. ntprint.inf is Microsoft’s core printer INF: vendor printer packages commonly invoke it to install shared Unidrv components.^3^ Therefore, the reported Microsoft package can be the dependency that exposes a stale vendor driver during migration, rather than the package that should be forcibly deleted.

    If this is a print server, record which queues use each candidate driver:

    Get-Printer |
        Select-Object Name, DriverName, PortName, Shared |
        Sort-Object DriverName, Name |
        Format-Table -AutoSize
    

    2. Remove unused x86 vendor drivers

    For a driver no longer used by any queue, remove it by its exact displayed name:

    Remove-PrinterDriver -Name "Exact legacy x86 driver name"
    

    The command requires administrator credentials.^4^

    Alternatively, use Server Manager → Tools → Print Management → Print Servers → server → Drivers. Review the Environment column and remove unused Windows NT x86 vendor drivers and their packages.

    If a driver is still assigned to a queue, migrate that queue to a current vendor-supported driver or remove the obsolete queue first. Do not remove an operational driver until its dependency has been addressed.

    3. Check the third-party Driver Store

    PnPUtil lists third-party packages only; inbox packages such as the Microsoft core print package aren't included in that list.^5^

    From an elevated Command Prompt:

    mkdir C:\DriverAudit
    pnputil /enum-drivers > C:\DriverAudit\drivers.txt
    notepad C:\DriverAudit\drivers.txt
    

    Locate old printer-class packages and note their Published Name, such as oem42.inf. Only after confirming that a package is a nonessential vendor printer driver, remove it:

    pnputil /delete-driver oem42.inf /uninstall
    

    PnPUtil removes the package from devices and the Driver Store. If no alternative matching driver exists, the device will stop functioning, so do not target ntprint.inf or remove an unidentified package.^6^

    4. Reboot and retry the upgrade

    1. Reboot the server after removing the obsolete drivers.
    2. Confirm required printers still operate.
    3. Retry the upgrade from Windows Server 2022 installation media.

    A direct installation-media upgrade from Windows Server 2016 to Windows Server 2022 is supported for a nonclustered server.^7^

    Since SFC and DISM already complete without errors, repeating those repairs is unlikely to add useful information. Also avoid downloading a standalone DLL or copying UNIRES.DLL into DriverStore: the file belongs to a signed core print package, and replacing one file does not restore that package’s catalog and integrity.

    If it still fails

    Run the latest SetupDiag again after rollback and check its last matched failure, because Microsoft notes that the last failure is normally the fatal one.^1^ Also inspect:

    C:\$Windows.~BT\Sources\Rollback
    C:\Windows\Logs\SetupDiag\SetupDiagResults.xml
    

    If it again identifies ntprint.inf_x86... after all x86 vendor drivers are gone, preserve the complete SetupDiag output and rollback logs for Microsoft Support. That indicates the remaining issue is the inbox core print package itself; the available documentation does not provide a supported command to forcibly remove or reconstruct that Server 2016 inbox package.


    References

    1. SetupDiag
    2. Windows 10 upgrade resolution procedures
    3. Printer INF File Install Sections - Windows drivers
    4. Remove-PrinterDriver-Description
    5. PnPUtil
    6. Create an inventory of installed driver packages
    7. Plan your Windows Server upgrade
    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.