Hello, I have a question: will you be building a tool for building 26H2 (26300) from 26100? I'm particularly interested in the GenerateUpdateList.ps1 file.
The option to create 26300 is already included in this latest version. The only thing not being used is the GenerateUpdateList.ps1 script—at least for now.
Good evening SanLion and the guys! Thank you for taking the time to look into this and for the detailed questions. 1 - I have nothing against abbodi1406’s W10UI.cmd. Quite the opposite — I also consider it an excellent and very reliable script, and I have used it for a long time. The reason I’m exploring a different approach is not because I consider W10UI.cmd unreliable. My goal is to integrate the LCU directly into the image while keeping the LCU handling as simple as possible and avoiding unnecessary extraction/repacking steps. 2 - I agree that the main advantage at the moment is execution time, since the LCU only needs to be decompressed once. However, I think there is another benefit: having more direct control over the integration process and making it independent of some of the assumptions made by W10UI.cmd. Of course, this does not eliminate the dependency on Microsoft’s packaging method. If Microsoft changes how LCUs are structured or packaged, the integration logic may also need to be adjusted. That is something I fully agree with. For me, this is more an experiment and an alternative approach rather than an attempt to replace W10UI.cmd. If further testing confirms that it remains reliable across different LCU revisions, I think it could be worth developing further.
Yes, I saw that, that's not what I meant. Well, I've already decided that for myself - thanks! I’ve put together a tool for working with the install.wim image (version 26100) and automatically updating it—based on the user’s selection in the graphical menu—to version 26200 or 26300, or leaving it at 26100. The tool is in .cmd format. It’s been tested and works fine. Right now, I’m working on converting it to a more advanced PowerShell-based approach. As soon as I finish that and test it, I’ll be able to share my work with my colleagues—of course, if anyone is interested.
As I mentioned earlier, the script already gives the user this choice—meaning they can create 26100, 26200, or 26300.
If you have any questions or encounter any errors, please send the log file, as I need to know how you are performing the process.
========================= 2xH2_Creator_17.7 ========================= Update to 26x00.9445 - Adjusted script for integration ndp481 package (unified for 24/25/26H2) - Added an option for the user to choose whether to create 24H2, 25H2 or 26H2 image - Added "EXTRA\Chris_Titus_Tech's_Windows_Utility", recommended for improving performance - Updated "EXTRA\Office 365 ProPlus - Online Installer 3.3.17" tool - Other small adjustments Test with: - pt-br_windows_11_enterprise_ltsc_2024_x64_dvd_2bb6b75b_2.iso - 26100.1742.240909-0928.GE_RELEASE_SVC_REFRESH_CLIENTBUSINESS_VOL_X64FRE_PT-BR.ISO https://forums.mydigitallife.net/th...to-classic-legacy-windows.90039/#post-1872013 Enjoy
Hi everyone. I would like to share a simple method that I use in my particular situation to handle update categories when working with all.txt. As an example, I use L1 and DU for Sources, but the same approach can also be applied in other situations. One problem with integrating updates from all.txt is that some packages need to be temporarily placed in separate folders before integration. In my setup, I use these sections in all.txt to define which updates need to be temporarily moved to separate folders during the integration process. ;L1 windows11.0-kb5043080-x64.msu ;L2 ... ;DU for Sources windows11.0-kb5126056-x64.cab The script downloads everything to UUP as usual. Then it automatically moves the L1 update to UUP\L1 and the DU for Sources package to UUP\DUSources when they are needed. After all integration and re-integration operations are completed, the files are automatically moved back to UUP and the temporary folders are removed. This has one important advantage: the downloaded packages remain in UUP for the next run, so they are not downloaded again. In other words, the folders L1 and DUSources are only temporary working directories. UUP remains the permanent update repository. This also keeps the download logic simple — if a package already exists in UUP, it is skipped. The idea is simple: download once, temporarily move when required, integrate, return to UUP, and reuse on the next run. I think this approach might come in handy for someone. Code: CD /d "%~dp0UUP" If not exist "all.txt" ( echo WARNING! all.txt was not found. echo Skipping download and file list validation. goto SkipDownload ) echo. echo ------------------------------------------------------------ echo Downloading Windows 11 Updates echo ------------------------------------------------------------ For /F "eol=; tokens=1,2*" %%i in (all.txt) do if not exist "%~dp0UUP\%%i" ( echo Downloading: "%%i" curl.exe -f -L -C - -# -o "%%i" "%%j" ) setlocal EnableDelayedExpansion :: Move L1 Update to L1 folder from all.txt If not exist "L1" md "L1" SET "MoveL1=0" SET "L1File=" For /F "usebackq eol=| tokens=1,2,3,*" %%A in ("all.txt") do ( If "!MoveL1!"=="1" ( SET "L1File=%%A" If exist "%%A" move /y "%%A" "L1\" >nul SET "MoveL1=0" ) ELSE ( If /i "%%A"==";L1" set "MoveL1=1" ) ) :: Move DU for Sources to DUSources folder from all.txt If not exist "DUSources" md "DUSources" SET "MoveDU=0" SET "DUFile=" For /F "usebackq eol=| tokens=1,2,3,*" %%A in ("all.txt") do ( If "!MoveDU!"=="1" ( SET "DUFile=%%A" If exist "%%A" move /y "%%A" "DUSources\" >nul SET "MoveDU=0" ) ELSE ( If /i "%%A %%B %%C"==";DU for Sources" set "MoveDU=1" ) ) :: Validate downloaded packages SET "MinSize=102400" SET /a BadFiles=0 SET "DownloadErr=0" for %%f in (*.msu *.esd *.cab *.psf) do ( If exist "%%f" ( If %%~zf lss !MinSize! ( DEL /q /f "%%f" >nul 2>&1 SET /a BadFiles+=1 SET "DownloadErr=1" echo [!BadFiles!] Removed invalid file: %%f ) ) ) :: Check downloaded files from all.txt for /F "eol=; tokens=1,2*" %%i in (all.txt) do ( If /i "%%i"=="!L1File!" ( If not exist "L1\%%i" ( SET "DownloadErr=1" echo [ERROR] Missing file: %%i ) ) ELSE If /i "%%i"=="!DUFile!" ( If not exist "DUSources\%%i" ( SET "DownloadErr=1" echo [ERROR] Missing file: %%i ) ) ELSE ( If not exist "%%i" ( SET "DownloadErr=1" echo [ERROR] Missing file: %%i ) ) ) :: Result If not "!DownloadErr!"=="0" ( echo. echo. echo ERROR! echo Some files have NOT been downloaded correctly! echo Please re-run the script and try again! echo. PAUSE >NUL goto End ) echo. echo All updates have been downloaded. endlocal :SkipDownload Next Mounting image, next Installing update, next Applying tweaks for removal, re-integration, and so on, and finally... Code: :: --- Return L1 and DU for Sources updates to UUP folder --- CD /d "%~dp0UUP" If exist "L1\*" move /y "L1\*" "." >nul If exist "DUSources\*" move /y "DUSources\*" "." >nul If exist "L1" rd /q "L1" >nul 2>&1 If exist "DUSources" rd /q "DUSources" >nul 2>&1 CD /d "%~dp0"
@SunLion Ran this script no issues, all integrated as expected, installed in a VM all good, Thank you!!
@sainfo I'm not anyone that can make decisions here, but I think it would be better for you to start a new thread with your version of windows optimizing tool. I think it will get buried here and people may confuse which tool this thread is about. Just my opinion
Start a new thread? Maybe that would be the right thing to do—the right thing for those who post tools almost every day like they’re hotcakes. They claim to be posting something new, but in reality, it’s just the same thing with minimal changes. Why did I decide to share my work with my friends? Because I haven’t come across anything like this in this field or on this topic. As far as I’m concerned, this is an interesting and promising field, and maybe someone else will find it interesting too. Hmm, but if my presence here with my suggestions in this particular thread bothers or annoys you personally, that’s fine—I can remove my content from this thread. As they say: if you don’t want to eat, go hungry...
Please don't do that! There are a lot of Windows 11 minimization projects that over-lap and repurpose each other's work for more specific outcomes -- as long as everyone is offering their contributions as FOSS, or even better GNU FOSS -- that's the intention as every and anyone that can contribute something unique or more refined, or that fixes specific issues 'raises all boats' as the saying goes. Love what all you guys do, and it is and should remain that the author of any work should get to post it where ever he wants.
sainfo. I also agree with hoak Don't listen to what others say or write about you. Just do what is best for you. I think sharing with others or helping people is beyond some individuals' capabilities; that is likely why they harbor bitterness and try to hinder people like you. It is not at all difficult to distinguish between two or more projects. The more, the better. Just keep up the good work.
Good point! Since it’s such a unique topic, maybe a new thread is just what your project needs to get the spotlight it deserves.