Effect of Compression on Software Patching
Previous Top Next


A typical problem faced by developers is how to release software upgrades without requiring the user to download the entire application again and again. The easiest method for updating your software on an end-user's system is to use 3rd party binary patch creation software.

A few 3rd party binary patching software applications include:
· Patch Factory by AgenSoft is probably the cheapest. (~$100 US)
· RTPatch by Pocket Soft is probably the best. (~$3200 US)
· Other binary patch creation software applications can be found here .


These applications will study 1 or more older versions of your software and find all difference, additions, and deletions of program data. A "patch" file is then generated which includes instructions on how to efficiently upgrade your software from an older version to a newer version. Patch files can be as small as 50k if you have made only minor changes to your program or data. When using patch creation applications on Thinstall-generated EXE files, the patch will operate entirely on Thinstall compressed data. Thinstall stores compressed data in continuous blocks. Because of the nature of compression, a change to a single byte may propagate to the entire block of compressed data. If a byte is removed or added near the beginning of a file, the entire file generate completely different compressed data, unless you use Thinstall's "variable size blocks" option:


clip0305

When variable block-sizes are selected, Thinstall will select blocks of data with common checksum values. If the file size changes between 2 versions of your software (for example it becomes smaller or larger), the blocks of data with common checksums remain roughly the same. This limits the distance changes in the original data will propagate in the compressed data. Patching software can then operate on Thinstall's compressed data and create a small patch file that will upgrade the compressed data of version 1 to the compressed data of version 2.

clip0301

clip0302