A cross-platform graphical tool for creating, listing, rewriting, and extracting Xbox ISO (XISO) images. Built on the original extract-xiso engine by "in" in@fishtank.com (2003), now wrapped in a modern Qt6 GUI.
XISO is a custom ISO 9660 variant used by the original Xbox and Xbox 360, with 2048-byte sectors and a proprietary binary directory entry format.
| Mode | Description |
|---|---|
| Extract | Extract files from an XISO to a local directory. Optionally skip $SystemUpdate. |
| Create | Build an XISO from a local directory. Optional media-enable patching. |
| List | Browse ISO contents in a tree view. Export to TXT, HTML, or CSV. |
| Rewrite | Re-optimize an XISO directory tree (balanced AVL). Optionally delete the original after rewrite. |
Pre-built binaries are available on the Releases page.
- CMake ≥ 3.16
- C99 compiler (GCC, Clang, or MSVC 2019+)
- Qt6 (Widgets + Core) — for the GUI
- MinGW/MSYS2 (Windows MinGW builds)
cmake -B build
cmake --build build -j $(nproc)
# CLI only (skip Qt dependency)
cmake -B build -DBUILD_GUI=OFF
# With tests
cmake -B build -DBUILD_TESTS=ON
ctest --test-dir buildcmake -B build -A x64
cmake --build build --config ReleaseFrom the MinGW64 shell (C:\msys64\mingw64.exe):
# One-time: install prerequisites
pacman -S --needed mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc mingw-w64-x86_64-qt6-base
cmake -B build_mingw -G "Unix Makefiles" -DBUILD_TESTS=ON
make -C build_mingw -j$(nproc)
ctest --test-dir build_mingwbrew install cmake qt@6
cmake -B build -DCMAKE_PREFIX_PATH="$(brew --prefix qt@6)"
cmake --build build -j $(sysctl -n hw.logicalcpu)sudo apt install build-essential cmake qt6-base-dev
cmake -B build
cmake --build build -j $(nproc)Launch extract-xiso-gui and select a tab:
- Extract — pick an ISO and destination folder, click Extract
- Create — pick a source folder, set output ISO name, click Create
- List — pick an ISO, browse the tree, export via the Export dropdown
- Rewrite — pick an ISO, optionally set a different output folder, click Rewrite
extract-xiso ./game.iso # extract (default mode)
extract-xiso -l ./game.iso # list contents
extract-xiso -r ./game.iso # rewrite (re-optimize directory tree)
extract-xiso -c ./game-dir # create XISO from directory
extract-xiso -c ./game-dir out.iso # create with custom output name
extract-xiso -m -c ./game-dir # create, disable media-enable patching
extract-xiso -s ./game.iso # extract, skip $SystemUpdate folder├── CMakeLists.txt # Build system
├── src/
│ ├── libxiso.h # Public C API (context-based, reentrant)
│ ├── libxiso.c # Core engine (~2400 lines)
│ ├── xiso_internal.h # Internal structs shared with tests
│ ├── main.c # CLI frontend
│ └── win32/ # Windows compatibility shims
│ ├── asprintf.c
│ ├── dirent.c
│ └── getopt.c
├── gui/
│ ├── main.cpp # Qt6 application entry point
│ ├── mainwindow.h/cpp # Main window + tab widget
│ ├── xisoworker.h/cpp # Background worker thread (QThread)
│ ├── extractwidget.h/cpp # Extract tab
│ ├── createwidget.h/cpp # Create tab
│ ├── listwidget.h/cpp # List tab + export
│ ├── rewritewidget.h/cpp # Rewrite tab
│ ├── exportdialog.h/cpp # TXT/HTML/CSV export
│ ├── style.h # Shared widget stylesheet
│ ├── app.rc # Windows icon resource
│ └── resources.qrc # Qt resource file
├── tests/
│ ├── acutest.h # Single-header test framework
│ ├── test_avl.c # AVL tree unit tests
│ ├── test_bm.c # Boyer-Moore search unit tests
│ ├── test_dir_calc.c # Directory size/offset calculation tests
│ ├── test_integration.c # List + extract integration tests
│ └── fixtures/ # Test ISO + expected output
├── LICENSE.TXT
└── .github/workflows/CI.yml
- API: The core library (
libxiso) exposes an opaquexiso_context— fully reentrant, callable from multiple threads. Progress and per-file log callbacks carryvoid *user_datafor bridging into GUI toolkits. - Threading: The GUI runs XISO operations on a
QThreadworker. Progress and log signals are throttled (100 ms interval) and delivered via queued connections. - Unicode paths on Windows: UTF-8 paths are converted to wide-character with
\\?\long-path prefix, supporting UNC paths and international characters. - XISO disc layout: The library auto-detects four layout offsets: standard (0), GLOBAL (0xFD90000), XGD3 (0x2080000), XGD1 (0x18300000).
- Original engine: "in" in@fishtank.com (2003–2011)
- XGD3 support: somski (2011)
- Xbox 360 support: aiyyo (2010)
- GUI + refactoring: Modern cross-platform Qt6 port by the XboxDev community
- Original repo:: XboxDev/extract-xiso
Modified BSD 4-clause license — see LICENSE.TXT. Original copyright by in@fishtank.com. Note the advertising clause (clause 3).