[GUIDE] [DISCUSSION] Windows Editions Reconstructions

Discussion in 'Windows 10' started by TesterMachineOS, Sep 3, 2024.

  1. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
    #2201 xinso, Jun 17, 2025
    Last edited: Jun 17, 2025
    pp03 said that the latest 19045.6029 CU brings MicrosoftBing, unable to remove.

    Widgets is working now.

    Q: When 19045 AC reached End of Sevice?
     
  2. Low Level Perform

    Low Level Perform MDL Member

    Jul 21, 2024
    100
    95
    10
    Thank you, @xinso! I tried it, and it worked!
    Windows10.0-KB5003791-x64-19044-21H2-as-19045-22H2.cab can replace Windows10.0-KB5015684-x64.cab.

    What about the base .NET KB5011048 that must always be included in offline updates? When starting the update from 19041.1, can it be applied at the same time so that it doesn't need to be included in the next update with the 19041.1 base?
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  3. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
    #2203 xinso, Jun 17, 2025
    Last edited: Jun 18, 2025
    Code:
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    
    :: TARGET=CoreCountrySpecific
    :: TARGET=Core, CoreSingleLanguage
    :: TARGET=EnterpriseG
    :: TARGET=EnterpriseS, IoTEnterpriseS
    :: TARGET=Professional, Education, Enterprise, IoTEnterprise, ProfessionalWorkstation, ServerRdsh
    
    :: TARGET=CoreN
    :: TARGET=EnterpriseSN
    :: TARGET=ProfessionalN, EducationN, EnterpriseN, ProfessionalWorkstationN
    
    :: LANG=ar-SA, bg-BG, cs-CZ, da-DK, de-DE, el-GR, en-GB, en-US, es-ES, es-MX, et-EE, fi-FI, fr-CA, fr-FR, he-IL, hr-HR, hu-HU, it-IT, ja-JP
    :: LANG=ko-KR, lt-LT, lv-LV, nb-NO, nl-NL, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sl-SI, sr-LATN-RS, sv-SE, th-TH, tr-TR, uk-UA, zh-CN, zh-TW
    
    :: CHANNEL=OEM, VOL
    :: STORE=with, without
    :: NETFX=48, 481
    :: RESETBASE=Yes, No
    
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    
    set TARGET=IoTEnterprise
    
    set LANG=-en-GB
    
    set CHANNEL=OEM
    
    set STORE=with
    
    set NETFX=481
    
    set RESETBASE=No
    
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    set KMSName=***********
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    
    if exist temp (
    echo.
    echo ------------------------------------------------------------
    echo Delete temporary folder
    echo ------------------------------------------------------------
    rd /s /q temp
    ) else (
    md temp %_NUL%
    )
    
    set "_NUL=>NUL 2>&1"
    set "_TXT=temp\1.txt"
    set "_TMP=temp\1"
    
    md temp\mount %_NUL%
    set "MT=temp\mount"
    md temp\mount1 %_NUL%
    set "MT1=temp\mount1"
    
    set S=files\update\ssu
    set E=files\update\enablement
    set L=files\update\lcu
    set SR=files\update\systemreset
    set N48=files\update\ndp48
    set N481=files\update\ndp481
    
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    
    Code:
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    
    if exist temp\info.txt (del /f /q temp\info.txt)
    files\wimlib-imagex info files\Unstage.wim 1 >temp\info.txt 2>&1
    for /f "tokens=2 delims=: " %%i in ('findstr /i /c:"Flags:" temp\info.txt') do (set SOURCE=%%i)
    for /f "tokens=2 delims=: " %%i in ('findstr /i "Architecture:" temp\info.txt') do (set ARCHITECTURE=%%i)
    if %ARCHITECTURE% equ x86 (set ARCH=x86&set UARC=x86)
    if %ARCHITECTURE% equ x86_64 (set ARCH=amd64&set UARC=x64)
    if %ARCHITECTURE% equ ARM64 (set ARCH=arm64&set UARC=arm64)
    for /f "tokens=3 delims=: " %%i in ('findstr /i "Major" temp\info.txt') do (set V1=%%i)
    for /f "tokens=3 delims=: " %%i in ('findstr /i "Minor" temp\info.txt') do (set V2=%%i)
    for /f "tokens=2 delims=: " %%i in ('findstr /b "Build" temp\info.txt') do (set V3=%%i)
    for /f "tokens=4 delims=: " %%i in ('findstr /i /c:"Service Pack Build:" temp\info.txt') do (set V4=%%i)
    
    set LVER=%V1%.%V2%.%V3%.%V4%
    set SVER=%V3%.%V4%
    
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    
    if exist %S%\*%UARC%* if exist %L%\*%UARC%*.cab (
    echo.
    echo ------------------------------------------------------------
    echo Expand Cumulative update
    echo ------------------------------------------------------------
    dir /b %L%\*.cab >%_TXT%
    powershell -Command "(gc %_TXT%) -replace '.cab', '' | sc %_TXT%"
    if not exist temp\LCU md temp\LCU
    for /f %%i in ('findstr /i . %_TXT%') do (
    %WinDir%\System32\expand -R "%L%\%%i.cab" -F:* "temp\LCU" %_NUL%
    if exist "temp\LCU\*.cab" %WinDir%\System32\expand -R "temp\LCU\*.cab" -F:* "temp\LCU" %_NUL%
    )
    set LCU=temp\LCU
    for /f "tokens=7 delims=_." %%i in ('dir /b temp\LCU\%ARCH%_microsoft-windows-coreos-revision*.manifest') do (set V4=%%i)
    )
    
    if exist %S%\*%UARC%* if exist %L%\*%UARC%*.esd (
    echo.
    echo ------------------------------------------------------------
    echo Expand Cumulative update
    echo ------------------------------------------------------------
    echo.
    dir /b %L%\. >temp\1.txt
    powershell -Command "(gc temp\1.txt) -replace '.esd', '' | sc temp\1.txt"
    for /f %%i in ('findstr /i . temp\1.txt') do (
    files\wimlib-imagex extract %L%\%%i.esd 1 \ --dest-dir=temp\LCU --no-acls --no-attributes
    )
    set LCU=temp\LCU
    for /f "tokens=7 delims=_." %%i in ('dir /b temp\LCU\%ARCH%_microsoft-windows-coreos-revision*.manifest') do (set V4=%%i)
    )
    
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    if exist files\update\enablement\*KB5003791* (set V3=19044&set EAM=21H2)
    if exist files\update\enablement\*KB5015684* (set V3=19045&set EAM=22H2)
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    
    [Files\NetFx481]
    Code:
    x64.cab
    x64-ar-sa.cab
    x64-cs-cz.cab
    x64-da-dk.cab
    x64-de-de.cab
    x64-el-gr.cab
    x64-es-es.cab
    x64-fi-fi.cab
    x64-fr-fr.cab
    x64-he-il.cab
    x64-hu-hu.cab
    x64-it-it.cab
    x64-ja-jp.cab
    x64-ko-kr.cab
    x64-nb-no.cab
    x64-nl-nl.cab
    x64-pl-pl.cab
    x64-pt-br.cab
    x64-ru-ru.cab
    x64-sv-se.cab
    x64-tr-tr.cab
    x64-zh-cn.cab
    x64-zh-tw.cab
    
    Code:
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    
    if defined LCU (
    echo.
    echo ------------------------------------------------------------
    echo Add Servicing Stack update to %TARGET% image
    echo ------------------------------------------------------------
    dism /english /image:%MT% /add-package:%S%
    
    if exist %E%\*%UARC%* (
    echo.
    echo ------------------------------------------------------------
    echo Add %EAM%Enablement to %TARGET% image
    echo ------------------------------------------------------------
    dism /english /image:%MT% /add-package:%E%
    )
    
    if %NETFX%==48 if exist %N48%\*%UARC%* (
    echo.
    echo ------------------------------------------------------------
    echo Add DotNetRollup 4.8 to %TARGET% image
    echo ------------------------------------------------------------
    dism /english /image:%MT% /add-package:%N48%
    )
    
    if %NETFX%==481 if exist %N481%\*%UARC%* (
    echo.
    echo ------------------------------------------------------------
    echo Add .Net Framework 4.8.1 to %TARGET% image
    echo ------------------------------------------------------------
    dir /b files\NetFx481\%UARC%.cab >%_TXT%
    powershell -Command "(gc %_TXT%) -replace '.cab', '' | sc %_TXT%"
    if not exist %_TMP% (md %_TMP%)
    for /f %%i in ('findstr /i . %_TXT%') do (
    %WinDir%\System32\expand -R "files\NetFx481\%%i.cab" -F:* "%_TMP%" %_NUL%
    if exist "%_TMP%\*.cab" %WinDir%\System32\expand -R "%_TMP%\*.cab" -F:* "%_TMP%" %_NUL%
    )
    if exist "%_TMP%\*.cab" del /f /q "%_TMP%\*.cab"
    if /i %ARCH%==arm64 (
    for /f %%i in ('dir /b %_TMP%\*.mum') do (powershell -Command "(gc %_TMP%\%%i) -replace '"10.0.22000.1"', '"10.0.%SVER%"' | sc %_TMP%\%%i")
    for /f %%i in ('dir /b %_TMP%\*.mum') do (powershell -Command "(gc %_TMP%\%%i) -replace '"10.0.22000.652"', '"6.0.0.0"' | sc %_TMP%\%%i")
    )
    dism /english /image:%MT% /add-package:%_TMP%
    rd /s /q %_TMP%
    
    if exist files\NetFx481\%UARC%-%LANG%.cab (
    echo.
    echo ------------------------------------------------------------
    echo Add %LANG% .Net Framework 4.8.1 language to %TARGET% image
    echo ------------------------------------------------------------
    dir /b files\NetFx481\%UARC%-%LANG%.cab >%_TXT%
    powershell -Command "(gc %_TXT%) -replace '.cab', '' | sc %_TXT%"
    if not exist %_TMP% (md %_TMP%)
    for /f %%i in ('findstr /i . %_TXT%') do (
    %WinDir%\System32\expand -R "files\NetFx481\%%i.cab" -F:* "%_TMP%" %_NUL%
    if exist "%_TMP%\*.cab" %WinDir%\System32\expand -R "%_TMP%\*.cab" -F:* "%_TMP%" %_NUL%
    )
    if exist "%_TMP%\*.cab" del /f /q "%_TMP%\*.cab"
    if /i %ARCH%==arm64 (
    for /f %%i in ('dir /b %_TMP%\*.mum') do (powershell -Command "(gc %_TMP%\%%i) -replace '"10.0.22000.1"', '"10.0.%SVER%"' | sc %_TMP%\%%i")
    for /f %%i in ('dir /b %_TMP%\*.mum') do (powershell -Command "(gc %_TMP%\%%i) -replace '"10.0.22000.652"', '"6.0.0.0"' | sc %_TMP%\%%i")
    )
    dism /english /image:%MT% /add-package:%_TMP%
    rd /s /q %_TMP%
    )
    
    if exist %MT%\Windows\servicing\Packages\Package_for_KB5011048*%ARCH%*.mum (
    echo.
    echo ------------------------------------------------------------
    echo Add DotNetRollup 4.8.1 to %TARGET% image
    echo ------------------------------------------------------------
    dism /english /image:%MT% /add-package:%N481%
    )
    )
    
    echo.
    echo ------------------------------------------------------------
    echo Add Cumulative update to %TARGET% image
    echo ------------------------------------------------------------
    dism /english /image:%MT% /add-package:%LCU%
    
    if /i %RESETBASE%==Yes (
    echo.
    echo ------------------------------------------------------------
    echo Reset %TARGET% base
    echo ------------------------------------------------------------
    dism /english /image:%MT% /cleanup-image /startcomponentcleanup /resetbase
    )
    )
    
    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    
    You can integrate these things to 19041.1 as base image:
    1. Add Enablement
    2. Add .Net35\48\481
    3. If .Net481, add .NetRollup481 (optional becasue it will be potentially updated.)

    As you mentioned yesterday, I rearranged my script. All is standalone.

    .NET48, standalone.
    .NET481 and Language pack if available, standalone.
    .NET481Rollup, standalone.

    WinRE, standalone.
    CU, standalone.
    Enablement, standalone.

    More flexible. And more clear like a hair cut. Anyway, just comfortable. Thank you.
     
  4. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
    #2204 xinso, Jun 18, 2025
    Last edited: Jun 19, 2025
    Q: Is it possible to migrate components between Client and Server?
    A: Hardly. Because the component deployment in manifset is different between Client and Server.

    Q: How to migrate ServerBackup from Server to Client?

    ServerBackup is controlled by Product policy. For Client, only ServerRdsh is possible.

    The problem is ServerBackup, unlike Dedup, is composed of lots of functions. Very difficult to migrate, let alone custom updates.

    Q: How to use it easily?
    A: Use Server Desktop Experience as ServerRdsh workstation.
     
  5. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
    #2205 xinso, Jun 19, 2025
    Last edited: Jun 19, 2025
    Usually, CMGE EnterpriseG goes with LTSC. Official 26100 LTSC has been for a while.

    Q: Will there be 26100 CMGE EnterpriseG?
     
  6. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
    #2206 xinso, Jun 19, 2025
    Last edited: Jun 19, 2025
    With 20279 full Store, there are four Apps won't work on 20348.1 Client and Server. i.e. Xbox, Phone Link, Clock, Photos.

    26100 Store on 20348.3807 Server Desktop Experience? They work.
     
  7. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
    #2207 xinso, Jun 19, 2025
    Last edited: Jun 19, 2025
    I seached the web for Microsoft Teams. People ask: How to install it for all Users?

    On 19045, News and Interests (Widgets) works for AC only. I ask: How to run it on 19044 LTSC when AC reached end of service?
     
  8. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
  9. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
    #2209 xinso, Jun 19, 2025
    Last edited: Jun 19, 2025
    Not all old device\program is compatible with Windows 11, mate.
     
  10. LiteOS

    LiteOS Windowizer

    Mar 7, 2014
    2,379
    1,088
    90
    windows 11 23H2 build 25398 is better ? cos the unstaging ?
    or its the build
    many saying its better then other
    what u guys thinks
     
  11. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
    #2211 xinso, Jun 20, 2025
    Last edited: Jun 21, 2025
    Q: What is Neutral Reconstruction?
    A: The source image is another compatible build's Barebone System.

    e.g.
    20279.1 VS 20348.1
     
  12. EPRob

    EPRob MDL Expert

    Jul 23, 2009
    1,362
    661
    60
    I'm using 25398.1665 AzureStackHCI as my daily driver. IMHO it's the stablist OS available.
     
  13. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
    How lite could it be, i.e. What components are required instead of whole System?
     
  14. fyer

    fyer MDL Novice

    Jul 6, 2021
    5
    0
    0
    Some one has a guide to convert Windows 10 10586 into a Ltsb edition or a starter?
     
  15. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
    #2215 xinso, Jun 21, 2025
    Last edited: Jun 23, 2025
    Q: Is Server Desktop Experience able to run "Reset This PC"?
     
  16. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
    #2216 xinso, Jun 21, 2025
    Last edited: Jun 21, 2025
    It works in this structure. The most easy.
    Code:
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v3" manifestVersion="1.0" copyright="Copyright (c) Microsoft Corporation. All Rights Reserved.">
      <assemblyIdentity name="Microsoft-Windows-NeutralEdition" version="10.0.20279.1" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" />
      <package identifier="Windows Neutral Edition" releaseType="Product">
        <update name="Microsoft-Windows-Foundation-Package">
          <package contained="false" integrate="visible">
            <assemblyIdentity name="Microsoft-Windows-Foundation-Package" version="10.0.20279.1" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" />
          </package>
        </update>
        <update name="Microsoft-Windows-Client-Desktop-Required-Package">
          <package contained="false" integrate="hidden">
            <assemblyIdentity name="Microsoft-Windows-Client-Desktop-Required-Package" version="10.0.20279.1" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" />
          </package>
        </update>
        <update name="Microsoft-Windows-Client-Desktop-Required-WOW64-Package">
          <package contained="false" integrate="hidden">
            <assemblyIdentity name="Microsoft-Windows-Client-Desktop-Required-WOW64-Package" version="10.0.20279.1" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" />
          </package>
        </update>
        <update name="Microsoft-Windows-Client-Features-Package">
          <package contained="false" integrate="hidden">
            <assemblyIdentity name="Microsoft-Windows-Client-Features-Package" version="10.0.20279.1" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" />
          </package>
        </update>
        <update name="Microsoft-Windows-Client-Features-WOW64-Package">
          <package contained="false" integrate="hidden">
            <assemblyIdentity name="Microsoft-Windows-Client-Features-WOW64-Package" version="10.0.20279.1" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" />
          </package>
        </update>
      </package>
    </assembly>
    
     
  17. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
    #2217 xinso, Jun 21, 2025
    Last edited: Jun 21, 2025
    No WOW64, runs faster. But, It failed.
     
  18. TesterMachineOS

    TesterMachineOS MDL Addicted

    Apr 20, 2021
    647
    385
    30
  19. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
  20. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,169
    14,782
    340
    #2220 xinso, Jun 23, 2025
    Last edited: Jun 23, 2025
    [Fact about SystemReset]

    It needs a perfect WinSxS.

    When the WinSxS Store has been unrecoverably corrupt, SystemReset is still useless.

    [Best policy]
    Backup

    Be aware:
    Never tamper manifest, especially deployment manifest, the most easy for a corrupt System.

    Especially this package of all Windows:
    Code:
        <update name="Microsoft-Windows-Foundation-Package">
          <package contained="false" integrate="visible">
            <assemblyIdentity name="Microsoft-Windows-Foundation-Package" version="10.0.26100.1" processorArchitecture="amd64" language="neutral" buildType="release" publicKeyToken="31bf3856ad364e35" />
          </package>
        </update>
    
    It has nothing at all, but a Child package which is nothing at all too.

    Parent package:
    Microsoft-Windows-Foundation-Package
    Child package:
    Microsoft-Windows-Common-Foundation-Package

    After installation.

    Parent package:
    Microsoft-Windows-Common-Foundation-Package
    Child package:
    Microsoft-Windows-Foundation-Package

    The System got unrecoverably corrupt as soon as either of them is removed.

    You can test it on Virtual machine:

    Apply install.wim to disk
    --->
    Remove any of them
    --->
    Boot
    --->
    Press F2 to run Setup (loop)