Build customized Windows installation media using UUP Dump and DISM, including bloatware removal, driver injection, feature configuration, and unattended installation.

Table of Contents#

  1. Overview
  2. Building a Custom Windows ISO
  3. Customizing the Image with DISM
  4. Creating a Bootable USB
  5. Unattended Installation
  6. LTSC Editions
  7. Troubleshooting
  8. See Also
  9. Sources

1. Overview#

Creating a custom Windows image allows you to pre-configure installations with specific drivers, features, updates, and application removals. This is useful for:

  • Enterprise deployment - standardized images across an organization
  • Bloatware removal - strip pre-installed apps before deployment
  • Driver injection - include hardware-specific drivers in the installation media
  • Offline updates - slipstream security patches into the image
  • Unattended installation - automate the entire setup process

The primary tools involved are:

  • UUP Dump - download Windows installation files directly from Microsoft servers
  • DISM (Deployment Image Servicing and Management) - mount, modify, and save WIM/ESD images
  • Windows SIM (System Image Manager) - create answer files for unattended installations

2. Building a Custom Windows ISO#

Using UUP Dump#

UUP Dump allows you to download the latest Windows Unified Update Platform files and create a custom ISO.

  1. Visit uupdump.net
  2. Select the desired Windows version and architecture
  3. Choose the edition(s) to include (e.g., Pro, Enterprise, LTSC)
  4. Download the build script package
  5. Run the script to build the ISO:
# On Windows - run the downloaded script
.\uup_download_windows.cmd
# On Linux - install dependencies and run
sudo apt install aria2 cabextract wimtools chntpw genisoimage
chmod +x uup_download_linux.sh
./uup_download_linux.sh

Note: The ISO will be created in the same directory as the script. Build time depends on your internet connection speed and the number of editions included.

Alternative: Media Creation Tool#

For standard ISOs without customization, use the official Media Creation Tool.

3. Customizing the Image with DISM#

Mount the Install Image#

# Create mount directory
mkdir C:\mount

# List available editions in the WIM
DISM /Get-WimInfo /WimFile:D:\sources\install.wim

# Mount the desired edition (e.g., index 6 = Pro)
DISM /Mount-Wim /WimFile:D:\sources\install.wim /Index:6 /MountDir:C:\mount

Note: If the source file is install.esd instead of install.wim, export to WIM first: DISM /Export-Image /SourceImageFile:D:\sources\install.esd /SourceIndex:6 /DestinationImageFile:C:\install.wim /Compress:max

Remove Bloatware / Provisioned Apps#

# List provisioned appx packages
DISM /Image:C:\mount /Get-ProvisionedAppxPackages | Select-String "PackageName"

# Remove specific apps (e.g., Xbox, Bing)
DISM /Image:C:\mount /Remove-ProvisionedAppxPackage /PackageName:Microsoft.XboxApp_1.0.0.0_neutral_~_8wekyb3d8bbwe
DISM /Image:C:\mount /Remove-ProvisionedAppxPackage /PackageName:Microsoft.BingWeather_1.0.0.0_neutral_~_8wekyb3d8bbwe

Common apps to remove:

Package PatternDescription
Microsoft.Xbox*Xbox apps and Game Bar
Microsoft.Bing*Bing News, Weather, Finance
Microsoft.GetHelpGet Help app
Microsoft.MicrosoftSolitaireCollectionSolitaire games
Microsoft.PeoplePeople app
Microsoft.WindowsFeedbackHubFeedback Hub
Microsoft.ZuneMusicGroove Music / Media Player legacy
Clipchamp.ClipchampClipchamp video editor

Add Drivers#

# Add a single driver
DISM /Image:C:\mount /Add-Driver /Driver:C:\drivers\network.inf

# Add all drivers from a folder recursively
DISM /Image:C:\mount /Add-Driver /Driver:C:\drivers /Recurse

# Verify added drivers
DISM /Image:C:\mount /Get-Drivers

Enable or Disable Features#

# List available features
DISM /Image:C:\mount /Get-Features

# Enable a feature (e.g., Hyper-V)
DISM /Image:C:\mount /Enable-Feature /FeatureName:Microsoft-Hyper-V-All

# Disable a feature
DISM /Image:C:\mount /Disable-Feature /FeatureName:MediaPlayback

# Enable .NET Framework 3.5 (requires source files)
DISM /Image:C:\mount /Enable-Feature /FeatureName:NetFx3 /Source:D:\sources\sxs

Inject Updates#

# Add an update package (.msu or .cab)
DISM /Image:C:\mount /Add-Package /PackagePath:C:\updates\update.msu

# Add all updates from a folder
DISM /Image:C:\mount /Add-Package /PackagePath:C:\updates

# Verify installed packages
DISM /Image:C:\mount /Get-Packages

Apply Registry Modifications#

# Load the offline registry hive
reg load HKLM\OfflineSoftware C:\mount\Windows\System32\config\SOFTWARE

# Make changes
reg add "HKLM\OfflineSoftware\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoUpdate /t REG_DWORD /d 1

# Unload the hive
reg unload HKLM\OfflineSoftware

Unmount and Save#

# Save changes and unmount
DISM /Unmount-Wim /MountDir:C:\mount /Commit

# Or discard changes
DISM /Unmount-Wim /MountDir:C:\mount /Discard

Optimize and Export#

# Clean up the image to reduce size
DISM /Image:C:\mount /Cleanup-Image /StartComponentCleanup /ResetBase

# Export to a new WIM with maximum compression
DISM /Export-Image /SourceImageFile:C:\install.wim /SourceIndex:1 /DestinationImageFile:C:\install-optimized.wim /Compress:max

4. Creating a Bootable USB#

# Using built-in diskpart (run as Administrator)
diskpart
list disk
select disk <number>
clean
create partition primary
format fs=ntfs quick
assign
active
exit

# Copy ISO contents to the USB drive

Note: For UEFI boot, format the USB as FAT32 instead of NTFS. For images larger than 4 GB, split the install.wim file:

DISM /Split-Image /ImageFile:install.wim /SWMFile:install.swm /FileSize:3800

Rufus is a free tool that handles partition scheme (MBR/GPT), filesystem, and file splitting automatically. Select your ISO and target USB drive, then click Start.

5. Unattended Installation#

Place an autounattend.xml file in the root of the ISO or USB to automate the installation.

Minimal Example#

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
  <settings pass="windowsPE">
    <component name="Microsoft-Windows-International-Core-WinPE"
               processorArchitecture="amd64"
               publicKeyToken="31bf3856ad364e35"
               language="neutral"
               versionScope="nonSxS">
      <SetupUILanguage>
        <UILanguage>en-US</UILanguage>
      </SetupUILanguage>
      <InputLocale>en-US</InputLocale>
      <UILanguage>en-US</UILanguage>
    </component>
  </settings>
  <settings pass="oobeSystem">
    <component name="Microsoft-Windows-Shell-Setup"
               processorArchitecture="amd64"
               publicKeyToken="31bf3856ad364e35"
               language="neutral"
               versionScope="nonSxS">
      <OOBE>
        <SkipMachineOOBE>true</SkipMachineOOBE>
        <SkipUserOOBE>true</SkipUserOOBE>
      </OOBE>
      <UserAccounts>
        <LocalAccounts>
          <LocalAccount wcm:action="add">
            <Name>Admin</Name>
            <Group>Administrators</Group>
            <Password>
              <Value><!-- base64 encoded password --></Value>
              <PlainText>false</PlainText>
            </Password>
          </LocalAccount>
        </LocalAccounts>
      </UserAccounts>
    </component>
  </settings>
</unattend>

Key Answer File Sections#

PassPurpose
windowsPELanguage, disk partitioning, image selection
offlineServicingApply packages and drivers to the offline image
generalizePrepare image for deployment to multiple machines
specializeComputer name, domain join, network configuration
oobeSystemUser accounts, OOBE skip, privacy settings

Use Windows System Image Manager (SIM) from the Windows ADK to create and validate answer files.

6. LTSC Editions#

Windows Long-Term Servicing Channel (LTSC) editions are designed for systems that require long-term stability and minimal feature changes.

Key characteristics:

  • No feature updates - receives only security and quality updates
  • Support lifecycle - 5 years mainstream + 5 years extended (IoT LTSC: 10 years)
  • No bundled apps - no Microsoft Store, Edge, Cortana, or other consumer apps
  • Available editions - Enterprise LTSC, IoT Enterprise LTSC
  • Not available via retail or OEM channels; requires Volume Licensing

LTSC is ideal for:

  • Kiosks and point-of-sale systems
  • Medical devices and industrial controllers
  • Environments where feature updates are disruptive

Note: LTSC is not recommended for general-purpose workstations. Microsoft Office support may be limited on LTSC editions.

Troubleshooting#

IssueCauseSolution
DISM error 0x800f081e during mountWIM file is read-only or in useCopy WIM to a writable location; ensure no other DISM operations are running
Mount fails with "directory is not empty"Previous mount was not cleaned upRun DISM /Cleanup-Wim then retry
DISM error 0x800f0825 (corruption)WIM file corrupted during download or copyRe-download the WIM; verify hash if available
Add-Package fails with "not applicable"Update does not match the image version/archVerify the update matches the image's build number and architecture
Unmount hangs or failsExplorer or antivirus has files locked in mount dirClose all Explorer windows and File Manager handles; disable real-time AV scanning on mount dir
install.wim too large for FAT32 USBFile exceeds 4 GB FAT32 limitSplit with DISM /Split-Image or format USB as NTFS (BIOS boot)
autounattend.xml not detectedFile not in root of USB or incorrect encodingEnsure file is in the root directory; save as UTF-8 with BOM
ESD to WIM export failsInsufficient disk spaceEnsure at least 2x the ESD file size is available as free space
Features fail to enableMissing source files (e.g., .NET 3.5)Use /Source flag pointing to \sources\sxs on the installation media

See Also#

Sources#