Not to overstep anyone's work, I figured out (or re-invented) how to build this AIO using off-the-shelf parts.
We can do most of this entirely in NTLite, with two tiny scripts.
ISO's
Download the current builds from UUPdump, checked off only Home & Pro editions for simplicity.
EDIT - See new post below about which UUPdump image is right for multi-language.
If you're using official ISO's, remove the other editions and leave only Home & Pro.
Language Packs
Download language packs for both W10 and 11 releases, in each architecture (
handy script). Convert
ESD to CAB.
Keep the W10 & 11 versions in separate folders (don't mix & match).
Code:
Microsoft-Windows-Client-LanguagePack-Package_uk-ua-amd64-uk-ua.cab
Microsoft-Windows-Client-LanguagePack-Package_uk-ua-x86-uk-ua.cab
Microsoft-Windows-LanguageFeatures-Basic-uk-ua-Package-amd64.cab
Microsoft-Windows-LanguageFeatures-Basic-uk-ua-Package-x86.cab
Leave the universal lang AIO for another rainy day.
Integrate Updates
For each edition, load the matching lang files (for W10 or 11, & arch) into
Updates, along with other updates. Integrate as normal.
NTLite runs faster when you're working with smaller, separate WIMs.
Export WIMs
From the W11 image,
Export All images and save them to W10 x64's sources\install.wim (Check
No to Append, instead of overwriting). All four x64 images are in one WIM, both x86 images are in another WIM.
Create Unattend Files
We're making two versions of
autounattend.xml: one for MBR, one for UEFI. Both will be dual-architecture.
Create a new unattend file using MBR layout (doesn't matter which image), and check the menu bar boxes:
- Copy to boot image
- Dual architecture
- Prompt edition selection
Rename
autounattend.xml ->
autounattend_MBR.xml
Repeat for UEFI (or edit XML if you're knowledgeable) ->
autounattend_UEFI.xml
Put as much or as little pre-selected settings as required (default lang choice?)
Multi-Boot Environment
https://superuser.com/questions/948...-iso-with-both-pro-home-and-32-64-bit-flavors
This article says MCT can create a dual-architecture, UEFI/MBR bootable ISO.
Daniel B says why not reuse it instead of creating your own custom ISO. In the article, he links to a base folder you can download (20 MB). Or use MCT, and strip down the ISO yourself (yikes! 7 GB)
In the extracted multi-ISO folder, copy the ENTIRE saved W10 x86 ISO folder to x86 subfolder. Copy the ENTIRE W10 x64 ISO folder to x64 subfolder. When done, we'll have two side-by-side distros.
Code:
MultiIsoBase
+--> boot
+--> efi
+--> x86
| +--> boot
| +--> efi
| +--> sources
| +--> boot.wim
| +--> install.wim
+--> x64
| +--> boot
| +--> efi
| +--> sources
| +--> boot.wim
| +--> install.wim
Modify WinPE Setup
Using the trick highlighted by
Windows deployment lab, Setup will pick which unattend file based on firmware type. Since W10 & 11 Setup are cross-compatible, we only need two files.
Remove \Setup.exe, x86\Setup.exe, x64\Setup.exe and any leftover file named \autounattend.xml.
Copy our autounattend_MBR.xml & autounattend_UEFI.xml to \
Load the x86
boot.wim, go inside and remove \Setup.exe
Rename \sources\setup.exe -> \sources\HIDE_setup.exe
Copy x86_startnet.cmd -> \Windows\System32\startnet.cmd
Apply changes to ISO.
Repeat with x64
boot.wim, and remove \Setup.exe
Rename \sources\setup.exe -> \sources\HIDE_setup.exe
Copy x64_startnet.cmd -> \Windows\System32\startnet.cmd
Apply changes to ISO.
Make sure there's no plain autounattend in either \ or inside both boot.wim's \
And no \Setup.exe inside both boot.wim's
Create the final ISO, using NTLite.
Testing
View attachment 7092
View attachment 7093
- Someone can improve the boot menu timeout to infinite instead of 30 sec. (bcdedit)
- There's a minor pause before Setup loads the select edition screen. The screen flashes with a blank CMD window -- meh.
- Someone could insert a diskpart /s [command file] to run "clean" to wipe partitioning, before calling Setup.
- Windows OOBE seems to want to immediately update some of my fresh installs. Insert the
TargetReleaseVersionInfo reg hack to block this behavior.
I've included example autounattend files, for reference.
When you copy the arch-specific versions of startnet.cmd, rename them to startnet.cmd
The advantage of our setup, is we can replace
install.wim and the
autounattend files separately as drop-in replacements. It can be reused for other AIO projects. Could this be collapsed into one (instead of two) parallel distros? Anything's possible, but this requires zero coding knowledge to deploy. The magic is re-using the reference ISO from MCT's image.
Tested a few combinations (x86/64, MBR/UEFI). Maybe when I have time, I can spin this out into its own thread with more detailed walk-through.
My own contribution is really the scripted Setup /unattend hack.
Hope this benefits everyone.