View Single Post
  #1  
Old 23-06-2026, 01:18
BLACKFIRE69's Avatar
BLACKFIRE69 BLACKFIRE69 is offline
Registered User
 
Join Date: Mar 2019
Location: In the Hell
Posts: 699
Thanks: 486
Thanked 2,603 Times in 572 Posts
BLACKFIRE69 is on a distinguished road
Arrow Xdelta3w - Custom App for Xdelta3 Patching

xdelta3w v0.2
Custom Console App for Xdelta3 Patching
Windows x86 (runs on x64) · single exe + wrapper DLL · by BLACKFIRE69

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━

▌ OVERVIEW
xdelta3w is a Windows console wrapper for xdelta3_wrapper.dll that exposes xdelta3 encode and decode operations through a clean command-line interface. Two operating modes:
  • Single-file mode — encode or decode one file at a time, with a full real-time progress bar showing speed and ETA.
  • Multi-file (batch) mode — encode or decode an entire directory tree in one pass, with an overall batch progress bar spanning all files and a summary report on completion.

▌ TECHNICAL SPECIFICATIONS
  • Tool version — v0.2
  • Author — BLACKFIRE69
  • xdelta3 version — v3.0.11 / v3.1.0 (both supported via wrapper DLL)
  • DLL — xdelta3_wrapper.dll
  • Platform — Windows x86 (32-bit exe, runs on 64-bit Windows)

▌ CLI REFERENCE
Code:
; Single-file
xdelta3w -e -s MODIFIED [-f] [-q] [-1..-9] [-B KB] [-W KB] [-E KB]
            [-S TYPE] [-SD] [-SI] [-SA] [-n] [-N] [-G] [-I SIZE] [-P SIZE] ORIGINAL PATCH
xdelta3w -d -s MODIFIED [-f] [-q] [-B KB] [-W KB] [-E KB] [-n] PATCH OUTPUT
xdelta3w -V | -h

; Multi-file  (-s points to a directory)
xdelta3w -e -s MOD_DIR [-m PATTERN] [-r] [-x EXT] [-f] [-q] [-1..-9]
            [-B KB] [-W KB] [-E KB] [-S TYPE] [-SD] [-SI] [-SA] [-n] [-N]
            [-G] [-I SIZE] [-P SIZE] ORIG_DIR PATCH_DIR
xdelta3w -d -s MOD_DIR [-m PATTERN] [-r] [-x EXT] [-f] [-q] [-B KB]
            [-W KB] [-E KB] [-n] PATCH_DIR OUTPUT_DIR
▌ OPTIONS
Code:
Modes
  -e          Encode: create delta patch  (MODIFIED + ORIGINAL -> PATCH)
  -d          Decode: apply delta patch   (MODIFIED + PATCH    -> OUTPUT)
  -V          Print DLL version and exit
  -h          Print help and exit

Required
  -s PATH     Modified file or directory (the "bad" / changed version).
              In decode, the same modified file used during encode.

Common
  -f          Force overwrite existing output file(s)
  -q          Quiet: suppress progress bar output
  -n          Disable checksum verification (decode only)

Encode Quality
  -1 .. -9    Compression level (default: 3)
  -B SIZE     Source block size in KB (default: 8192 = 8 MB)
  -W SIZE     Encoder input window size in KB (default: 65536 = 64 MB)
  -E SIZE     Source window max size in KB (default: same as -B)
  -S TYPE     Secondary compression: none (default), djw, fgk, lzma
  -SD         Disable secondary compression of data section
  -SI         Disable secondary compression of inst section
  -SA         Disable secondary compression of addr section
  -N          Disable ordinary data compression (source-only matching)
  -G          Use greedy matching (faster, larger patches)
  -I SIZE     Instruction optimization buffer size (default: 32768)
  -P SIZE     Small string matching prev size

