Skip to content

yusufklncc/winisoutil

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

63 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

English | TΓΌrkΓ§e

WinISOUtil - Windows ISO Customization Tool

Windows 11 PowerShell License

WinISOUtil is a powerful PowerShell script that allows you to directly modify your Windows ISO files, enabling you to configure the operating system to your needs before installation. You can remove bloatware applications, improve privacy settings, apply performance-oriented registry tweaks, and integrate your frequently used drivers or updates directly into the ISO.

This tool features both an interactive menu-driven Manual Mode and an Unattended Mode that can apply a previously saved configuration file without UI prompts.


✨ Key Features

  • Multi-Language Interface: Support for Turkish and English.
  • Interactive and Unattended Modes:
    • Manual Mode: Choose step-by-step which components to remove or which settings to apply.
    • Unattended Mode: Save your settings to a .json file and apply the same configuration to refreshed ISOs without UI prompts.
  • ISO Cleanup:
    • Save space by removing unwanted Windows editions (e.g., Home, Pro) from the ISO.
    • Clean up unnecessary provisioned Windows applications (Bloatware) before installation.
  • Integration:
    • Add critical Windows updates (.msu) to the ISO file.
    • Integrate your drivers (.inf) directly into the ISO to avoid post-installation driver hassles.
  • Detailed Configuration:
    • Privacy and Telemetry: Disable data collection and error reporting services.
    • UI Tweaks: Align the taskbar to the left, configure desktop icons, and tweak File Explorer.
    • Component Removal: Remove legacy components like Internet Explorer and Windows Media Player.
  • Reliability and Dependency Management:
    • A trap mechanism ensures a safe exit and cleanup if an error occurs, preventing a "dirty" state (like a mounted image).
    • Temporary files are only deleted from an owned, marker-protected workspace under %TEMP%\WinISOUtil.
    • Both install.wim and install.esd source images are supported.
    • The script automatically checks for the required Windows ADK. If it's not found, it provides clear instructions for the user to install it.

πŸš€ Quick Start

Download a reviewed release archive or clone the repository, then run the script from a local checkout:

git clone https://github.com/yusufklncc/winisoutil.git
cd winisoutil
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\winisoutil.ps1

Run winisoutil.ps1 from an elevated PowerShell window. The main script checks administrator privileges and stops when they are missing. The optional bootstrapper requests elevation automatically.

Avoid piping remote scripts directly into iex. For reproducible bootstrap installs, run the local install.ps1 with a pinned Git ref and the expected archive SHA-256:

.\install.ps1 -Ref '<tag-or-commit>' -ExpectedArchiveSha256 '<sha256>'

βš™οΈ Usage and Workflow

  1. The bootstrapper script first requests Administrator privileges.
  2. If you use the optional bootstrapper, it downloads project files from GitHub to a unique temporary directory and can verify the archive SHA-256.
  3. The main script, winisoutil.ps1, is launched.
  4. You will be prompted to select a language.
  5. The script verifies that all requirements (like the Windows ADK) are met before proceeding.
  6. A file selection window will open for you to choose the Windows ISO file you want to edit.
  7. The ISO is mounted, its contents are copied to %TEMP%\WinISOUtil\iso, and the selected image is mounted to %TEMP%\WinISOUtil\mount.
  8. The main menu appears, allowing you to proceed with your desired customizations.

πŸ€– Unattended Mode with JSON

Instead of manually selecting the same options every time, you can streamline your workflow using a configuration file.

  1. Exporting Settings:

    • Run the script in interactive mode and select all your desired tweaks, component removals, and app cleanups from the menus.
    • From the main menu, choose option "7. Export Settings (.json)" to save your current selections into a configuration file.
  2. Importing Settings:

    • The next time you run the script, after selecting an ISO, it will ask if you want to import a configuration file.
    • Select "Yes" (Y) and choose your saved .json file. The script will automatically apply all validated settings defined in the file.
  3. Running without UI prompts:

.\winisoutil.ps1 `
  -Unattended `
  -Language en `
  -IsoPath 'D:\ISO\Windows11.iso' `
  -ConfigurationPath '.\config\desktop.json' `
  -EditionIndex 1 `
  -OutputIsoPath 'D:\ISO\out\Windows11-custom.iso'

New exports use configuration schema version 2 and stable RemovedAppSelectors, so the same profile can be reused across refreshed ISO builds and locales. Version 1 profiles remain readable for one-off runs. Zero-touch automation requires schema version 2. See docs/PROFILE.md for the profile lifecycle.

Unattended CLI Reference

Parameter Purpose
-IsoPath Input Windows ISO. Required in unattended mode.
-ConfigurationPath Exported JSON profile. Required in unattended mode.
-OutputIsoPath Final ISO path. Required in unattended mode.
-EditionIndex Image index to customize. Required when the ISO contains multiple editions.
-Language Tool message language: tr or en. Defaults to en in unattended mode.
-UpdatesPath Optional folder containing .msu update packages.
-DriversPath Optional folder containing .inf drivers. Subdirectories are included.
-WorkingDirectory Optional owned workspace. Defaults to %TEMP%\WinISOUtil.
-SkipWimOptimization Skips the final WIM export optimization step. Useful only for diagnostics.

Scheduled UUP Automation

The recommended zero-touch model runs on a dedicated Windows 11 machine or VM, not on GitHub Actions. A daily SYSTEM task discovers an eligible Retail UUP build, downloads hash-verified payloads from Microsoft CDN hosts, assembles one Windows 11 Pro ISO per configured locale, applies a schema version 2 profile, validates the result, and retains the configured number of successful outputs.

See docs/AUTOMATION.md for setup and operations.

Documentation


πŸ› οΈ Modular Structure & Customization

The project is designed to be modular. You can easily add or modify customizations by editing the files in the src/ directory:

  • src\languages.ps1: Contains all the interface text strings for supported languages. Add a new language block here to extend localization.
  • src\tweaks.ps1: Defines all available registry tweaks. You can add your own [PSCustomObject] to this list to create a new tweak.
  • src\components.ps1: Lists Windows components and services that can be removed or disabled.
  • src\features.ps1: Defines optional Windows features that can be enabled, like .NET Framework 3.5.
  • src\app-exclusion-list.ps1: Contains a list of critical system apps (like the Microsoft Store) that are excluded from the removal list to prevent breaking the system.

πŸ“‹ Requirements

  • Windows 10 or Windows 11
  • PowerShell 5.1+
  • Administrator privileges to run
  • Internet connection (for the initial download of the script)
  • Windows ADK: The Windows Assessment and Deployment Kit (ADK) must be installed.
    • During the ADK setup, you only need to select the "Deployment Tools" feature, which includes the necessary oscdimg.exe for creating the final ISO file.

βœ… Validation

Run local fixture checks before submitting a change:

.\tests\Test-Static.ps1
.\tests\Test-Automation.ps1

The live UUP API smoke test and Hyper-V installation test are documented in docs/TESTING.md.


🀝 Contributing

Use CONTRIBUTING.md for the development workflow. Changes are integrated through dev; main is the release-ready branch.


⚠️ Disclaimer

This script modifies critical system files within the Windows ISO. While extensively tested, it's provided "as is" without warranties. The author is not liable for any damages that might occur from its use.

  • Use at your own risk.
  • Always back up important data before making system modifications.

πŸ“„ License

This project is licensed under the MIT License. See the LICENSE file for details.

About

PowerShell script that allows you to directly modify your Windows ISO files.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors