Software Management and Distribution: Updates
The onrush of modern software development and wide Internet availability has created frequent releases of new versions of software programs. Prompt bugs, mistakes correction and feature adding compel manufacturers to modify their software products on a frequent basis. And if the distribution package of a software product is sizeable, then the need to download the full, new version of the distribution package can become an expensive and tiresome procedure for end users.
Usually, the changes from one version to another are significantly smaller than the full distribution package, so many developers deliver to end users only those small changes that distinguish the new version from the version already installed on the end user’s machine. An attempt to reduce the update data size as much as possible is praiseworthy. However, how do you make it really effective? In case of the text data, everything is clear. There are a lot of excellent algorithms for text files comparing. And even more, the text data can be compressed effectively. But if you need to build an update package for executable files (exe, dll), these algorithms are completely useless to make something worthwhile. Effective comparison of executable files or any other binary files requires other approaches.
Aspects of the Software Updating Problem
The effective comparing of binary files problem is not the only one in the view of the software update task. The most important aspects are automation of patch building and delivery of the update module to end users.
Let’s assume the number of your program versions has reached 21. It is obvious that the process of patch building for all these versions and the following publishing of patches on the Internet will be quite complicated, even if you have some files/catalogues comparing tool.
Let’s look what an end user should perform to update a software product:
- Define the installed version number.
- Go to your Web site to make sure that a newer version exists.
- Read the changes history for the newer version comparing to the version already installed.
- Find in the published list the required version update.
- Download and install the update package.
And moreover, active users will want to receive new versions as soon as possible, having applied minimum efforts to the update process. And this wish is reasonable!
So, the developer’s main task is to find the most effective, reliable and reasonably priced solution and check if it’s suitable for the particular application.
Why Use a Patching System and Who Needs It?
Patching simplifies your product management and makes it easy to manage your software releases. There is no easier way to make professional quality, full-history patches for your software and other electronic content.
The audience for patching systems is software developers, network administrators and IT managers, among others. Regardless of the type of data being distributed (executables, documents, databases, videos, etc.), the patching system can figure out what files have changed, the exact changes within each file and how to update any previous version to the current version.
Difference Between Incremental and Binary Patching
Incremental update contains all the files that have been changed between two versions. So the result patch can be rather big.
Update modules made with the help of the byte-level patching engine only consist of the changes within each file, with the help of byte-level differencing technology used by the patching engine, which results in a significantly smaller update size.
What a Patch Maker Can Offer
Patch building, the main feature of a patch maker, of course, is the efficiency. Consequently it’s the size of the result patch module. Other useful features are cumulative patching to bring all in-field versions up to date using a single self-extracting executable, selection of the patching algorithm efficiency and compression ratio, and also the maximum allowed size of files to be compared.
Patch installation: the main idea is to create fully customizable modules with a wizard-style runtime interface, checksums to ensure accuracy, international language support for patches for an international audience, and silent install and silent uninstall with no user interaction required, which can be useful for system administrators and other programs calling the Update Installation program. The installations should also include smart automatic version check to determine the installed version and automatic rollback when the patch is applied to guarantee that the end-user’s system is successfully updated.
The main players on the market of patch building, which provide possibly the most efficient patching engines, are RTPatch (www.pocketsoft.com) and PatchFactory (www.agensoft.com), which are designed to automate all stages of the update cycle for a software product or any other binary data.
Of course these products are different. This difference concerns flexibility of the licensing options, the total cost and consequently the variety of solutions and environment functionality provided in the view of software update creating.
You can observe the efficiency of these products’ patching engines and the range of offered services on those vendors’ Web sites. Or just download the evaluation version and start patching your software product.
Pavel Shamsutdinov is marketing director for the AgenSoft company. He has eight years of experience in the field of software development management. He can be reached at email@example.com.