A video game binary patch and installer generator that produces self-contained Windows executables. Three modes:
- Update Patch — diff an old and new copy of a game directory and produce a standalone patcher
.exeusers double-click to update their install - Repack — compress a complete game directory into a standalone installer
.exeusers double-click to install the game from scratch - Archive — log into Steam, watch one or more
appids, download every new build to a 7z archive, optionally crack + upload + post — fully automated mirroring of game updates
Full documentation is on the wiki.
- Python 3.10+
- PySide6 ≥ 6.5.0 (GUI only; CLI works without it)
- Linux build host (outputs are Windows executables)
xzCLI (for multi-threaded LZMA repack compression)zstdCLI (for Zstandard repack compression)- MinGW-w64 cross-compiler (only needed to rebuild stubs from source)
For Steam archive mode (downloads, polling, BBCode posts), install with the optional archive extra: pip install -e ".[archive]".
git clone https://github.com/asdfmonster261/patchforge
cd patchforge
pip install -e . # patch + repack mode only
pip install -e ".[archive]" # + Steam archive mode (steam[client], gevent, etc.)The Linux engine binaries (engines/linux-x64/) are included in the repository. They are statically linked against everything except libc and run on any x86-64 Linux.
# GUI
patchforge
# Update patch (CLI)
patchforge build \
--source-dir game_v1.0/ \
--target-dir game_v1.1/ \
--output-dir dist/ \
--app-name "My Game" \
--version 1.1
# Repack installer (CLI)
patchforge repack \
--game-dir game/ \
--output-dir dist/ \
--app-name "My Game" \
--codec lzma \
--compression max \
--threads 8
# Archive mode — log in once, then watch an appid
patchforge archive login # one-shot QR / password login
patchforge archive download \
--project mygame.xarchive \
--restart-delay 1800 # poll every 30 minutesFor the full CLI reference, engine presets, repack options, archive-mode polling cadence, project file formats, and binary format documentation see the wiki.