Skip to main content

Python Module for building an iso from uup dump files.

Project description

uup-builder

PyPI version License: MIT Python 3.10+

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.sh script
  • 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 rich library, optional)

Requirements

Python

  • Python 3.10 or higher

System Dependencies

The conversion step requires the following binaries:

  • aria2c
  • cabextract
  • wimlib-imagex
  • chntpw
  • genisoimage or mkisofs

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

uup_builder-0.1.7.tar.gz (72.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uup_builder-0.1.7-py3-none-any.whl (20.9 kB view details)

Uploaded Python 3

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

Hashes for uup_builder-0.1.7.tar.gz
Algorithm Hash digest
SHA256 8592e69c8d93a5065742d166dc58eac28b9f71470571ed67028b55290612eb39
MD5 c37299b54f622c860791a55766e74333
BLAKE2b-256 14979fb59746f819efd5262918287b65f32da7650ef367615328ebd5f213eae2

See more details on using hashes here.

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

Hashes for uup_builder-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 1884a506801f65accbeeba5fec53344f99836f89d6c22f29681db00212d6c7ce
MD5 c9891f40684bbc2ddcc28d0d32d5dc89
BLAKE2b-256 19b5067f54bcb65b4125d6fe1b798026b0bc85c9a95dad1d1b03503b0c3ba924

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page