[GUIDE] [DISCUSSION] Windows Editions Reconstructions

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

  1. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,095
    14,738
    340
    #2201 xinso, Jun 17, 2025 at 03:10
    Last edited: Jun 17, 2025 at 09:41
    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 Junior Member

    Jul 21, 2024
    95
    93
    0
    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,095
    14,738
    340
    #2203 xinso, Jun 17, 2025 at 12:35
    Last edited: Jun 18, 2025 at 06:02
    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,095
    14,738
    340
    #2204 xinso, Jun 18, 2025 at 05:55
    Last edited: Jun 19, 2025 at 03:35
    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,095
    14,738
    340
    #2205 xinso, Jun 19, 2025 at 03:39
    Last edited: Jun 19, 2025 at 04:45
    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,095
    14,738
    340
    #2206 xinso, Jun 19, 2025 at 04:59
    Last edited: Jun 19, 2025 at 06:52
    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,095
    14,738
    340
    #2207 xinso, Jun 19, 2025 at 09:27
    Last edited: Jun 19, 2025 at 11:17
    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,095
    14,738
    340
  9. xinso

    xinso MDL Guru

    Mar 5, 2009
    14,095
    14,738
    340
    #2209 xinso, Jun 19, 2025 at 15:26
    Last edited: Jun 19, 2025 at 16:16
    Not all old device\program is compatible with Windows 11, mate.
     
  10. LiteOS

    LiteOS Windowizer

    Mar 7, 2014
    2,376
    1,086
    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