BinPatch is a software package containing two essential items for updating binary files by only transmitting the differences in the form of a patch file.
To give you a comprehensive example think of releasing books. Once you publish a book, you get a lot of people informing you about mistakes in the contents or just spelling you have done. So you correct this and release a edition of the book. People that have the old book need to either get the new book or remain with the old which might not be desired by you as a vendor. In those cases you will send them the list of errors with instructions how to remove them. This recipe contains of instructions like "page 456: replace 'in Europe' with 'in most parts of Europe' " in a list. This list will be 1 or two pages only when the book perhaps has some thousand pages. Sending this single page in a letter will be much cheaper than paying for printing the whole new book again. It also has the advantage that you annotations are kept intact besides which is case of reference books is very important.
Now enter the computer world. You released a software. After release you got numerous reports about mistakes and omissions. You fix these problems and depoy a new version of your software. Your existing users have a version that is similar already. So you use GenPatch to make up a recipe (so-called patch files) on how to make the old version into the new one. GenPatch is very efficient in this task so you get similar good results of savings ranging from 99% (bug fix) to 80% (minor upgrades). With the patch files being programs themselves, all your customers need to do is to execute them and perhaps tell it where the software is installed (although not even that may be required using autofind techniques) and he has his software upated. No matter how you deplay the patch files, the end user gets them so small you could send them via email and he needs not reinstall the software and can keep all his settings intact, no need for reinstallation, esp. not to enter any kind of serial numbers that the end user surely has lost long ago.
If you like to apply the changes more "by hand" there is a program called DoPatch that applies patch files that are not programs, but bare info like the "errata" page. The DoPatch is the tool to merge the changes information into the existing software and is part of executable patch files in a stripped version that is designed to apply only one patch file: Itself.
Or more technically: You can choose creating either executable or "plain" patch files. Executable patch files provide updaters that are applied by starting them like you would with any program. Plain patch files are applied with DoPatch. You can create patch files to update complete directory structures with just one updater. Or, create updaters for several different versions of a software with only one patch file, too. If needed, you can use the built-in support for preserving serial number information in files while updating them.
Compare the full version size and the BinPatch-created patch file and see why using BinPatch is compelling. The rates you can achieve are so immense that you can even update multi-megabyte software releases with just a few kilobytes - and immediately available per email or the Internet. Extremely good rates are typical with program files, DLLs, text files and databases.
Even though your program might have undergone a lot of changes, actual alteration is minimal. The changes occurring from an older version to a newer version of any file usually are small. Most parts remain (almost) unchanged, even with software that looks very different, since huge parts of modern programs are derived from compiler libraries. Windows programs, especially, get much of their file size from libraries that never change in your releases.
One thing that you have to consider though, is that BinPatch cannot work (efficiently) with compressed or encrypted data. Encrypted or compressed files change their contents almost completely, if you only change even a single byte. But the philosophy behind BinPatch is its ability to work on "living" software installations. In fact, this is what makes using BinPatch so appealing for use with software upgrades.