Python Module for building an iso from uup dump files.
Project description
uup-builder
A Python package and CLI tool for creating and customizing Windows ISO files using Microsoft's Unified Update Platform (UUP).
Overview
uup-builder provides a simple way to download Windows update packages from the UUP dump API, download the necessary files from Microsoft's servers, and convert them into bootable ISO images. It supports selecting specific editions, languages, and offers both a programmatic Python API and an interactive command-line interface.
This tool is ideal for developers, system administrators, or enthusiasts who need custom Windows installations for testing, deployment, or personal use.
Features
- Search and list available Windows builds from the UUP dump database
- Interactive selection of builds, languages, and editions
- Download UUP files with resume support, parallel downloads, and SHA-1 verification
- Convert UUP files to bootable ISO images using the official
convert.shscript - Support for compression types (WIM or ESD)
- Automatic installation of required system dependencies (on supported platforms)
- CI/CD friendly with GitHub Actions support
- Rich terminal output (via
richlibrary, optional)
Requirements
Python
- Python 3.10 or higher
System Dependencies
The conversion step requires the following binaries:
aria2ccabextractwimlib-imagexchntpwgenisoimageormkisofs
These can be automatically installed on supported systems (Linux: apt, pacman, dnf, zypper; macOS: Homebrew). Run uup-builder convert and it will prompt to install if missing.
Note: Conversion is not supported on Windows; use Linux or macOS for ISO building.
Installation
From PyPI
pip install uup-builder
From Source
git clone https://github.com/Cairnstew/uup-builder.git
cd uup-builder
pip install -e .
Using uv (Recommended for Development)
uv sync
Using Nix
For reproducible environments:
nix develop
Usage
uup-builder can be used via the command-line interface or as a Python library.
Command-Line Interface
Run uup-builder --help for full options.
Key Commands
-
List Builds
uup-builder list --search "Windows 11"
Lists available builds matching the search query.
-
List Languages
uup-builder langs --id <UUID>
Lists languages for a specific build UUID.
-
List Editions
uup-builder editions --id <UUID> --lang en-us
Lists editions for a build and language.
-
Download UUP Files
uup-builder download --id <UUID> --lang en-us --edition professional --out UUPs
Downloads files to the specified directory (interactive if options omitted).
-
Convert to ISO
uup-builder convert --uup-dir UUPs --compress wim
Converts downloaded UUP files to an ISO.
-
Full Build Pipeline
uup-builder build --search "Windows 11" --lang en-us --edition professional
Interactively or directly downloads and builds the ISO.
Example full command:
uup-builder build --id <UUID> --lang en-us --edition professional --out UUPs --concurrency 8 --compress esd
Use --verbose for detailed logging.
Python API
from uup_builder import UUPClient, Downloader, Converter
# Initialize client
client = UUPClient()
# List builds
builds = client.list_builds(search="Windows 11", sort_by_date=True)
# Get files metadata for a specific build/language/edition
file_data = client.get_files(update_id="your-uuid", lang="en-us", edition="professional")
# Download files
dl = Downloader(out_dir="UUPs", concurrency=4)
dl.download_all(file_data)
# Convert to ISO
cv = Converter(compress="wim")
cv.convert(uup_dir="UUPs")
For interactive selection, use functions from uup_builder.interactive.
Development
Setup
git clone https://github.com/Cairnstew/uup-builder.git
cd uup-builder
uv sync
Running Tests
pytest
Project Structure
uup-builder/
├── src/ # Package source code
│ └── uup_builder/
│ ├── __init__.py
│ ├── api.py # UUP API client
│ ├── cli.py # Command-line interface
│ ├── converter.py # ISO conversion
│ ├── deps.py # Dependency installer
│ ├── downloader.py # File downloader
│ ├── interactive.py# Pickers for CLI
│ └── output.py # Console helpers
├── .github/workflows/ # CI/CD pipelines
├── pyproject.toml # Project metadata and dependencies
├── pytest.ini # Test configuration
├── flake.nix # Nix development shell
└── uv.lock # Locked dependencies
License
This project is licensed under the MIT License.
Disclaimer
This project is not affiliated with or endorsed by Microsoft Corporation. Windows is a trademark of Microsoft Corporation. Use of UUP download functionality is subject to Microsoft's terms of service.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uup_builder-0.1.7.tar.gz.
File metadata
- Download URL: uup_builder-0.1.7.tar.gz
- Upload date:
- Size: 72.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8592e69c8d93a5065742d166dc58eac28b9f71470571ed67028b55290612eb39
|
|
| MD5 |
c37299b54f622c860791a55766e74333
|
|
| BLAKE2b-256 |
14979fb59746f819efd5262918287b65f32da7650ef367615328ebd5f213eae2
|
File details
Details for the file uup_builder-0.1.7-py3-none-any.whl.
File metadata
- Download URL: uup_builder-0.1.7-py3-none-any.whl
- Upload date:
- Size: 20.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1884a506801f65accbeeba5fec53344f99836f89d6c22f29681db00212d6c7ce
|
|
| MD5 |
c9891f40684bbc2ddcc28d0d32d5dc89
|
|
| BLAKE2b-256 |
19b5067f54bcb65b4125d6fe1b798026b0bc85c9a95dad1d1b03503b0c3ba924
|