@abbodi1406 It would be great to be able to choose which appx to edit in the iso as it is in the CustomAppsList.txt. Would it be possible to add also being able to choose these applications: Code: Microsoft-OneCore-ApplicationModel-Sync-Desktop-FOD-Package-amd64 Microsoft-Windows-Hello-Face-Migration-Package-amd64_a6d01b85 Microsoft-Windows-Hello-Face-Package-amd64_14ae581f Microsoft-Windows-InternetExplorer-Optional-Package-amd64_3a44e27a Microsoft-Windows-LanguageFeatures-Basic-en-us-Package-amd64_94088bee Microsoft-Windows-LanguageFeatures-Handwriting-pt-br-Package-amd64_aa5d881e Microsoft-Windows-LanguageFeatures-OCR-en-us-Package-amd64_aa4b6432 Microsoft-Windows-LanguageFeatures-Speech-en-us-Package-amd64_4b63ef09 Microsoft-Windows-LanguageFeatures-TextToSpeech-en-us-Package-amd64 Microsoft-Windows-MediaPlayer-Package-amd64_e1706f9d Microsoft-Windows-PowerShell-ISE-FOD-Package-amd64 Microsoft-Windows-Printing-PMCPPC-FoD-Package-amd64_f08e5cde Microsoft-Windows-Printing-WFS-FoD-Package-amd64 Microsoft-Windows-QuickAssist-Package-amd64 Microsoft-Windows-StepsRecorder-Package-amd64_079b54fe Microsoft-Windows-TabletPCMath-Package-amd64_107597c5 Microsoft-Windows-UserExperience-Desktop-Package-amd64 Microsoft-Windows-WordPad-FoD-Package-amd64
@bala1 You cannot pick and choose FODs from UUP files set, all of them are already pre-built into install.wim and required for conversion
and the others?? Code: Microsoft-Windows-Hello-Face-Migration-Package-amd64_a6d01b85 Microsoft-Windows-Hello-Face-Package-amd64_14ae581f Microsoft-Windows-InternetExplorer-Optional-Package-amd64_3a44e27a Microsoft-Windows-MediaPlayer-Package-amd64_e1706f9d Microsoft-Windows-QuickAssist-Package-amd64 Microsoft-Windows-StepsRecorder-Package-amd64_079b54fe Microsoft-Windows-TabletPCMath-Package-amd64_107597c5 Microsoft-Windows-UserExperience-Desktop-Package-amd64 I just want to say that your script is sensational. thanks
@Enthousiast Code: ============================================================ Unmount install.wim - index 6/6 ============================================================ Deployment Image Servicing and Management tool Version: 10.0.19041.844 Image File : D:\win11\W10MUI\_DVD\sources\install.wim Image Index : 6 Saving image [==========================100.0%==========================] Unmounting image [==========================100.0%==========================] The operation completed successfully. ============================================================ Mount boot.wim - index 1/2 ============================================================ Deployment Image Servicing and Management tool Version: 10.0.19041.844 Mounting image [==========================100.0%==========================] The operation completed successfully. ============================================================ Unmount boot.wim - index 1/2 ============================================================ Deployment Image Servicing and Management tool Version: 10.0.19041.844 Image File : D:\win11\W10MUI\_DVD\sources\boot.wim Image Index : 1 Saving image [==========================100.0%==========================] Unmounting image [==========================100.0%==========================] The operation completed successfully. ============================================================ Mount boot.wim - index 2/2 ============================================================ Deployment Image Servicing and Management tool Version: 10.0.19041.844 Mounting image [==========================100.0%==========================] The operation completed successfully. ============================================================ Add language files to boot.wim - index 2 ============================================================ bg-BG ============================================================ Unmount boot.wim - index 2/2 ============================================================ Deployment Image Servicing and Management tool Version: 10.0.19041.844 Image File : D:\win11\W10MUI\_DVD\sources\boot.wim Image Index : 2 Saving image [==========================100.0%==========================] Unmounting image [==========================100.0%==========================] The operation completed successfully. ============================================================ Rebuild boot.wim ============================================================ Deployment Image Servicing and Management tool Version: 10.0.19041.844 Exporting image [==========================100.0%==========================] Exporting image [==========================100.0%==========================] The operation completed successfully. The WinPE cabs don't seem to get integrated. I've taken those from Windows_InsiderPreview_LangPack_22621.iso.
You need to change set WINPEPATH= and add the path for WinPE folder in the picture or install adkwinpeaddons.iso maybe i can enhance WINPEPATH to be detected automatically
@abbodi1406, Why is this command present in the cleaning of "Mount Points" in "Remove_Failure_MountDir.cmd" script? What does Get-Packages assist in this case? Code: :CLN dism.exe /English /Image:"%_mount%" /Get-Packages %_Null%
Maybe related to this: https://forums.mydigitallife.net/th...channel-ni_release.85327/page-31#post-1739143 ? For unloading registry hives.
This makes full sense, since if there is a Hive loaded/mounted related to some Mount Point, the Dism cannot make the discard and unmount the image mount point.
Ok, still didn't work. I redid the .1 uupdump iso once with its own boot.wim and once with insider preview iso boot.wim. The cabs get integrated, sure, but the installer is still not fully translated. Maybe more like 30% translated. x) @Enthousiast I don't have adk installed, and frankly I think it defeats the purpose of custom winpepath= where I have all those cabs I showed earlier..
I always install the ADK/winpe addons for the build i integrate languages (i only do this for testing).
@abbodi1406, Just to inform bugs... source ISOs 18363.2274.220429-2350.19H2_RELEASE_SVC_PROD1_CLIENTMULTI_X86FRE_PT-BR.ISO 18363.2274.220430-0706.19H2_RELEASE_SVC_PROD1_CLIENTMULTI_X64FRE_PT-BR.ISO There is an ISO nomenclature error when we select 1 - Create ISO with 1 combined install .wim/.esd. Supposedly should go out with that name: 18363.2274.160101.1909_RELEASE_CLIENTMULTI_OEMRET_X86-X64FRE_PT-BR.ISO But go out with this one. 18362.1.160101.19H1_RELEASE_CLIENTMULTI_OEMRET_X86-X64FRE_PT-BR.ISO I found some folder removal commands that are like some who have already given me a headache here in another script I made, in which when testing the variable was empty and deleted the test folder. I find it interesting as a security factor, put an if defined ISOdir or if "%ISOdir%" neq "" if "%ISOdir%" neq "\" from: Code: if exist %ISOdir%\ rmdir /s /q %ISOdir%\ to: Code: if "%ISOdir%" neq "" if "%ISOdir%" neq "\" if exist "%ISOdir%\" rmdir /s /q "%ISOdir%" from: Code: if exist %ISOdir1%\ rmdir /s /q %ISOdir1%\ to: Code: if "%ISOdir1%" neq "" if "%ISOdir1%" neq "\" if exist "%ISOdir1%\" rmdir /s /q "%ISOdir1%" from: Code: if exist %ISOdir2%\ rmdir /s /q %ISOdir2%\ to: Code: if "%ISOdir2%" neq "" if "%ISOdir2%" neq "\" if exist "%ISOdir2%\" rmdir /s /q "%ISOdir2%" from: Code: if exist "!_cabdir!\" rmdir /s /q "!_cabdir!\" to: Code: if "!_cabdir!" neq "" if "!_cabdir!" neq "\" if exist "!_cabdir!\" rmdir /s /q "!_cabdir!" from: Code: if exist "%_mount%\" rmdir /s /q "%_mount%\" to: Code: if "%_mount%" neq "" if "%_mount%" neq "\" if exist "%_mount%\" rmdir /s /q "%_mount%" %_Null% from: Code: rmdir /s /q %_dst%\ to: Code: if "%_dst%" neq "" if "%_dst%" neq "\" if exist "%_dst%\" rmdir /s /q "%_dst%" from: Code: rmdir /s /q %packn% to: Code: if "%packn%" neq "" if "%packn%" neq "\" if exist "%packn%\" rmdir /s /q "%packn%" from: Code: rmdir /s /q "%pkgn%\" to: Code: if "%pkgn%" neq "" if "%pkgn%" neq "\" if exist "%pkgn%\" rmdir /s /q "%pkgn%" from: Code: if exist "!dest!\" rmdir /s /q "!dest!\" to: Code: if "!dest!" neq "" if "!dest!" neq "\" if exist "!dest!\" rmdir /s /q "!dest!" from: Code: rmdir /s /q "!dest!\" %_Nul3% to: Code: if "!dest!" neq "" if "!dest!" neq "\" if exist "!dest!\" rmdir /s /q "!dest!" It is interesting to implement: Code: call : RemoveFolder "%FolderPath%" :RemoveFolder if "%~1" neq "" if "%~1" neq "\" if exist "%~1\" rd /S /Q "%~1" >nul goto :EOF This is a problem only for requesting folder deletion through alone variables as path. If we make any errors and the variable is empty... my testimonial below. After all, if the variable is empty the removal command will be... RMDIR /S /Q \ And, this is tragedy! Depending on the work drive, it erases the whole root. In SSD it was a flash and deleted everything. I went crazy with that. Good thing I didn't have much without backup, from 32gb, only 8 txt and script files. But may this serve as a testimonial so that it does not happen to anyone. Another thing... Remember that I made a scheme for your scripts I customize, so that I could select the isos with PowerShell command with Out-GridView? I converted to the natural mode, completely CLI mode. I optimized at Multiarch, because I use the nomenclatures of my isos with x86-32 and x86-64 or x86_32 and x86_64, this is a mania when I used a lot of Linux. from: Code: dir /b /ad *_x64* %_Nul3% && for /f "tokens=* delims=" %%# in ('dir /b /ad *_x64*') do ( if exist "%%~#\sources\install.wim" set _dir64=1&set "ISOdir1=%%#" if exist "%%~#\sources\install.esd" set _dir64=1&set "ISOdir1=%%#" if exist "%%~#\sources\install.swm" set _dir64=1&set "ISOdir1=%%#" ) if %_dir64% equ 0 dir /b /ad *_amd64* %_Nul3% && for /f "tokens=* delims=" %%# in ('dir /b /ad *_amd64*') do ( if exist "%%~#\sources\install.wim" set _dir64=1&set "ISOdir1=%%#" if exist "%%~#\sources\install.esd" set _dir64=1&set "ISOdir1=%%#" if exist "%%~#\sources\install.swm" set _dir64=1&set "ISOdir1=%%#" ) dir /b /ad *_x86* %_Nul3% && for /f "tokens=* delims=" %%# in ('dir /b /ad *_x86*') do ( if exist "%%~#\sources\install.wim" set _dir86=1&set "ISOdir2=%%#" if exist "%%~#\sources\install.esd" set _dir86=1&set "ISOdir2=%%#" if exist "%%~#\sources\install.swm" set _dir86=1&set "ISOdir2=%%#" ) if %_dir86% equ 0 dir /b /ad *_x32* %_Nul3% && for /f "tokens=* delims=" %%# in ('dir /b /ad *_x32*') do ( if exist "%%~#\sources\install.wim" set _dir86=1&set "ISOdir2=%%#" if exist "%%~#\sources\install.esd" set _dir86=1&set "ISOdir2=%%#" if exist "%%~#\sources\install.swm" set _dir86=1&set "ISOdir2=%%#" ) if %_dir64% equ 1 if %_dir86% equ 1 goto :DUALMENU if not exist "*.iso" goto :noiso dir /b /a:-d *_x64*.iso %_Nul3% && ( set _iso64=1 for /f "tokens=* delims=" %%# in ('dir /b /a:-d *_x64*.iso') do set "ISOfile1=%%#" ) if %_iso64% equ 0 dir /b /a:-d *_amd64*.iso %_Nul3% && ( set _iso64=1 for /f "tokens=* delims=" %%# in ('dir /b /a:-d *_amd64*.iso') do set "ISOfile1=%%#" ) dir /b /a:-d *_x86*.iso %_Nul3% && ( set _iso86=1 for /f "tokens=* delims=" %%# in ('dir /b /a:-d *_x86*.iso') do set "ISOfile2=%%#" ) if %_iso86% equ 0 dir /b /a:-d *_x32*.iso %_Nul3% && ( set _iso86=1 for /f "tokens=* delims=" %%# in ('dir /b /a:-d *_x32*.iso') do set "ISOfile2=%%#" ) if %_iso64% equ 1 if %_iso86% equ 1 goto :DUALMENU :noiso setlocal DisableDelayedExpansion :prompt1 @cls set _erriso=0 set _iso1= echo %line% echo Enter / Paste the complete path to 1st ISO file echo %line% echo. set /p _iso1= if not defined _iso1 (set _Debug=1&goto :QUIT) set "_iso1=%_iso1:"=%" if not exist "%_iso1%" set _erriso=1 if /i not "%_iso1:~-4%"==".iso" set _erriso=1 if %_erriso% equ 1 ( echo. echo %_err% echo Specified path is not a valid ISO file echo. echo Press any key to continue... pause >nul goto :prompt1 ) :prompt2 set _erriso=0 set _iso2= echo. echo %line% echo Enter / Paste the complete path to 2nd ISO file echo %line% echo. set /p _iso2= if not defined _iso2 (set _Debug=1&goto :QUIT) set "_iso2=%_iso2:"=%" if not exist "%_iso2%" set _erriso=1 if /i not "%_iso2:~-4%"==".iso" set _erriso=1 if %_erriso% equ 1 ( echo. echo %_err% echo Specified path is not a valid ISO file echo. echo Press any key to continue... pause >nul @cls goto :prompt2 ) echo "%_iso1%"| findstr /I /C:"x64" 1>nul && (set _iso64=1&set "ISOfile1=%_iso1%") if %_iso64% equ 0 echo "%_iso1%"| findstr /I /C:"amd64" 1>nul && (set _iso64=1&set "ISOfile1=%_iso1%") echo "%_iso1%"| findstr /I /C:"x86" 1>nul && (set _iso86=1&set "ISOfile2=%_iso1%") if %_iso86% equ 0 echo "%_iso1%"| findstr /I /C:"x32" 1>nul && (set _iso86=1&set "ISOfile2=%_iso1%") echo "%_iso2%"| findstr /I /C:"x64" 1>nul && (set _iso64=1&set "ISOfile1=%_iso2%") if %_iso64% equ 0 echo "%_iso2%"| findstr /I /C:"amd64" 1>nul && (set _iso64=1&set "ISOfile1=%_iso2%") echo "%_iso2%"| findstr /I /C:"x86" 1>nul && (set _iso86=1&set "ISOfile2=%_iso2%") if %_iso86% equ 0 echo "%_iso2%"| findstr /I /C:"x32" 1>nul && (set _iso86=1&set "ISOfile2=%_iso2%") to: Code: for /f "tokens=*" %%# in ('dir /B /AD "*.*" ^| findstr.exe /I /V "x86-32 x86_32" ^| findstr.exe /I "x86 x64 amd64"') do ( if exist "%%~#\sources\install.wim" set _dir64=1&set "ISOdir1=%%#" if exist "%%~#\sources\install.esd" set _dir64=1&set "ISOdir1=%%#" if exist "%%~#\sources\install.swm" set _dir64=1&set "ISOdir1=%%#" ) for /f "tokens=*" %%# in ('dir /B /AD "*.*" ^| findstr.exe /I /V "x86-64 x86_64" ^| findstr.exe /I "x86 x32"') do ( if exist "%%~#\sources\install.wim" set _dir86=1&set "ISOdir2=%%#" if exist "%%~#\sources\install.esd" set _dir86=1&set "ISOdir2=%%#" if exist "%%~#\sources\install.swm" set _dir86=1&set "ISOdir2=%%#" ) if %_dir64% equ 1 if %_dir86% equ 1 goto :DUALMENU if not exist "*.iso" goto :prompt for /f "tokens=*" %%# in ('dir /B /A-D "*.iso" ^| findstr.exe /I /V "x86-32 x86_32" ^| findstr.exe /I "x86 x64 amd64"') do ( set "ISOfile1=%%#" set _iso64=1 ) for /f "tokens=*" %%# in ('dir /B /A-D "*.iso" ^| findstr.exe /I /V "x86-64 x86_64" ^| findstr.exe /I "x86 x32"') do ( set "ISOfile2=%%#" set _iso86=1 ) if %_iso64% equ 1 if %_iso86% equ 1 goto :DUALMENU :prompt if "!exitCount!" equ "" cls set _erriso=0 set _iso1= set _iso2= echo %line% set ISOpath= set /p "ISOpath=Enter/Paste the complete path to your ISO folder : " if exist "%ISOpath%\*.iso" ( echo. echo %line% echo. echo.Select the two ISO files you want to merge. echo. set /A count=1 for /f "tokens=*" %%# in ('dir /B /A-D "%ISOpath%\*.iso"') do ( if !count! geq 1 if !count! leq 9 set "OptionID= !count!" if !count! gtr 9 if !count! leq 99 set "OptionID=!count!" set "InstallMediaSourceID_%%#=!count!" if "!InstallMediaSourceID_%%#!" neq "" ( echo.[!OptionID!] %%# set /A count+=1 ) ) echo. echo. Note: You can make the multiple ISO selection. Ex: 1 2 or 5,6 or 9;10 echo. spaces ^(obviously^), comas and semi colons will be read by echo. CMD compiler as ^<SPACE^> so use the one or everyone you want. echo. echo. echo. [S] To Set another ISO path. echo. echo. echo %line% echo. set /p "MenuChoice=Enter Your Choice : " set /A ISOcount=0 for %%c in (!MenuChoice!) DO ( if /I "%%c" equ "S" goto :prompt for /f "tokens=*" %%# in ('dir /B /A-D "%ISOpath%\*.iso"') do ( if "%%c" equ "!InstallMediaSourceID_%%#!" ( set /A ISOcount+=1 if !ISOcount! leq 2 set "ISOfilepath!ISOcount!=%ISOpath%\%%~#" ) ) ) ) else ( echo There are no ISOs or folder is not found. echo. echo Press any key to continue... pause >nul goto :prompt ) if "!exitCount!" equ "" set /A exitCount=0 for /L %%i in (1 1 2) do ( if "!ISOfilepath%%i!" equ "" ( set /A exitCount+=1 if !exitCount! equ 5 ( goto :QUIT ) ) set "_iso%%i=!ISOfilepath%%i:"=!" echo.Image File Path and Name: "!_iso%%i!" if not exist "!_iso%%i!" set "_erriso=1" ) if "%_erriso%" equ "1" ( echo. echo %_err% echo Specified path is not a valid ISO file echo. echo Press any key to continue... pause >nul goto :prompt ) setlocal DisableDelayedExpansion echo "%_iso1%"| findstr.exe /I /V "x86-32 x86_32" | findstr.exe /I "x86 x64 amd64" 1>nul && (set _iso64=1&set "ISOfile1=%_iso1%") echo "%_iso2%"| findstr.exe /I /V "x86-32 x86_32" | findstr.exe /I "x86 x64 amd64" 1>nul && (set _iso64=1&set "ISOfile1=%_iso2%") echo "%_iso1%"| findstr.exe /I /V "x86-64 x86_64" | findstr.exe /I "x86 x32" 1>nul && (set _iso86=1&set "ISOfile2=%_iso1%") echo "%_iso2%"| findstr.exe /I /V "x86-64 x86_64" | findstr.exe /I "x86 x32" 1>nul && (set _iso86=1&set "ISOfile2=%_iso2%") For the menu, the user only needs to identify the ISOs folder, not the full path with the file name. The prompt Label is longer because it creates a menu to select the ISOs and because the promp1 and prompt2 are merged. The parts that search for ISO folders and ISO files and the part that set ISOfile1 and ISOfile2 variables, had their code optimized. EDIT: I took a test here that didn't take the ISO path correctly: I changed to: Code: if !ISOcount! leq 2 set "ISOfilepath!ISOcount!=%ISOpath%\%%~#"
@abbodi1406, And from this: Code: for /f "tokens=*" %%# in ('dir /B /AD "*.*" ^| findstr.exe /I /V "x86-32 x86_32" ^| findstr.exe /I "x86 x64 amd64"') do ( if exist "%%~#\sources\install.wim" set _dir64=1&set "ISOdir1=%%#" if exist "%%~#\sources\install.esd" set _dir64=1&set "ISOdir1=%%#" if exist "%%~#\sources\install.swm" set _dir64=1&set "ISOdir1=%%#" ) for /f "tokens=*" %%# in ('dir /B /AD "*.*" ^| findstr.exe /I /V "x86-64 x86_64" ^| findstr.exe /I "x86 x32"') do ( if exist "%%~#\sources\install.wim" set _dir86=1&set "ISOdir2=%%#" if exist "%%~#\sources\install.esd" set _dir86=1&set "ISOdir2=%%#" if exist "%%~#\sources\install.swm" set _dir86=1&set "ISOdir2=%%#" ) to: Code: for /f "tokens=*" %%# in ('dir /B /AD "*.*" ^| findstr.exe /I /V "x86-32 x86_32" ^| findstr.exe /I "x86 x64 amd64"') do ( if exist "%%~#\sources\install.*" ( set "ISOdir1=%%#" set _dir64=1 ) ) for /f "tokens=*" %%# in ('dir /B /AD "*.*" ^| findstr.exe /I /V "x86-64 x86_64" ^| findstr.exe /I "x86 x32"') do ( if exist "%%~#\sources\install.*" ( set "ISOdir2=%%#" set _dir86=1 ) ) That way it will work right. But I would like to know if it can be optimized in this way or modifying these structure, so will intervene in your future plans for this script?
@abbodi1406 , @inTerActionVRI , multi_arch_iso.cmd in uup-converter-wimlib is not working properly. When running multi_arch_iso.cmd, the automatic privilege escalation works normally, but after UAC approval, it crashes and no window is displayed. The version where this problem occurs is this script that is included in all versions starting from 79f, and only this script that multi_arch_iso.cmd does not work properly, other scripts work without any problems. 79 and earlier versions of this script work fine.