Multi-file (directory mode only)
  -m PATTERN  Source-scan match pattern: wildcards (*.bin), regex
              ($"^file.*\.bin$"), exact names, pipe-separated lists. Default: *
  -r          Recursive subdirectory search (off by default)
  -x EXT      Patch file extension (default: .xd3); leading dot optional
▌ KEY FEATURES

✦ Real-Time Progress Bar (Single-File)
Shows a progress bar, percent complete, current speed, and ETA.

✦ Overall Batch Progress Bar (Multi-File)
One progress bar spanning the entire batch. Speed is calculated over cumulative bytes across all files.

✦ Batch Summary Report
Printed after every multi-file run.

✦ Skip Logic in Batch Mode
Files with no matching original are silently skipped (not a failure). Files with existing output are skipped when -f is not given.

✦ Auto-Create Output Subdirectories
Output directories are created as needed — no pre-setup required.

✦ Custom Patch File Extension
The default patch extension is .xd3, but any extension can be used with -x EXT. Decode scans only for the specified extension and strips it to derive the original filename. Useful when patches were created by other tools using .vcdiff, .xdelta, .patch, etc.
Code colors: program · mode · -s · flag in focus · input · output
Code:
Encode:  xdelta3w -e -s mod\ orig\ patches\ -x .vcdiff
Decode:  xdelta3w -d -s mod\ patches\ output\ -x .vcdiff
✦ Flexible File Pattern Matching (-m)
The -m pattern controls which files in the source (modified) directory are processed during encode. In decode, it filters the rebuilt filenames after extension stripping. Supports wildcards, regex, and pipe lists.
Code:
-m "*.bin"                wildcard
-m $"^data_.*\.bin$"      regex
-m "a.bin|b.bin|c.bin"    pipe-separated exact names
▌ DISTRIBUTION FILES

Core
  • xdelta3w.exe — main executable
  • xdelta3_wrapper.dll — xdelta3 wrapper DLL (required at runtime)

Helper Scripts
  • 0.Help.bat — runs xdelta3w -V then xdelta3w -h
  • 1.Generate_TestData.bat — creates test input files in TestData\
  • 2.Run_tests.bat — runs the full 38-test automated test suite
  • 3.Encode.bat — CLI / interactive encode helper
  • 4.Decode.bat — CLI / interactive decode helper

Test Data (auto-generated by 1.Generate_TestData.bat)
Code:
TestData\
 ├── original.bin       256 KB zeros
 ├── modified.bin       256 KB, first 4 KB = 0xFF
 ├── identical.bin      256 KB zeros (same as original)
 ├── Multi\Original\    a.bin, b.bin, sub\d.bin, medium.bin 10 MB, large\big.bin 100 MB
 └── Multi\Modified\    modified versions of the above
Licensing
  • THIRD_PARTY_LICENSES.txt — third-party attribution (xdelta3, XZ Utils)
  • licenses\Apache-2.0.txt — Apache License 2.0 (xdelta3 v3.1.0)
  • licenses\GPL-2.0.txt — GNU GPL v2 (xdelta3 v3.0.11)
  • licenses\0BSD.txt — BSD Zero Clause (XZ Utils)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━

Feedback, bug reports, and edge cases are all welcome.
Attached Images
File Type: png 0.png (304.1 KB, 30 views)
File Type: png 1.png (301.1 KB, 30 views)
File Type: png 2.png (257.9 KB, 30 views)
File Type: png 3.png (196.6 KB, 30 views)
File Type: png 4.png (262.8 KB, 30 views)
File Type: png 5.png (246.1 KB, 30 views)
Attached Files
File Type: rar Xdelta3w v0.2 + Examples.rar (1.05 MB, 6 views)

Last edited by BLACKFIRE69; 23-06-2026 at 01:43.
Reply With Quote
The Following 5 Users Say Thank You to BLACKFIRE69 For This Useful Post:
audiofeel (23-06-2026), Cesar82 (24-06-2026), Ele (23-06-2026), Razor12911 (23-06-2026), ScOOt3r (23-06-2026)
Sponsored Links