WinSetupShell is a simple desktop shell (start menu, quick launch toolbar, taskbar, system tray) for Windows PE x64 written in Python that can be used to enhance a regular Windows 11 (or Windows 10 22H2) setup USB drive with a live USB system that can optionally be used for system repair tasks etc., using a comfortable desktop GUI instead of only hacking commands into a CMD prompt. It provides network support (via PENetwork) and a web browser (Firefox), so you can search for documentation or download stuff right from the live USB system, no other PC needed.
WinSetupShell uses the original unaltered Windows PE that comes with the Windows setup, there is no "baking" involved. Windows PE is a reduced Windows OS that provides the basic WinAPI, but no Explorer file manager, and no Explorer-based desktop, therefor such a custom shell/desktop is needed. As file manager a customized version of Explorer++ is used.
The original Windows setup stuff isn't altered in any way, so the USB drive remains a perfectly valid Windows setup media.
WinSetupShell is a simple and easily installed alternative for applications like WinBuilder, Win10XPE, PEBakery etc., which are way too complicate for me ;-)
WinSetupShell desktop - loaded from enhanced Win11 25H2 USB setup media - with various applications running

- Rufus (or some similar tool)
- USB drive (10 GB or larger)
- Use Rufus to download and install a Windows 11 setup .iso of the flavor and language of your choice (I used
Win11_25H2_German_x64.iso) on the USB drive, turning it into a regular Windows 11 setup media. Or let Rufus use a local .iso file that you downloaded before. - Download the lastest
WinSetupShellrelease .7z, unpack it and copy its contents (shell.exeand the 2 foldersshell_dataandprograms) to the root directory of the USB drive. - Done.
Windows 11 setup USB drive created with Rufus, with the 3 additional WinSetupShell items copied to it

WinSetupShell can also be used with a multi-boot USB drive created with Ventoy. In this case just copy shell.exe and the 2 folders shell_data and programs on the Ventoy volume, next to your (Windows setup) .iso files.
Ventoy USB drive with 4 Windows Setup .iso files and the 3 WinSetupShell items

-
Boot from the enhanced Windows 11 setup USB drive. If you want to install Windows on the local PC, continue as usual. But if you instead want to (first) start the live system, see below.
-
When you see the Windows 11 Setup window, press
Shift+F10to open a CMD prompt. -
Enter
D:\shellto start the shell. [*] -
You can quit the shell by right-clicking on the start menu button and selecting "Quit" from the popup menu, you will then return to the naked Windows 11 setup window and can continue the Windows setup. Or select "Reboot" or "Shutdown" in the start menu to reboot resp. shut down the PC.
[*] "D" is a placeholder for the actual drive letter of your USB drive (NOT the drive letter of the booted system, loaded from boot.wim, which AFAIK is always "X"). It will be the first letter, starting at "C", that is not used by existing volumes on your PC. If there are no (valid) volumes with drive letters, it will be "C", in my case it's "D". You can enter echo list vol | diskpart to see a list of all existing volumes and their letters.
Network isn't started by default, so before you can use e.g. Firefox or FileZilla, you first have to initialize it, either by clicking on the network icon in the system tray or selecting PENetwork from the start menu, both do the same thing, they start PENetwork. If you are connected via Ethernet cable and DHCP is available, nothing else is needed, you should now be online.
If you want to start network by default, add line "%programs%\\PENetwork\\PENetwork.exe" to JSON-like config file
shell_data\app_data\startup.pson.
- 7-Zip
- AgentRansack
- BootIce
- Check Disk GUI
- CPU-Z
- Crystal Disk Info
- Defraggler
- DiskGenius
- Drive Snapshot
- EasyUEFI (Trial version)
- Explorer++
- FileZilla
- Firefox
- HWiNFO
- HxD
- IrfanView
- IsoBuster
- Macrium Reflect (Trial version)
- MiniTool Partition Wizard
- NirSoft (suite)
- Notepad++
- PENetwork
- PortableGit (Git Bash, Git CMD)
- PowerShell 7
- Recuva
- Rufus
- Speccy
- SumatraPDF
- SwiftSearch
- Sysinternals Suite
- TestDisk & PhotoRec
- Total Commander (with plugin DiskInternals Reader, which allows to explore Linux and Mac partitions and disk images)
- VeraCrypt (TrueCrypt fork and successor)
- VhdManager
- Windows Login Unlocker
-
WinSetupShell is meant for Windows PE as provided by Windows 11 setup media, but for testing purposes it can also be run inside a regular Windows 11 system. Just unpack the release .7z and start "shell.exe". The shell (desktop) will then run fullscreen on top of the regular Windows desktop. You can quit it by right-clicking on the start menu button and selecting "Quit" from the popup menu.
-
The shell itself, which only uses a couple of words like "Start", "Shutdown" and "Quit", is english only, no localisation (since I don't care). But time and date formats in the clock are localized, and various applications, either by Microsoft or 3rd party, are as well.
-
You can of course save files either on the USB drive or preexisting volumes on the local PC, but there is no persistance concerning registry changes etc. Which is actually a good thing, "boot.wim" is never altered, so you can't mess up the actual installation media (unless you alter it manually e.g. by using included 7-zip, which can load and save .wim files)
-
There is no UAC, you are always user
Administratorwith elevated access. -
No sound/video/multimedia (IMHO pointless for a system repair live system)
-
No 32-bit support, only 64-bit binaries are supported.
-
Only portable x64 applications based on the plain WinAPI can be used, so no .NET, UWP etc.
-
There might be issues with some HiDPI displays.
-
WinSetupShell can also be used with Windows 10 22H2 setup media instead of Windows 11, but not all provided prgrams will work. In particular PortableGit and TestDisk fail in the Windows 10 PE.
Additional compatible (64-bit, portable and WinAPI only) applications can be added to folder programs on the USB drive. Links to them can then be added to the start menu by adding them to JSON-like text file
shell_data\app_data\start_menu.pson
using an arbitrary text editor. The format should be self-explanatory. Like in JSON (or JS or C...), backslashes in pathes have to be doubled. It's important that .exe paths in this file are never absolute (since the drive letter at runtime is not fixed), but instead either start with %programs%\\... or %windir%\\..., which will then be evaluated at runtime.
To add or remove applications to/from the quick launch toolbar, edit text file
shell_data\app_data\quick_launch.pson
accordingly.
Since the Windows PE system doesn't provide persistant icon caching, WinSetupShell uses custom caching to speed up application start. Therefor, whenever you changed something in the start menu or quick launch toolbar, you have to delete the folder shell_data\app_data\icon_cache or its contents on the USB drive. The cache will then be rebuilt when the shell is started for the next time.