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 what this means think of releasing books. Once you published a book and sold a number of copies, you get a lot of people informing you about mistakes in the contents or just spelling you have done. So you correct this for the next edition of the book. Those people that have the old book already will need to either get the new book or remain with the old which might not be acceptable for the customer in case of a technical book. In those cases you offer them the list of errors "errata" with instructions how to correct them in the old edition. This recipe contains of instructions like "page 456: replace 'in Europe' with 'in most parts of Europe' " in a list. This list will be one or two pages only if with very large books. Making this single page available to the customer will be much cheaper since you can use a letter with one page included instead of the costs involved to send the book anew. This method also has the advantage that you annotations are kept intact which is case of reference books is very important.
Now enter the computer world. You released a software product. Right after that you get numerous reports about mistakes and omissions in your product, consuming most of the time of your support personnel explaining the same things to many people over and over again. You are fixing these problems and then deploy a new version of your software normally.
But 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% (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 auto-find techniques) and he has his software updated. No matter how you deploy the patch files, the end user gets them so small you could send them via email and there is no need to reinstall the software. All settings are remained intact , no need for potentially time consuming 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 information files more similar to the plain "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 savings you can achieve are so immense that you can even update multi-megabyte software releases with just a few kilobytes - and make it 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.