From 540e83bed0034887a02eb8f78b56394b12fdf18c Mon Sep 17 00:00:00 2001 From: abbodi1406 <33669284+abbodi1406@users.noreply.github.com> Date: Mon, 13 Feb 2023 03:46:27 +0300 Subject: [PATCH] 20230212 --- ESD2CAB-CAB2ESD/README.md | 1 + ESD2CAB-CAB2ESD/bin/SxSExpand.exe | Bin 0 -> 87552 bytes ESD2CAB-CAB2ESD/esd2cab_CLI.cmd | 9 ++++- ESD2CAB-CAB2ESD/esd2cab_GUI.cmd | 11 +++++- W10UI/README.md | 62 +++++++++++++++--------------- 5 files changed, 47 insertions(+), 36 deletions(-) create mode 100644 ESD2CAB-CAB2ESD/bin/SxSExpand.exe diff --git a/ESD2CAB-CAB2ESD/README.md b/ESD2CAB-CAB2ESD/README.md index 1e49750..b158d73 100644 --- a/ESD2CAB-CAB2ESD/README.md +++ b/ESD2CAB-CAB2ESD/README.md @@ -25,3 +25,4 @@ to get high-compressed solid ESD files (require high amount of CPU/RAM), edit th ## Credits * OnePiece [DXTool](https://ryanvm.net/forum/viewtopic.php?f=7&t=9945) +* Melinda Bellemore [SxSExpand](https://forums.mydigitallife.net/members/superbubble.250156/) diff --git a/ESD2CAB-CAB2ESD/bin/SxSExpand.exe b/ESD2CAB-CAB2ESD/bin/SxSExpand.exe new file mode 100644 index 0000000000000000000000000000000000000000..bd6c0cb36943989c9c1305d38932ee65f8c2c7b2 GIT binary patch literal 87552 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 CAB cd /d "%~dp0" if /i "%PROCESSOR_ARCHITECTURE%" equ "AMD64" (set "arch=x64") else (set "arch=x86") -for %%A in (image%arch%.exe,cabarc.exe) do ( +for %%A in (image%arch%.exe,cabarc.exe,SxSExpand.exe) do ( if not exist "bin\%%A" (set "MESSEGE=%%A is not detected."&goto :fin) ) if not exist "*.esd" (set "MESSEGE=No .esd files detected."&goto :fin) for %%p in ("bin\image%arch%.exe") do set "IMAGEX=%%~fp" for %%p in ("bin\cabarc.exe") do set "CABARC=%%~fp" +for %%p in ("bin\SxSExpand.exe") do set "SXS=%%~fp" set "tempdir=temp%random%" -for /f "delims=" %%i in ('dir /b *.esd') do call :esdcab "%%i" +for /f "delims=" %%i in ('dir /b /a:-d *.esd') do call :esdcab "%%i" set "MESSEGE=Done." goto :fin @@ -30,6 +31,10 @@ echo ============================================================ echo Create: %pack%.cab echo ============================================================ pushd "%tempdir%" +md _sxs +for /f %%a in ('dir /b /a:-d *.manifest') do ("%SXS%" %%a _sxs\%%a >nul) +if exist "_sxs\*.manifest" move /y _sxs\* . >nul +rd /s /q _sxs\ "%CABARC%" -m LZX:21 -r -p N "%~dp0%pack%.cab" *.* >nul SET ERRORTEMP=%ERRORLEVEL% IF %ERRORTEMP% NEQ 0 (set "MESSEGE=Errors were reported during process."&goto :fin) diff --git a/ESD2CAB-CAB2ESD/esd2cab_GUI.cmd b/ESD2CAB-CAB2ESD/esd2cab_GUI.cmd index 626b452..6bdbcae 100644 --- a/ESD2CAB-CAB2ESD/esd2cab_GUI.cmd +++ b/ESD2CAB-CAB2ESD/esd2cab_GUI.cmd @@ -2,14 +2,15 @@ title ESD -^> CAB cd /d "%~dp0" if /i "%PROCESSOR_ARCHITECTURE%" equ "AMD64" (set "arch=x64") else (set "arch=x86") -for %%A in (image%arch%.exe,DXTool_%arch%.exe) do ( +for %%A in (image%arch%.exe,DXTool_%arch%.exe,SxSExpand.exe) do ( if not exist "bin\%%A" (set "MESSEGE=%%A is not detected."&goto :fin) ) if not exist "*.esd" (set "MESSEGE=No .esd files detected."&goto :fin) for %%p in ("bin\image%arch%.exe") do set "IMAGEX=%%~fp" for %%p in ("bin\DXTool_%arch%.exe") do set "DXTOOL=%%~fp" +for %%p in ("bin\SxSExpand.exe") do set "SXS=%%~fp" set "tempdir=temp%random%" -for /f "delims=" %%i in ('dir /b *.esd') do call :esdcab "%%i" +for /f "delims=" %%i in ('dir /b /a:-d *.esd') do call :esdcab "%%i" set "MESSEGE=Done." goto :fin @@ -29,6 +30,12 @@ echo. echo ============================================================ echo Create: %pack%.cab echo ============================================================ +pushd "%tempdir%" +md _sxs +for /f %%a in ('dir /b /a:-d *.manifest') do ("%SXS%" %%a _sxs\%%a >nul) +if exist "_sxs\*.manifest" move /y _sxs\* . >nul +rd /s /q _sxs\ +popd start /HIGH /WAIT "" "%DXTOOL%" /CT "%tempdir%" ren %tempdir%.cab %pack%.cab rd /s /q "%tempdir%" >nul 2>&1 diff --git a/W10UI/README.md b/W10UI/README.md index d2dd189..7fe078e 100644 --- a/W10UI/README.md +++ b/W10UI/README.md @@ -7,18 +7,18 @@ Automated script to install or integrate updates for: ## Features: -* Supported targets: -- Current Online OS -- Offline image (already mounted directory, another partition) -- Distribution folder (extracted iso, copied dvd/usb) -- Distribution Drive (virtual mounted iso, inserted dvd, usb drive) -- WIM file directly (unmounted) - -* Supports having updates in one folder: -- Detect and install servicing stack update first -- Skip installing non-winpe updates for boot.wim/winre.wim (flash, oobe, .net 4.x) -- Skip installing Adobe Flash update for Server Core or if the package is removed -- Handle dynamic updates for setup media 'sources' folder (skip installing it, extract it for distribution target) +* Supported targets: +> Current Online OS +Offline image (already mounted directory, another partition) +Distribution folder (extracted iso, copied dvd/usb) +Distribution Drive (virtual mounted iso, inserted dvd, usb drive) +WIM file directly (unmounted) + +* Supports having updates in one folder: +> Detect and install servicing stack update first +Skip installing non-winpe updates for boot.wim/winre.wim (flash, oobe, .net 4.x) +Skip installing Adobe Flash update for Server Core or if the package is removed +Handle dynamic updates for setup media 'sources' folder (skip installing it, extract it for distribution target) * Enable .NET Framework 3.5 if available source detected, and reinstall Cumulative updates afterwards. valid locations: mounted iso, inserted dvd/usb, sxs folder for distribution target, custom specified folder path @@ -31,9 +31,8 @@ you must run W10UI.cmd at least once after restart to perform Cleanup or Reset O ## Updated ISO recommendation: * Creating updated iso file for a distribution target require either of: -- install Windows ADK -- place oscdimg.exe or cdimage.exe in the same folder next to W10UI.cmd - +> install Windows ADK +place oscdimg.exe or cdimage.exe in the same folder next to W10UI.cmd otherwise, embedded Powershell/.NET funcion `DIR2ISO` will be used to create the iso ## Limitations: @@ -70,45 +69,45 @@ avoid using them with the script and install them manually Press each option corresponding number/letter to change it -1. Target +**1.** Target target windows image, default is current online system if a wim file is available besides the script, it will be detected automatically -2. Updates +**2.** Updates location of updates files -3. DISM +**3.** DISM the path for custom dism.exe required when the current Host OS is lower than Windows NT 10.0 without ADK installed -4. Enable .NET 3.5 +**4.** Enable .NET 3.5 process or skip enabling .NET 3.5 feature -5. Cleanup System Image: YES 6. Reset Image Base: NO +**5.** Cleanup System Image: YES **6.** Reset Image Base: NO in this choice, the OS images will be cleaned and superseded components will be "delta-compressed" safe operation, but might take long time to complete. -5. Cleanup System Image: YES 6. Reset Image Base: YES +**5.** Cleanup System Image: YES **6.** Reset Image Base: YES in this choice, the OS images will be rebased and superseded components will be "removed" quick operation and reduce size further more, but might break "Reset this PC" feature. -7. Update WinRE.wim +**7.** Update WinRE.wim available only if the target is a distribution folder, or WIM file enable or disable updating winre.wim inside install.wim -8. Selected Install.wim indexes +**7.** Selected Install.wim indexes available only if the target is a distribution folder, or WIM file a choice to select specific index(s) to update from install.wim, or all indexes by default -K. Keep indexes +**K.** Keep indexes available only if you selected specific index(s) in above option 8 a choice to only keep selected index(s) when rebuilding install.wim, or keep ALL indexes -M. Mount Directory +**M.** Mount Directory available only if the target is a distribution folder, or WIM file mount directory for updating wim files, default is on the same drive as the script -E. Extraction Directory +**E.** Extraction Directory directory for temporary extracted files, default is on the same drive as the script ## Configuration options (for advanced users): @@ -144,8 +143,7 @@ convert install.wim to install.esd, if the target is a distribution warning: the process will consume very high amount of CPU and RAM resources * wim2swm -split install.wim into multiple install.swm files, if the target is a distribution - +split install.wim into multiple install.swm files, if the target is a distribution note: if both wim2esd/wim2swm are 1, install.esd takes precedence over split install.swm * ISO @@ -172,10 +170,10 @@ the option will also auto exit at the end without prompt * The operation progress will not be shown in this mode * How To: -- edit the script and change set _Debug=0 to 1 -- set main manual options correctly, specially "target" and "repo" -- save and run the script as admin -- wait until command prompt window is closed and W10UI_Debug.log is created +> edit the script and change set _Debug=0 to 1 +set main manual options correctly, specially "target" and "repo" +save and run the script as admin +wait until command prompt window is closed and W10UI_Debug.log is created ## Credits: