WimWizard is a PowerShell-based Windows 11 WIM image servicing tool developed for enterprise IT environments. It automates the monthly process of building and maintaining deployment-ready WIM images — injecting language packs, removing unwanted built-in apps, and applying the latest Patch Tuesday updates — all in a single automated run.
A graphical launcher (WimWizard-GUI.ps1) provides a clean interface for configuring and launching the tool without touching the command line.
Inspired by WIM Witch by Donna Ryan.
- Full image build — Services a Windows 11 Enterprise WIM from a source ISO: language packs, FOD packages, cumulative updates (.NET, SafeOS/WinRE), and Appx removal
- Inbox app language fix — Automatically generates and injects a RunOnce script into the Default User profile that reinstalls kept apps via winget at first user logon. This triggers the AppX framework to download the correct language satellites for the user's locale — no task sequence steps required
- Patch mode — Patches an existing serviced WIM with the latest updates only, skipping ISO/LP steps. Ideal for monthly Patch Tuesday cycles
- Automatic update download — Downloads LCU, .NET and SafeOS updates directly from the Microsoft Update Catalog via MSCatalogLTS. Already-downloaded KBs are reused automatically
- Language pack injection — Supports all 39 languages available in the Microsoft LP ISO, including LIPs and FOD packages
- Appx removal — 36 configurable inbox apps with sensible corporate defaults. Fully configurable via GUI
- WinRE patching — Applies SSU + SafeOS updates to WinRE following the Microsoft documented sequence
- ISO validation — GUI shows live ✔/✗ indicators for Windows ISO and Language Pack ISO. Run button hidden until prerequisites are met
- Registry persistence — GUI saves all selections (languages, apps, options) to the registry and restores them on next launch
- Completion screen — GUI minimizes while the build runs, restores and shows a completion screen when done
- ISO version probe — GUI reads the Windows ISO at startup (from filename or by mounting) to display the real build number in the filename preview
- Windows PowerShell 5.1 or later
- Windows 11 Enterprise or Education source ISO (25H2 or later)
- Windows 11 Language Pack ISO (contains all LP + FOD packages — no separate FOD ISO needed)
- Administrator rights, both scripts need to be launched as Admin. (Mount command requires Admin-rights.)
- Internet access for automatic update download (or provide updates manually via
-UpdatePath) - MSCatalogLTS PowerShell module (installed automatically if missing)
| File | Description |
|---|---|
WimWizard.ps1 |
Main servicing script — run directly or via the GUI |
WimWizard-GUI.ps1 |
Graphical launcher — recommended entry point |
WimWizard-AppxList.xml |
Generated by the GUI on Run — custom Appx removal list |
ISO-Source\ |
Place your Windows ISO and Language Pack ISO here |
Updates\ |
Cached update files — reused automatically on subsequent runs |
Output\ |
Default output folder for finished WIM files and build logs |
SetLanguage.zip |
Task sequence steps to set default language for the nordic languages based on input from TSGui or UDI-Wizard |
-
Clone or download this repository to a folder on your servicing machine, e.g.
D:\WimWizard\ -
Download the following from the Microsoft 365 Admin Center:
- Windows 11 Enterprise ISO (
SW_DVD9_Win_Pro_11_25H2_*.ISO) - Language Pack ISO (
SW_DVD9_Win_11_*_LangPack_*.ISO)
- Windows 11 Enterprise ISO (
-
Place both ISOs in the
ISO-Source\folder next to the scripts -
Right-click
WimWizard-GUI.ps1→ Run As Admin
(or launch from an elevated PowerShell session) -
Select your languages, configure app removal, click Run
-
Import the finished WIM into SCCM/MECM:
Software Library → Operating System Images → right-click → Update Distribution Points -
If you are building images often you may want to exclude \WimWizard\Output from Microsoft Defender virus scanning. Otherwise DISM will take twice as long to close the image.
Windows 11 Store-managed inbox apps (Notepad, Calculator, Paint, Photos, Snipping Tool etc.) display in English at first user logon even when language packs are correctly injected into the WIM. This happens because their UI language comes from a language satellite MSIX downloaded by the Store framework at install time — not from OS FODs.
WIM Wizard fixes this automatically during the image build:
- After Appx removal, generates
InstallSystemApps.ps1withwingetreinstall commands for all apps that were kept in the image (not in the removal list) - Copies the script into the WIM at
C:\ProgramData\WimWizard\ - Injects a
RunOnceregistry key intoUsers\Default\NTUSER.DATso the script runs at every new user's first logon - At first logon, the script bootstraps the latest
wingetfrom GitHub, then reinstalls each kept app — the AppX framework automatically downloads the correct language satellites for the user's configured locale
No task sequence modifications needed. The fix is baked into the WIM.
Once you have a baseline image, use patch mode instead of rebuilding from scratch:
Via GUI:
- Options tab → check Patch an existing image
- Browse to your last built WIM
- Languages are read automatically from the WIM
- Click Run — only updates are downloaded and applied
Standalone:
.\WimWizard.ps1 -PatchExistingWim "Output\Win11_25H2_26200.8037_da_fi_no_se_20260310.wim"# Interactive
.\WimWizard.ps1
# Unattended with 4 Nordic languages
.\WimWizard.ps1 -Languages "da,fi,no,se" -Unattended
# Custom source folder and output path
.\WimWizard.ps1 -Languages "da,fi,no,se" -SourceFolder "E:\ISO" -OutputPath "D:\Output\Win11.wim" -Unattended
# Skip updates (language packs and app removal only)
.\WimWizard.ps1 -Languages "da,fi,no,se" -SkipUpdates -Unattended
# With custom Appx list generated by the GUI
.\WimWizard.ps1 -Languages "da,fi,no,se" -AppxListPath "WimWizard-AppxList.xml" -Unattended
# Show all parameters
.\WimWizard.ps1 -HelpUpdate download time varies. Already-downloaded KBs are reused from the Updates\ cache automatically.
| Component | Version |
|---|---|
| WimWizard.ps1 | 4.7.0 |
| WimWizard-GUI.ps1 | 1.7.0 |
| Windows 11 target | 25H2 (26200.x) / 24H2 (26100.x) |
This project is licensed under the GNU General Public License v3.0.
See LICENSE for the full text.
Mathias Haas
For urgent matters: bWF0aGlhcy5oYWFzQGZpZGVsaXR5Y29uc3VsdGluZy5zZQ== (base64)