UpgradeMatrix.xml FiX Tool (Very Beta)

Discussion in 'Windows 11' started by Enthousiast, Aug 1, 2024.

  1. alexEv

    alexEv MDL Novice

    Dec 7, 2024
    1
    0
    0
    is it possible to downgrade while keeping apps to older build by performing inplace upgrade from iso?
    i have insider canary build 27871 pro, i've patched and tried to upgrade from insider dev iso 26200.5670 pro (to get 25h2)

    but setup states "Your files, apps, and settings can't be kept because your current version of Windows
    might be installed on an unsupported directory or you're trying to install an older version of Windows"
     
  2. Enthousiast

    Enthousiast MDL Tester

    Oct 30, 2009
    54,966
    125,938
    450
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  3. biorpg

    biorpg MDL Novice

    Jul 18, 2010
    38
    15
    0
    Just wanted to say that this tool helped me repair an installation of Server 2025 where an in-place upgrade install of the same version of Server 2025 (26100.1) was failing (not certain why, but from the logs in the C:\$WINDOWS.~BT folder, it appeared to be due to there being "no antivirus installed"). Running this tool on the same build of IoTEnterpriseS resulted in a successful in-place upgrade to the client edition, and subsequent success doing the same with the previously failing server edition.
     
  4. Knives*

    Knives* MDL Member

    Sep 21, 2013
    239
    142
    10
    #84 Knives*, Sep 10, 2025
    Last edited: Sep 10, 2025
    Hey Enthousiast, I have a few question about your script.

    1. Your script seems to run fine without administrator privileges. Is that the case, or should I run it as administrator?

    2. Is it best to run your script on the ISO before integrating updates to it, or should I integrate updates into it first and then run your script?

    In my case, I'm working with 26100.1.240331-1435.ge_release_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso, which is Windows 11 IoT Enterprise LTSC 2024. I will be adding the October updates to it next month using using the UUP dump site, specifically for build 24H2 if I'm not mistaken, along with W10UI to do the integration.

    3. Should I stick to using Upgrade Enabler Tool 2.1 beta 3 on the first page, or would it be better to use Upgrade Enabler Tool 2.1 beta 4 on the 4th page? Maybe it doesn't matter but I thought I'd ask.

    P.S. The "README.txt" file in beta 4 says:

    Put the source ISO inside the "Source_ISO" folder and run "RunME_Test_3.cmd".

    It should say:

    Put the source ISO inside the "Source_ISO" folder and run "RunME_Test_4.cmd".

    A small mistake, but I thought I'd mention it.

    Thanks for making the script. It seems to have worked for me. I'll test the new ISO next month.
     
  5. Enthousiast

    Enthousiast MDL Tester

    Oct 30, 2009
    54,966
    125,938
    450
    It should ask for admin priveleges when started by simply doubleclicking,
    I run it as last step in my projects.

    When you create virtual editions after inserting the modifief xml then it is not working (in my tests).
    Use the latest, the one at the OP should be the latest (i now noticed i didn't update the OP:thinking:)

    Updating the tool to fix the info in the project folder, releasing v2.1beta5 soon.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  6. Knives*

    Knives* MDL Member

    Sep 21, 2013
    239
    142
    10
    Thanks for answering my questions.

    I did notice that your tool runs just fine without administrator enforced. I'll be sure to run it with admin in the future though, just in case.

    I'm looking forward to beta 5.:mml:
     
  7. Enthousiast

    Enthousiast MDL Tester

    Oct 30, 2009
    54,966
    125,938
    450
    #87 Enthousiast, Sep 10, 2025
    Last edited: Jan 27, 2026
    (OP)
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  8. Snow_

    Snow_ MDL Junior Member

    Oct 14, 2011
    53
    10
    0
    I tried this tool, but it looks like it doesn't work.

    I'm on 26200.5751 and I've tried to get to regular 25H2 builds (like 26200.6718), but not use, still cannot choose "Keep personal files and apps." :(
     
  9. Enthousiast

    Enthousiast MDL Tester

    Oct 30, 2009
    54,966
    125,938
    450
    You should not even need this tool for that, it seems a 24/25H2 problem in general.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  10. Snow_

    Snow_ MDL Junior Member

    Oct 14, 2011
    53
    10
    0
    But I'm stuck at this point... I tried everything I could think of... And I still cannot figure out a solution. :(
     
  11. jcc2

    jcc2 MDL Member

    Mar 23, 2010
    127
    44
    10
    Greetings from Lima, Peru !!!

    I was trying to upgrade to 26200.6718 using ISO download from uupdump.netdump and it failed twice... I then tried installing the
    KB5054156 EP first and then just the uupdump.net update files using W10UI V55 and it worked.....

    Just my 2 cents...

    JCC2
     
  12. Knives*

    Knives* MDL Member

    Sep 21, 2013
    239
    142
    10
    What Enthousiast meant when he said "You should not even need this tool for that" is that you should be able upgrade from a previous Home or Pro edition of Windows (e.g. 23H2 to 24H2 to 25H2) without needing this tool at all.

    The purpose of this tool is to allow users to force an upgrade of a version of Windows to another version of Windows that was never never meant to get upgraded to (e.g. Windows 11 Home 23H2 to Windows 11 IoT Enterprise LTSC 2024), while still keeping all installed programs, files and folders intact. Microsoft typically prevents this from happening since Home and Pro versions are not designed to get upgraded to an Enterprise edition like the IoT LTSC, but this tool essentially changes the registry settings within the ISO of Windows, such as Windows 11 IoT Enterprise LTSC 2024, so that an upgrade becomes possible.

    If I've left anything out, I'm sure someone here will add to this, or correct anything I may have said incorrectly.
     
  13. Enthousiast

    Enthousiast MDL Tester

    Oct 30, 2009
    54,966
    125,938
    450
    This tool was initially developed for upgrades to 2019 LTSC, there was no direct path for that and the xml modification made the path possible and to keep all during the upgrade.

    It is usefull for when the normal upgrade setup doesn't allow to keep all files, apps and such.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  14. Snow_

    Snow_ MDL Junior Member

    Oct 14, 2011
    53
    10
    0
    https://forums.mydigitallife.net/threads/windows-11-hotfix-repository.83741/page-177#post-1890365

    I tried to perform an in-place upgrade to any regular build of 25H2, but the "Keep personal files and apps" option was grayed out for every build of 25H2 I tried.

    I was stuck on 26200.5751, which is a Dev build, not a regular build of 25H2.

    In the meantime, I was able to patch setupcompat.dll within the following ISO file: Windows11_InsiderPreview_Client_x64_en-us_26200.iso.

    So, I forced an upgrade to 26200.5074, and right now I'm on build 26200.6718. :cool:

    Patching setupcompat.dll was literally my only solution. :D
     
  15. Enthousiast

    Enthousiast MDL Tester

    Oct 30, 2009
    54,966
    125,938
    450
    Is an IP level build, those switches have noting to do with the upgradematrix.xml, this tool won't fix the MSFT mess of switching to and from beta/dev/retail.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  16. Knives*

    Knives* MDL Member

    Sep 21, 2013
    239
    142
    10
    #96 Knives*, Oct 16, 2025
    Last edited: Oct 16, 2025
    This tool did the trick and works perfectly. I used beta 5.

    Upgraded from Windows 11 Home 23H2 using build 22631.6060 (final October 14, 2025 update) to Windows 11 IoT Enterprise LTSC 2024 using W10UI 10.55 to integrate updates from build 26100.1 to 26100.6899 (October 14, 2025 update).

    Thank you for the tool, Enthousiast. You saved me a lot of time.
     
  17. Artyk

    Artyk MDL Novice

    May 10, 2010
    7
    1
    0
    Good night. I was trying to upgrade Windows 11 Home to Windows 11 IoT Enterprise LTSC 2024. UpgradeMatrix.xml FiX Tool v2.1 beta 5 changes only the first part, but not the second. It does not insert TargetEdition, and as a result, it is not possible to update files and applications while saving them. How can I solve this problem? Maybe there is some kind of debugging or a log file?
     
  18. Enthousiast

    Enthousiast MDL Tester

    Oct 30, 2009
    54,966
    125,938
    450
    #98 Enthousiast, Oct 29, 2025
    Last edited: Oct 29, 2025
    (OP)
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  19. Artyk

    Artyk MDL Novice

    May 10, 2010
    7
    1
    0
    #99 Artyk, Nov 4, 2025
    Last edited by a moderator: Nov 4, 2025
    Code:
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo===============================================
    ==============================================
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo Running ISO Upgrade Enabler v2.1_b5...
    Running ISO Upgrade Enabler v2.1_b5...
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo Crappy Tools By Enthousiast [USER=35247]@MDL[/USER]
    Crappy Tools By Enthousiast [USER=35247]@MDL[/USER]
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo===============================================
    ==============================================
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>REM Detect OS Architecture
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>set "arch=x64"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>if /I AMD64 == x86 (if not defined PROCESSOR_ARCHITEW6432 (set "arch=x86" ) )
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>if x64 == x86 (
    set "_wimlib=E:\Upgrade_Enabler_Tool_v2.1_b5\bin\wimlib-imagex.exe"
     set "xOS=x86"
    )  else (
    set "_wimlib=E:\Upgrade_Enabler_Tool_v2.1_b5\bin\bin64\wimlib-imagex.exe"
     set "xOS=amd64"
    )
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>if exist "TEMP" RD /S /Q "TEMP"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>if not exist "Source_ISO\*.iso" (
    echo.
     ECHO==========================================================
     echo No iso file detected in Source_ISO dir...
     ECHO==========================================================
     echo.
     pause
     exit /b
    )
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>mkdir "TEMP"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>for /F %i in ('dir /b Source_ISO\*.iso') do bin\7z.exe e -y -oTEMP Source_ISO\%i sources\setup.exe  1>nul
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>bin\7z.exe e -y -oTEMP Source_ISO\en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f.iso sources\setup.exe  1>nul
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>bin\7z.exe l .\TEMP\setup.exe  1>.\TEMP\version.txt 2>&1
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>for /F "tokens=4 delims=. " %i in ('findstr /i /b FileVersion .\TEMP\version.txt') do set vermajor=%i
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>set vermajor=19041
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>set vermajor=19041
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>REM ==========
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>IF NOT DEFINED vermajor (
    echo.
     ECHO==========================================================
     echo Detecting setup.exe version failed...
     ECHO==========================================================
     echo.
     Goto :Cleanup
    )
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>SET "Winver="
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>IF 19041 EQU 22000 SET "Winver=22000"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>IF 19041 EQU 22621 SET "Winver=226x1"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>IF 19041 EQU 17763 SET "Winver=17763"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>IF 19041 EQU 19041 SET "Winver=1904x"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>IF 19041 EQU 26100 SET "Winver=26100"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>IF NOT DEFINED Winver (
    echo.
     ECHO==========================================================
     echo Unsupported iso version...
     ECHO==========================================================
     echo.
     Goto :Cleanup
    )
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>if exist "ISO" RD /S /Q "ISO"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>MkDir "ISO"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo===============================================
    ==============================================
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo Extracting the 1904x source ISO...
    Extracting the 1904x source ISO...
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo===============================================
    ==============================================
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>bin\7z x -y -o"ISO\" "Source_ISO\"
    
    7-Zip 21.07 (x86) : Copyright (c) 1999-2021 Igor Pavlov : 2021-12-26
    
    Scanning the drive for archives:
    1 folder, 1 file, 4851668992 bytes (4627 MiB)
    
    Extracting archive: Source_ISO\en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f.iso
    --
    Path = Source_ISO\en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f.iso
    Type = Udf
    Physical Size = 4851668992
    Comment = CES_X64FREO_EN-US_DV9
    Cluster Size = 2048
    Created = 2021-10-07 03:00:00
    
    Everything is Ok
    
    Folders: 85
    Files: 904
    Size:       4846242161
    Compressed: 4851668992
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>if exist "ISO\sources\install.wim" set WIMFILE=install.wim
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>if exist "ISO\sources\install.esd" set WIMFILE=install.esd
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>for /F "tokens=2 delims=: " %# in ('dism.exe /english /get-wiminfo /wimfile:"ISO\sources\install.wim" /index:1 | find /i "Architecture"') do set warch=%#
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>set warch=x64
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo===============================================
    ==============================================
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo Adding the modified 1904x x64 UpgradeMatrix.xml to the 1904x x64 install.wim...
    Adding the modified 1904x x64 UpgradeMatrix.xml to the 1904x x64 install.wim...
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo===============================================
    ==============================================
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>for /F "tokens=3 delims=: " %i in ('E:\Upgrade_Enabler_Tool_v2.1_b5\bin\bin64\wimlib-imagex.exe info ISO\sources\install.wim | findstr /c:"Image Count"') do set images=%i
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>set images=2
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>for /L %i in (1 1 2) do (E:\Upgrade_Enabler_Tool_v2.1_b5\bin\bin64\wimlib-imagex.exe update "ISO\Sources\install.wim" %i --command="add 'Files\UpgradeMatrix\UpgradeMatrix_x64.xml' '\Windows\servicing\Editions\UpgradeMatrix.xml'" )
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>(E:\Upgrade_Enabler_Tool_v2.1_b5\bin\bin64\wimlib-imagex.exe update "ISO\Sources\install.wim" 1 --command="add 'Files\UpgradeMatrix\UpgradeMatrix_x64.xml' '\Windows\servicing\Editions\UpgradeMatrix.xml'" )
    Scanning "Files\UpgradeMatrix\UpgradeMatrix_x64.xml" (loading as WIM path: "\Windows\servicing\Editions\UpgradeMatrix.xml")...
    503 bytes scanned (1 files, 0 directories)
    Updating "\Windows\servicing\Editions\UpgradeMatrix.xml" in WIM image
    Using LZX compression with 1 thread
    Archiving file data: 503 bytes of 503 bytes (100%) done
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>(E:\Upgrade_Enabler_Tool_v2.1_b5\bin\bin64\wimlib-imagex.exe update "ISO\Sources\install.wim" 2 --command="add 'Files\UpgradeMatrix\UpgradeMatrix_x64.xml' '\Windows\servicing\Editions\UpgradeMatrix.xml'" )
    Scanning "Files\UpgradeMatrix\UpgradeMatrix_x64.xml" (loading as WIM path: "\Windows\servicing\Editions\UpgradeMatrix.xml")...
    503 bytes scanned (1 files, 0 directories)
    Updating "\Windows\servicing\Editions\UpgradeMatrix.xml" in WIM image
    Using LZX compression with 1 thread
    Archiving file data: 0 bytes of 0 bytes (0%) donene
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>IF /I "0" == "0" GOTO :CreateISO
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>IF /I "1" NEQ "1" GOTO :SKIPEI
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo ============================================================
    ============================================================
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo Copying the generic ei.cfg to the work dir...
    Copying the generic ei.cfg to the work dir...
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo (If exists, the original file will be renamed to EI.CFG.ORI)
    (If exists, the original file will be renamed to EI.CFG.ORI)
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo ============================================================
    ============================================================
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>IF EXIST "ISO\Sources\EI.CFG" ren "ISO\Sources\EI.CFG" "EI.CFG.ORI"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>COPY /Y "Files\EI.CFG" "ISO\Sources\"
    Скопировано файлов:         1.
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo===============================================
    ==============================================
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo Creating the 1904x x64 ISO...
    Creating the 1904x x64 ISO...
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo===============================================
    ==============================================
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>for /F %# in ('powershell "get-date -format _yyyy_MM_dd"') do set "isodate=%#"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>set "isodate=_2025_11_04"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>for /F "delims=" %i in ('dir /b Source_ISO\*.iso') do set "isoname=%i"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>set "isoname=en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f.iso"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>set "isoname=en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f_FIXED_Upgrade_Matrix_2025_11_04.iso"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>bin\cdimage.exe -bootdata:2#p0,e,b"ISO\boot\etfsboot.com"#pEF,e,b"ISO\efi\Microsoft\boot\efisys.bin" -o -m -u2 -udfver102 -l1904x_x64 ISO "en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f_FIXED_Upgrade_Matrix_2025_11_04.iso"
    
    OSCDIMG 2.56 CD-ROM and DVD-ROM Premastering Utility
    Copyright (C) Microsoft, 1993-2012. All rights reserved.
    Licensed only for producing Microsoft authorized content.
    
    
    Scanning source tree (500 files in 41 directories)
    Scanning source tree complete (905 files in 86 directories)
    
    Computing directory information complete
    
    Image file is 4865654784 bytes (before optimization)
    
    Writing 905 files in 86 directories to en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f_FIXED_Upgrade_Matrix_2025_11_04.iso
    
    100% complete
    
    Storage optimization saved 25 files, 14182400 bytes (1% of image)
    
    After optimization, image file is 4853540864 bytes
    Space saved because of embedding, sparseness or optimization = 14182400
    
    Done.
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo===============================================
    ==============================================
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo Cleaning up the ISO folder...
    Cleaning up the ISO folder...
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo===============================================
    ==============================================
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>if exist "ISO" RD /S /Q "ISO"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>if exist "TEMP" RD /S /Q "TEMP"
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>echo.
    
    
    E:\Upgrade_Enabler_Tool_v2.1_b5>pause
    Для продолжения нажмите любую клавишу . . .
    
     
  20. Enthousiast

    Enthousiast MDL Tester

    Oct 30, 2009
    54,966
    125,938
    450
    #100 Enthousiast, Nov 4, 2025
    Last edited: Nov 4, 2025
    (OP)
    I never will get why people don't just run a cmd by simply doubleclicking it.

    By running it this way there is so much white noise in the cmd windows output.

    I can't find errors and from what i see the fixed ISO is made.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...