From 3738b6c03173b8eb4db94b33bf689462fba6dc81 Mon Sep 17 00:00:00 2001 From: abbodi1406 <33669284+abbodi1406@users.noreply.github.com> Date: Sat, 17 Feb 2024 00:35:03 +0300 Subject: [PATCH] 20240216 --- esd-decrypter-wimlib/decrypt.cmd | 271 ++++++++++-------- esd-decrypter-wimlib/multi_arch_iso.cmd | 77 +++-- uup-converter-wimlib/bin/APAP.exe | Bin 4096 -> 4096 bytes uup-converter-wimlib/bin/APAP.txt | 82 ++++++ uup-converter-wimlib/bin/Microsoft.Dism.dll | Bin 56832 -> 59392 bytes uup-converter-wimlib/bin/bootwim.txt | 10 +- uup-converter-wimlib/convert-UUP.cmd | 170 ++++++----- .../create_virtual_editions.cmd | 72 ++--- uup-converter-wimlib/multi_arch_iso.cmd | 76 ++--- 9 files changed, 453 insertions(+), 305 deletions(-) create mode 100644 uup-converter-wimlib/bin/APAP.txt diff --git a/esd-decrypter-wimlib/decrypt.cmd b/esd-decrypter-wimlib/decrypt.cmd index 3e28c35..932be7d 100644 --- a/esd-decrypter-wimlib/decrypt.cmd +++ b/esd-decrypter-wimlib/decrypt.cmd @@ -1,6 +1,6 @@ - + diff --git a/esd-decrypter-wimlib/multi_arch_iso.cmd b/esd-decrypter-wimlib/multi_arch_iso.cmd index 7607a97..8539320 100644 --- a/esd-decrypter-wimlib/multi_arch_iso.cmd +++ b/esd-decrypter-wimlib/multi_arch_iso.cmd @@ -23,15 +23,16 @@ set Preserve=0 set "_Null=1>nul 2>nul" -set quedit= +set qerel= set _elev= -set _args= -set _args=%* +set "_args=" +set "_args=%~1" if not defined _args goto :NoProgArgs if "%~1"=="" set "_args="&goto :NoProgArgs +set "_args=" for %%# in (%*) do ( if /i "%%~#"=="-elevated" (set _elev=1) -if /i "%%~#"=="-qedit" (set quedit=1®.exe add HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f >nul) +if /i "%%~#"=="-qedit" (set qerel=1) ) :NoProgArgs @@ -60,7 +61,6 @@ wmic path Win32_ComputerSystem get CreationClassName /value 2>nul | find /i "Com set _pwsh=1 for %%# in (powershell.exe) do @if "%%~$PATH:#"=="" set _pwsh=0 if not exist "%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" set _pwsh=0 -2>nul %_psc% $ExecutionContext.SessionState.LanguageMode | find /i "Full" 1>nul || set _pwsh=0 if %_cwmi% equ 0 if %_pwsh% EQU 0 goto :E_PWS set _uac=-elevated @@ -70,13 +70,7 @@ set _uac=-elevated if defined _elev goto :E_Admin ) -if not defined quedit reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul || ( -reg.exe add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f >nul -set _uac=-elevated -qedit -) - set _PSarg="""%~f0""" %_uac% -if defined _args set _PSarg="""%~f0""" %_args:"="""% %_uac% set _PSarg=%_PSarg:'=''% (%_Null% cscript //NoLogo "%~f0?.wsf" //job:ELAV /File:"%~f0" %_uac%) && ( @@ -91,6 +85,22 @@ set _PSarg=%_PSarg:'=''% ) :Passed +if %winbuild% LSS 10586 ( +reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul && set qerel=1 +) +if defined qerel goto :skipQE +if %_pwsh% EQU 0 goto :skipQE +set _PSarg="""%~f0""" -qedit +set _PSarg=%_PSarg:'=''% +set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);" +set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);" +set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);" +set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);" +setlocal EnableDelayedExpansion +%_psc% "!d1! !d2! !d3! !d4! & cmd.exe '/c' '!_PSarg!'" &exit /b +exit /b + +:skipQE set "_batf=%~f0" set "_log=%~dpn0" set "_work=%~dp0" @@ -98,11 +108,6 @@ set "_work=%_work:~0,-1%" for /f "skip=2 tokens=2*" %%a in ('reg.exe query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do call set "_dsk=%%b" if exist "%PUBLIC%\Desktop\desktop.ini" set "_dsk=%PUBLIC%\Desktop" setlocal EnableDelayedExpansion -if not defined quedit reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul || ( -reg.exe add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f >nul -start cmd.exe /c ""!_batf!" %* -qedit" -exit /b -) if %_Debug% equ 0 ( set "_Nul1=1>nul" @@ -204,7 +209,7 @@ setlocal DisableDelayedExpansion set _erriso=0 set _iso1= echo %line% -echo Enter / Paste the complete path to 1st ISO file +echo Enter the full path to 1st ISO file echo %line% echo. set /p _iso1= @@ -225,7 +230,7 @@ set _erriso=0 set _iso2= echo. echo %line% -echo Enter / Paste the complete path to 2nd ISO file +echo Enter the full path to 2nd ISO file echo %line% echo. set /p _iso2= @@ -745,7 +750,7 @@ del /f /q "!_fvr1!" "!_fvr2!" "!_fvr3!" "!_fvr4!" %_Nul3% exit /b :checkQE -if not defined quedit reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul || ( +if not defined qerel reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul || ( echo ### WARNING ### echo. echo Console "Quick Edit Mode" is active. @@ -759,9 +764,6 @@ exit /b %_err% echo This script require administrator privileges. echo To do so, right click on this script and select 'Run as administrator' -if "%_uac%"=="-elevated -qedit" ( -reg.exe add HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f >nul -) goto :E_Exit :E_PWS @@ -796,6 +798,7 @@ if exist bin\temp\ rmdir /s /q bin\temp\ if exist ISOx64\ rmdir /s /q ISOx64\ if exist ISOx86\ rmdir /s /q ISOx86\ popd +@color 07 if %_Debug% neq 0 exit /b if defined qmsg echo.&echo %qmsg% echo Press 0 or q to exit. @@ -805,22 +808,18 @@ if errorlevel 1 (exit /b) else (rem.) ----- Begin wsf script ---> - + diff --git a/uup-converter-wimlib/bin/APAP.exe b/uup-converter-wimlib/bin/APAP.exe index d50a2c85a0d862fd25d4446dac3d5ae8d0163f1e..36a2b36bd2d598c8575d89a3280f3b95c8a569dc 100644 GIT binary patch delta 837 zcmZ8fO=wd=5T4!S{l6Ep+4Q9`Mv?~VOHHE{l-3`#V68=iN+}c(D%4PNX-X1AL7P@Z zTa{|u;voeQ@t_E{kX}@jf>#m5ixe6v^r$DrYn>!U(B;j{H{Z>z_9^A$8*P<<`5*>e;B2qR|a~Zp< zrPZRra&DxS8>pqp0c$67VVs+t>ZZk7!q$5emrDl(e06}>9w8q@wcNR=@& zFw9M6GGi`tIJCLB$)vU0y|AjZ8Weqa%`+;Fy2CoDd=oI`F35Szq~(0;4o z!9p%GK9;Z5Iwt|lpp6X;!Ukfz4v6&+4ID-L6a8+{<=(;Y8t@4;1dBshWZc)S0*!+V zC2A8L-ijaYPCDEs+N83m*1RntPzX1#%D z^8BY;djI0h=p*OAY(_lRD$$e#g!npLII^H(d3>E7mI`~Q$Jf{5>m_JJR=;2^|9R-x c7^cug&Z# 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%0DlW$b( zl}x2jcj~1^z1+y9GjNMsEnh3wvXxqrc~o_u-njNEE+bu1;#q4BGzLP=mJLVbNdtH)wn7(663UTdWp% zyxc`}b*)sY7V3p!rjpAy(&fqrFRn}-YT?(3RfIG-Zlm(Eb!eFXzkm4P$!ibvoX?ed z5+|LnS7-0(y=@Q*d>=#`aeYQni*b}4_MemgPhVw$;Wdk8^lsl~;pYm)*2OYe>=#;_ z!F16o^5x~beW!IN80}cBbm}dr`Z{;9Uu!*r3ba+*b~kLfT5NjU-d&xwC#UA@TB9*( zkGJ;yIVr6lWHSvLdn0Y^p0hC!@4*H^8>_h|ZEri)Y)Ts-v)SoJT^{aad+Px0amAH; zCDjQpDJ?z3fu3hx5j%r*Ydo&Yo}03KRZdSZL!Pq&&oe)5d_@YnwFqg(#^C$4&P(^Ffuf5^Oa zTK0_b2cCTb*2MrI@Es~n`hFYNON6vP_?f+q&rPGlqxY=3|JbU-U)b{G8_UilN3L&h z3|O;k&FoBlP3H}44Ho*Y@ouPVCL444^aTW|X{RRs9o71u-gl6){aj~!egPf6r^ne9 zI16Pnb_EGJv@{xWH=`_beifKpD0(Ni_jCV`EP$CJw80NZyPZnO+dN(iUkoSR23*^5 z`+rN`_*Kcb0$4F2ZbpCDg>W6d!*8!|*@#sxBUtOg&sT%5|F@bt1jPOWgeWGz&LloT zTUO)gZMk@m!%@s{}Kfh2G_&5Guwh;E(Unr^H7xw35f&T$( C#i};| literal 56832 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 RlPro / ServerStandard>ServerDatacenter) +:: auto enabled for builds 26000 and later, change to 2 to disable set DisableUpdatingUpgrade=0 :: Change to 1 to update ISO boot files bootmgr/memtest/efisys.bin from Cumulative Update @@ -112,15 +113,16 @@ set "_wrb=" if %DisableWimRebuilds% equ 1 set "_wrb=rem." set _UUP= -set quedit= +set qerel= set _elev= set "_args=" set "_args=%~1" if not defined _args goto :NoProgArgs if "%~1"=="" set "_args="&goto :NoProgArgs +set "_args=" for %%# in (%*) do ( if /i "%%~#"=="-elevated" (set _elev=1 -) else if /i "%%~#"=="-qedit" (set quedit=1®.exe add HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f >nul +) else if /i "%%~#"=="-qedit" (set qerel=1 ) else (set "_args=%%~#") ) @@ -160,13 +162,8 @@ set _uac=-elevated if defined _elev goto :E_Admin ) -if not defined quedit reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul || ( -reg.exe add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f >nul -set _uac=-elevated -qedit -) - set _PSarg="""%~f0""" %_uac% -if defined _args set _PSarg="""%~f0""" %_args:"="""% %_uac% +if defined _args set _PSarg="""%~f0""" """%_args%""" %_uac% set _PSarg=%_PSarg:'=''% (%_Null% cscript //NoLogo "%~f0?.wsf" //job:ELAV /File:"%~f0" %* %_uac%) && ( @@ -181,6 +178,23 @@ set _PSarg=%_PSarg:'=''% ) :Passed +if %winbuild% LSS 10586 ( +reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul && set qerel=1 +) +if defined qerel goto :skipQE +if %_pwsh% EQU 0 goto :skipQE +set _PSarg="""%~f0""" -qedit +if defined _args set _PSarg="""%~f0""" """%_args%""" -qedit +set _PSarg=%_PSarg:'=''% +set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);" +set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);" +set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);" +set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);" +setlocal EnableDelayedExpansion +%_psc% "!d1! !d2! !d3! !d4! & cmd.exe '/c' '!_PSarg!'" &exit /b +exit /b + +:skipQE set "logerr=%~dp0ErrorLog_%random%.txt" set "_batf=%~f0" set "_log=%~dpn0" @@ -202,11 +216,6 @@ call :preVars setlocal EnableDelayedExpansion if exist "!_work!\UUPs\*.esd" set "_UUP=!_work!\UUPs" if defined _args if exist "!_args!\*.esd" set "_UUP=!_args!" -if not defined _args if not defined quedit reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul || ( -reg.exe add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f >nul -start cmd.exe /c ""!_batf!" %* -qedit" -exit /b -) if %_Debug% equ 0 ( set "_Nul1=1>nul" @@ -257,7 +266,7 @@ setlocal DisableDelayedExpansion @cls set _UUP= echo. -echo Enter / Paste the path to UUP source directory +echo Enter the path to UUP source directory echo %_ln1% echo. set /p _UUP= @@ -537,10 +546,12 @@ if %_build% lss 17763 if %AddUpdates% equ 1 (set Cleanup=1) if %_build% geq 22000 ( if %LCUwinre% equ 2 (set LCUwinre=0) else (set LCUwinre=1) ) -:: if %_build% geq 22621 ( -:: if %DisableUpdatingUpgrade% equ 2 (set DisableUpdatingUpgrade=0) else (set DisableUpdatingUpgrade=1) -:: ) -if %_build% geq 25380 if %Cleanup% equ 0 set DisableUpdatingUpgrade=1 +if %_build% geq 25380 ( +if %Cleanup% equ 0 set DisableUpdatingUpgrade=1 +) +if %_build% geq 26000 ( +if %DisableUpdatingUpgrade% equ 2 (set DisableUpdatingUpgrade=0) else (set DisableUpdatingUpgrade=1) +) if %WIMFILE%==install.wim ( if %AddUpdates% neq 1 if %wim2esd% equ 1 (set WIMFILE=install.esd) ) @@ -585,6 +596,8 @@ call :dk_color1 %Blue% "=== Configured Options . . ." 4 5 if %AddUpdates% equ 1 ( if %Cleanup% neq 0 echo Cleanup if %Cleanup% neq 0 if %ResetBase% neq 0 echo ResetBase + if %LCUwinre% neq 0 echo LCUwinre + if %DisableUpdatingUpgrade% neq 0 echo DisableUpdatingUpgrade ) if %AddUpdates% neq 0 if %NetFx3% neq 0 echo NetFx3 if %StartVirtual% neq 0 ( @@ -594,8 +607,6 @@ call :dk_color1 %Blue% "=== Configured Options . . ." 4 5 for %%# in ( SkipISO SkipWinRE - LCUwinre - DisableUpdatingUpgrade UpdtBootFiles wim2esd wim2swm @@ -722,10 +733,12 @@ if %_build% lss 17763 if %AddUpdates% equ 1 (set Cleanup=1) if %_build% geq 22000 ( if %LCUwinre% equ 2 (set LCUwinre=0) else (set LCUwinre=1) ) -:: if %_build% geq 22621 ( -:: if %DisableUpdatingUpgrade% equ 2 (set DisableUpdatingUpgrade=0) else (set DisableUpdatingUpgrade=1) -:: ) -if %_build% geq 25380 if %Cleanup% equ 0 set DisableUpdatingUpgrade=1 +if %_build% geq 25380 ( +if %Cleanup% equ 0 set DisableUpdatingUpgrade=1 +) +if %_build% geq 26000 ( +if %DisableUpdatingUpgrade% equ 2 (set DisableUpdatingUpgrade=0) else (set DisableUpdatingUpgrade=1) +) if %WIMFILE%==install.wim ( if %AddUpdates% neq 1 if %wim2esd% equ 1 (set WIMFILE=install.esd) ) @@ -769,11 +782,11 @@ call :dk_color1 %Blue% "=== Configured Options . . ." 4 5 echo AddUpdates %AddUpdates% if %Cleanup% neq 0 echo Cleanup if %Cleanup% neq 0 if %ResetBase% neq 0 echo ResetBase + if %LCUwinre% neq 0 echo LCUwinre + if %DisableUpdatingUpgrade% neq 0 echo DisableUpdatingUpgrade ) for %%# in ( SkipWinRE - LCUwinre - DisableUpdatingUpgrade wim2esd wim2swm RefESD @@ -938,7 +951,7 @@ if not exist "%_mount%\" mkdir "%_mount%" %_dism1% /Quiet /Mount-Wim /Wimfile:ISOFOLDER\sources\boot.wim /Index:1 /MountDir:"%_mount%" %_Nul3% set ERRTEMP=%ERRORLEVEL% if %ERRTEMP% neq 0 ( -%_dism1% /Image:"%_mount%" /Get-Packages %_Null% +%_dism1% /Image:"%_mount%" /LogPath:"%_dLog%\DismNUL.log" /Get-Packages %_Null% %_dism1% /Unmount-Wim /MountDir:"%_mount%" /Discard %_Nul3% %_dism1% /Cleanup-Wim %_Nul3% rmdir /s /q "%_mount%\" @@ -952,7 +965,7 @@ if !errorlevel! neq 0 ( %_dism1% /Quiet /Unmount-Wim /MountDir:"%_mount%" /Commit set ERRTEMP=%ERRORLEVEL% if %ERRTEMP% neq 0 ( -%_dism1% /Image:"%_mount%" /Get-Packages %_Null% +%_dism1% /Image:"%_mount%" /LogPath:"%_dLog%\DismNUL.log" /Get-Packages %_Null% %_dism1% /Unmount-Wim /MountDir:"%_mount%" /Discard %_Nul3% %_dism1% /Cleanup-Wim %_Nul3% rmdir /s /q "%_mount%\" @@ -1080,6 +1093,10 @@ if exist "!_UUP!\*.*xbundle" set _IPA=1 if exist "!_UUP!\*.appx" set _IPA=1 if exist "!_UUP!\Apps\*_8wekyb3d8bbwe" set _IPA=1 ) +if %_build% geq 22621 if exist "!_UUP!\*Edge*.wim" ( +set _wimEdge=1 +if not exist "!_UUP!\Edge.wim" for /f %%# in ('dir /b /a:-d "!_UUP!\*Edge*.wim"') do rename "!_UUP!\%%#" Edge.wim %_Nul3% +) set _dpx=0 if %_updexist% equ 1 if %_build% geq 22000 if exist "%SysPath%\ucrtbase.dll" if exist "!_UUP!\*DesktopDeployment*.cab" ( if /i %arch%==%xOS% set _dpx=1 @@ -1402,11 +1419,11 @@ if %uLang% equ 1 for %%# in ( "ServerRdsh:%_wtx% Enterprise multi-session" "Starter:%_wtx% Starter" "StarterN:%_wtx% Starter N" -"ServerStandardCore:%_wsr% Standard (Core)" +"ServerStandardCore:%_wsr% Standard" "ServerStandard:%_wsr% Standard (Desktop Experience)" -"ServerDatacenterCore:%_wsr% Datacenter (Core)" +"ServerDatacenterCore:%_wsr% Datacenter" "ServerDatacenter:%_wsr% Datacenter (Desktop Experience)" -"ServerTurbineCore:%_wsr% Datacenter Azure Edition (Core)" +"ServerTurbineCore:%_wsr% Datacenter Azure Edition" "ServerTurbine:%_wsr% Datacenter Azure Edition (Desktop Experience)" "ServerAzureStackHCICor:Azure Stack HCI" ) do for /f "tokens=1,2 delims=:" %%A in ("%%~#") do ( @@ -2134,7 +2151,7 @@ expand.exe -f:*_microsoft-windows-sysreset_*.manifest "!_UUP!\%package%" "!dest! if exist "!dest!\*_microsoft-windows-sysreset_*.manifest" findstr /i /m "Package_for_RollupFix" "!dest!\update.mum" %_Nul3% || (set "_type=[SafeOS DU]"&set uwinpe=1) ) if %_extsafe% equ 1 if not defined _type ( -%_exp% -f:*_microsoft-windows-winpe_tools_*.manifest "!_UUP!\%package%" "!dest!" %_Null% +expand.exe -f:*_microsoft-windows-winpe_tools_*.manifest "!_UUP!\%package%" "!dest!" %_Null% if exist "!dest!\*_microsoft-windows-winpe_tools_*.manifest" findstr /i /m "Package_for_RollupFix" "!dest!\update.mum" %_Nul3% || (set "_type=[SafeOS DU]"&set uwinpe=1) ) if %_extsafe% equ 1 if not defined _type ( @@ -2382,7 +2399,7 @@ if not exist "%mumtarget%\Windows\Servicing\Packages\*WinPE-LanguagePack*.mum" ( reg.exe load HKLM\%SOFTWARE% "%mumtarget%\Windows\System32\Config\SOFTWARE" %_Nul1% if %winbuild% lss 15063 if /i %arch%==arm64 reg.exe add HKLM\%SOFTWARE%\Microsoft\Windows\CurrentVersion\SideBySide /v AllowImproperDeploymentProcessorArchitecture /t REG_DWORD /d 1 /f %_Nul1% if %winbuild% lss 9600 reg.exe add HKLM\%SOFTWARE%\Microsoft\Windows\CurrentVersion\SideBySide /v AllowImproperDeploymentProcessorArchitecture /t REG_DWORD /d 1 /f %_Nul1% -reg.exe save HKLM\%SOFTWARE% "%mumtarget%\Windows\System32\Config\SOFTWARE2" /y %_Nul1% +reg.exe save HKLM\%SOFTWARE% "%mumtarget%\Windows\System32\Config\SOFTWARE2" %_Nul1% reg.exe unload HKLM\%SOFTWARE% %_Nul1% move /y "%mumtarget%\Windows\System32\Config\SOFTWARE2" "%mumtarget%\Windows\System32\Config\SOFTWARE" %_Nul1% ) @@ -2534,7 +2551,7 @@ goto :%_gobk% set _ec=0 set "_ic=%~1" if /i not "!_ic!"=="00000000" if /i not "!_ic!"=="800f081e" if /i not "!_ic!"=="800706be" if /i not "!_ic!"=="800706ba" set _ec=1 -if /i not "!_ic!"=="00000000" if /i not "!_ic!"=="800f081e" if !_ec!==0 %_dism1% %dismtarget% /Get-Packages %_Null% +if /i not "!_ic!"=="00000000" if /i not "!_ic!"=="800f081e" if !_ec!==0 %_dism1% %dismtarget% /LogPath:"%_dLog%\DismNUL.log" /Get-Packages %_Null% goto :eof :errmount @@ -2543,7 +2560,7 @@ set "msgerr=Dism.exe operation failed" call :dk_color1 %Red% "%msgerr%. Discarding . . ." 4 if defined idpkg set "msgerr=Dism.exe failed adding %idpkg% update{s}" (echo.&echo %msgerr%)>>"!logerr!" -%_dism1% %dismtarget% /Get-Packages %_Null% +%_dism1% %dismtarget% /LogPath:"%_dLog%\DismNUL.log" /Get-Packages %_Null% %_dism1% /Unmount-Wim /MountDir:"%_mount%" /Discard %_dism1% /Cleanup-Wim %_Nul3% goto :eof @@ -2925,8 +2942,8 @@ reg.exe add "%_SxsKey%" /f /ve /d %pv_os% %_Nul3% :EndChk if /i %xOS%==x86 if /i not %arch%==x86 ( - reg.exe save HKLM\%SOFTWARE% "%mumtarget%\Windows\System32\Config\SOFTWARE2" /y %_Nul1% - reg.exe query HKLM\%COMPONENTS% %_Nul3% && reg.exe save HKLM\%COMPONENTS% "%mumtarget%\Windows\System32\Config\COMPONENTS2" /y %_Nul1% + reg.exe save HKLM\%SOFTWARE% "%mumtarget%\Windows\System32\Config\SOFTWARE2" %_Nul1% + reg.exe query HKLM\%COMPONENTS% %_Nul3% && reg.exe save HKLM\%COMPONENTS% "%mumtarget%\Windows\System32\Config\COMPONENTS2" %_Nul1% ) reg.exe unload HKLM\%SOFTWARE% %_Nul3% reg.exe unload HKLM\%COMPONENTS% %_Nul3% @@ -3108,13 +3125,20 @@ goto :eof if /i not %_nnn%==winre.wim call :dk_color1 %Gray% "=== Servicing Index: %_inx%" 4 %_dism2%:"!_cabdir!" /Mount-Wim /Wimfile:"%_www%" /Index:%_inx% /MountDir:"%_mount%" if !errorlevel! neq 0 ( -%_dism1% /Image:"%_mount%" /Get-Packages %_Null% +%_dism1% /Image:"%_mount%" /LogPath:"%_dLog%\DismNUL.log" /Get-Packages %_Null% %_dism1% /Unmount-Wim /MountDir:"%_mount%" /Discard %_dism1% /Cleanup-Wim %_Nul3% goto :eof ) if defined isappx goto :doappx +if /i not %_nnn%==winre.wim if %_wimEdge% equ 1 if %SkipEdge% equ 0 ( +call :dk_color1 %Gray% "=== Adding Microsoft Edge . . ." 4 +%_dism2%:"!_cabdir!" /Image:"%_mount%" /LogPath:"%_dLog%\DismEdgeWim.log" /Add-Edge /SupportPath:"!_UUP!" +if !errorlevel! neq 0 ( + (echo.&echo Failed adding Edge.wim)>>"!logerr!" + ) +) if /i not %_nnn%==winre.wim if %_runIPA% equ 1 ( call :dk_color1 %Gray% "=== Adding Apps . . ." 4 5 call :appx_wim @@ -3162,25 +3186,33 @@ if exist "%_mount%\Windows\system32\Facilitator.dll" if not exist "%SystemRoot%\ goto :doProceed :doappx +if %_wimEdge% equ 1 if %SkipEdge% equ 0 ( +call :dk_color1 %Gray% "=== Adding Microsoft Edge . . ." 4 +%_dism2%:"!_cabdir!" /Image:"%_mount%" /LogPath:"%_dLog%\DismEdgeWim.log" /Add-Edge /SupportPath:"!_UUP!" +if !errorlevel! neq 0 ( + (echo.&echo Failed adding Edge.wim)>>"!logerr!" + ) +) call :dk_color1 %Gray% "=== Adding Apps . . ." 4 5 call :appx_wim if %_upgr% equ 1 if %_pmcppc% equ 1 if not exist "%_mount%\Windows\Servicing\Packages\Microsoft-Windows-Printing-PMCPPC-FoD-Package*.mum" call :pmcppcwim :doProceed if %AddDrivers% equ 0 goto :doCommit +if not defined DrvSrcALL if not defined DrvSrcPE if not defined DrvSrcOS goto :doCommit if /i %_nnn%==winre.wim ( if defined DrvSrcALL %_dism2%:"!_cabdir!" %dismtarget% /LogPath:"%_dLog%\DrvWinPE.log" /Add-Driver /Driver:"!DrvSrcALL!" /Recurse if defined DrvSrcPE %_dism2%:"!_cabdir!" %dismtarget% /LogPath:"%_dLog%\DrvWinPE.log" /Add-Driver /Driver:"!DrvSrcPE!" /Recurse goto :doCommit ) -call :dk_color1 %Gray% "=== Adding Drivers . . ." 4 5 +call :dk_color1 %Gray% "=== Adding Drivers . . ." 4 if defined DrvSrcALL %_dism2%:"!_cabdir!" %dismtarget% /LogPath:"%_dLog%\DrvOS.log" /Add-Driver /Driver:"!DrvSrcALL!" /Recurse if defined DrvSrcOS %_dism2%:"!_cabdir!" %dismtarget% /LogPath:"%_dLog%\DrvOS.log" /Add-Driver /Driver:"!DrvSrcOS!" /Recurse :doCommit %_dism2%:"!_cabdir!" /Commit-Wim /MountDir:"%_mount%" if !errorlevel! neq 0 ( -%_dism1% /Image:"%_mount%" /Get-Packages %_Null% +%_dism1% /Image:"%_mount%" /LogPath:"%_dLog%\DismNUL.log" /Get-Packages %_Null% %_dism1% /Unmount-Wim /MountDir:"%_mount%" /Discard %_dism1% /Cleanup-Wim %_Nul3% ) @@ -3223,7 +3255,7 @@ call :dk_color1 %Gray% "=== Creating Edition: Datacenter Core" 4 %_dism2%:"!_cabdir!" /Commit-Image /MountDir:"%_mount%" /Append %_Supp% call set /a _imgi+=1 call set cname="%_wsr% ServerDatacenterCore" -call set dname="%_wsr% Datacenter (Core)" +call set dname="%_wsr% Datacenter" call set ddesc="(Recommended) This option omits most of the Windows graphical environment. Manage with a command prompt and PowerShell, or remotely with Windows Admin Center or other tools." wimlib-imagex.exe info "%_www%" !_imgi! !cname! !cname! --image-property DISPLAYNAME=!dname! --image-property DISPLAYDESCRIPTION=!ddesc! --image-property FLAGS=ServerDatacenterCore %_Nul3% @@ -3319,7 +3351,7 @@ reg.exe add HKLM\%ksub%\%_SxsCfg% /v SupersededActions /t REG_DWORD /d %savr% /f reg.exe add HKLM\%ksub%\%_SxsCfg% /v DisableResetbase /t REG_DWORD /d 1 /f %_Nul1% reg.exe add HKLM\%ksub%\%_SxsCfg% /v SupersededActions /t REG_DWORD /d %savc% /f %_Nul1% ) -if /i %xOS%==x86 if /i not %arch%==x86 reg.exe save HKLM\%ksub% "%mumtarget%\Windows\System32\Config\SOFTWARE2" /y %_Nul1% +if /i %xOS%==x86 if /i not %arch%==x86 reg.exe save HKLM\%ksub% "%mumtarget%\Windows\System32\Config\SOFTWARE2" %_Nul1% reg.exe unload HKLM\%ksub% %_Nul1% if /i %xOS%==x86 if /i not %arch%==x86 move /y "%mumtarget%\Windows\System32\Config\SOFTWARE2" "%mumtarget%\Windows\System32\Config\SOFTWARE" %_Nul1% ) else ( @@ -3533,7 +3565,7 @@ for /f "tokens=3 delims==:" %%# in ('"offlinereg.exe "%mumtarget%\Windows\System if not defined _edtn ( reg.exe load HKLM\OFFSOFT "%mumtarget%\Windows\System32\config\SOFTWARE" %_Nul1% for /f "skip=2 tokens=2*" %%a in ('reg.exe query "HKLM\OFFSOFT\Microsoft\Windows NT\CurrentVersion" /v EditionID') do set "_edtn=%%b" -if /i %xOS%==x86 reg.exe save HKLM\OFFSOFT "%mumtarget%\Windows\System32\Config\SOFTWARE2" /y %_Nul1% +if /i %xOS%==x86 reg.exe save HKLM\OFFSOFT "%mumtarget%\Windows\System32\Config\SOFTWARE2" %_Nul1% reg.exe unload HKLM\OFFSOFT %_Nul1% if /i %xOS%==x86 move /y "%mumtarget%\Windows\System32\Config\SOFTWARE2" "%mumtarget%\Windows\System32\Config\SOFTWARE" %_Nul1% ) @@ -3542,7 +3574,7 @@ if %_appsCustom% neq 0 for /f "eol=# tokens=*" %%a in ('type %_appsFile%') do se set "_appProf=%_appBase%,%_appClnt%,%_appCodec%,%_appMedia%" set "_appProN=%_appBase%,%_appClnt%" set "_appTeam=%_appBase%,%_appCodec%,%_appPPIP%" -set "_appSFull=Microsoft.SecHealthUI%pub%" +set "_appSFull=Microsoft.SecHealthUI%pub%,Microsoft.WindowsTerminal%pub%,Microsoft.DesktopAppInstaller%pub%,Microsoft.WindowsFeedbackHub%pub%" set "_appSCore=" set "_appAzure=" pushd "!_UUP!\Apps" @@ -3581,9 +3613,11 @@ if %winbuild% geq 19040 set _appWay=1 if %_ADK% equ 1 if %apiver% geq 19040 set _appWay=1 if not exist "%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\ngen.exe" set _appWay=0 if %winbuild% LSS 9600 if not exist "%SystemRoot%\servicing\Packages\Microsoft-Windows-PowerShell-WTR-Package~*.mum" set _appWay=0 -if not exist "!_work!\bin\APAP.exe" set _appWay=0 +if not exist "!_work!\bin\APAP.*" set _appWay=0 +set _addFrmk=1 +if exist "%mumtarget%\Windows\Servicing\Packages\Microsoft-Windows-Server*CorEdition~*.mum" if "%_appList%"=="" set _addFrmk=0 del /f /q AppsToAdd.txt %_Null% -if exist "MSIXFramework\*" for /f "tokens=* delims=" %%# in ('dir /b /a:-d "MSIXFramework\*.*x"') do ( +if %_addFrmk% equ 1 if exist "MSIXFramework\*" for /f "tokens=* delims=" %%# in ('dir /b /a:-d "MSIXFramework\*.*x"') do ( if %_appWay% equ 0 ( echo %%~n# %_Nul1% %_dism2%:"!_cabdir!" %dismtarget% /LogPath:"%_dLog%\DismAppx.log" /Add-ProvisionedAppxPackage /PackagePath:"MSIXFramework\%%#" /SkipLicense @@ -3594,13 +3628,15 @@ if exist "MSIXFramework\*" for /f "tokens=* delims=" %%# in ('dir /b /a:-d "MSIX if defined _appList for %%# in (%_appList%) do call :appx_add "%%#" if %_appWay% equ 0 goto :wimappx if not exist "AppsToAdd.txt" goto :wimappx -copy /y "!_work!\bin\APAP.exe" . %_Nul3% +copy /y "!_work!\bin\APAP.*" . %_Nul3% copy /y "!_work!\bin\Microsoft.Dism.dll" . %_Nul3% +:: %_psc% "cd -Lit ($env:__CD__); $f=[IO.File]::ReadAllText('.\APAP.txt') -split ':embed\:.*'; iex ($f[1]); ATA '%_mount%' '%_dLog%\DismAppx.log' '!_cabdir!' %StubAppsFull%" APAP.exe "%_mount%" "%_dLog%\DismAppx.log" "!_cabdir!" "%StubAppsFull%" -del /f /q AppsToAdd.txt APAP.exe Microsoft.Dism.dll %_Nul3% +del /f /q AppsToAdd.txt APAP.* Microsoft.Dism.dll %_Nul3% :wimappx popd if %_appsCustom% neq 0 for /f "eol=# tokens=*" %%a in ('type %_appsFile%') do set "cal_%%a=" +%_dism1% /Image:"%_mount%" /LogPath:"%_dLog%\DismNUL.log" /Get-Packages %_Null% goto :eof :appx_add @@ -3733,6 +3769,7 @@ set _IPA=0 set _runIPA=0 set _appsCustom=0 set _initial=0 +set _wimEdge=0 set "_mount=%_drv%\MountUUP" set "_ntf=NTFS" if /i not "%_drv%"=="%SystemDrive%" if %_cwmi% equ 1 for /f "tokens=2 delims==" %%# in ('"wmic volume where DriveLetter='%_drv%' get FileSystem /value"') do set "_ntf=%%#" @@ -3833,7 +3870,7 @@ if not "%8"=="" echo: exit /b :checkQE -if not defined quedit reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul || ( +if not defined qerel reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul || ( call :dk_color1 %Red% "### WARNING ###" echo. echo Console "Quick Edit Mode" is active. @@ -3847,9 +3884,6 @@ exit /b %_err% echo This script require administrator privileges. echo To do so, right click on this script and select 'Run as administrator' -if "%_uac%"=="-elevated -qedit" ( -reg.exe add HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f >nul -) goto :E_Exit :E_PWS @@ -3927,22 +3961,18 @@ if errorlevel 1 (exit /b) else (rem.) ----- Begin wsf script ---> - + diff --git a/uup-converter-wimlib/create_virtual_editions.cmd b/uup-converter-wimlib/create_virtual_editions.cmd index 61c1590..fbad359 100644 --- a/uup-converter-wimlib/create_virtual_editions.cmd +++ b/uup-converter-wimlib/create_virtual_editions.cmd @@ -1,6 +1,6 @@ - + diff --git a/uup-converter-wimlib/multi_arch_iso.cmd b/uup-converter-wimlib/multi_arch_iso.cmd index ba60ec9..8539320 100644 --- a/uup-converter-wimlib/multi_arch_iso.cmd +++ b/uup-converter-wimlib/multi_arch_iso.cmd @@ -23,15 +23,16 @@ set Preserve=0 set "_Null=1>nul 2>nul" -set quedit= +set qerel= set _elev= -set _args= -set _args=%* +set "_args=" +set "_args=%~1" if not defined _args goto :NoProgArgs if "%~1"=="" set "_args="&goto :NoProgArgs +set "_args=" for %%# in (%*) do ( if /i "%%~#"=="-elevated" (set _elev=1) -if /i "%%~#"=="-qedit" (set quedit=1®.exe add HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f >nul) +if /i "%%~#"=="-qedit" (set qerel=1) ) :NoProgArgs @@ -69,13 +70,7 @@ set _uac=-elevated if defined _elev goto :E_Admin ) -if not defined quedit reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul || ( -reg.exe add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f >nul -set _uac=-elevated -qedit -) - set _PSarg="""%~f0""" %_uac% -if defined _args set _PSarg="""%~f0""" %_args:"="""% %_uac% set _PSarg=%_PSarg:'=''% (%_Null% cscript //NoLogo "%~f0?.wsf" //job:ELAV /File:"%~f0" %_uac%) && ( @@ -90,6 +85,22 @@ set _PSarg=%_PSarg:'=''% ) :Passed +if %winbuild% LSS 10586 ( +reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul && set qerel=1 +) +if defined qerel goto :skipQE +if %_pwsh% EQU 0 goto :skipQE +set _PSarg="""%~f0""" -qedit +set _PSarg=%_PSarg:'=''% +set "d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);" +set "d2=$t.DefinePInvokeMethod('GetStdHandle', 'kernel32.dll', 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);" +set "d3=$t.DefinePInvokeMethod('SetConsoleMode', 'kernel32.dll', 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);" +set "d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);" +setlocal EnableDelayedExpansion +%_psc% "!d1! !d2! !d3! !d4! & cmd.exe '/c' '!_PSarg!'" &exit /b +exit /b + +:skipQE set "_batf=%~f0" set "_log=%~dpn0" set "_work=%~dp0" @@ -97,11 +108,6 @@ set "_work=%_work:~0,-1%" for /f "skip=2 tokens=2*" %%a in ('reg.exe query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do call set "_dsk=%%b" if exist "%PUBLIC%\Desktop\desktop.ini" set "_dsk=%PUBLIC%\Desktop" setlocal EnableDelayedExpansion -if not defined quedit reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul || ( -reg.exe add HKCU\Console /v QuickEdit /t REG_DWORD /d 0 /f >nul -start cmd.exe /c ""!_batf!" %* -qedit" -exit /b -) if %_Debug% equ 0 ( set "_Nul1=1>nul" @@ -203,7 +209,7 @@ setlocal DisableDelayedExpansion set _erriso=0 set _iso1= echo %line% -echo Enter / Paste the complete path to 1st ISO file +echo Enter the full path to 1st ISO file echo %line% echo. set /p _iso1= @@ -224,7 +230,7 @@ set _erriso=0 set _iso2= echo. echo %line% -echo Enter / Paste the complete path to 2nd ISO file +echo Enter the full path to 2nd ISO file echo %line% echo. set /p _iso2= @@ -744,7 +750,7 @@ del /f /q "!_fvr1!" "!_fvr2!" "!_fvr3!" "!_fvr4!" %_Nul3% exit /b :checkQE -if not defined quedit reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul || ( +if not defined qerel reg.exe query HKCU\Console /v QuickEdit 2>nul | find /i "0x0" >nul || ( echo ### WARNING ### echo. echo Console "Quick Edit Mode" is active. @@ -758,9 +764,6 @@ exit /b %_err% echo This script require administrator privileges. echo To do so, right click on this script and select 'Run as administrator' -if "%_uac%"=="-elevated -qedit" ( -reg.exe add HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f >nul -) goto :E_Exit :E_PWS @@ -795,6 +798,7 @@ if exist bin\temp\ rmdir /s /q bin\temp\ if exist ISOx64\ rmdir /s /q ISOx64\ if exist ISOx86\ rmdir /s /q ISOx86\ popd +@color 07 if %_Debug% neq 0 exit /b if defined qmsg echo.&echo %qmsg% echo Press 0 or q to exit. @@ -804,22 +808,18 @@ if errorlevel 1 (exit /b) else (rem.) ----- Begin wsf script ---> - +