ActivePatch FAQ

1. What is ActivePatch?
ActivePatch is a software development toolkit designed specifically for updating files on another computer system. By analyzing the differences between two sets of files, the original version and an updated version, ActivePatch can create a package which only contains the differences between those versions and update a target system with the changes. Technical support for ActivePatch ended on March 31, 2014 and this product is no longer available for sale.
2. What are the minimum system requirements?
ActivePatch requires Windows 2000 or later versions of the Windows platform. The minimum memory and disk space requirements for end-users are the same as for the base operating system. Any functional differences between the platforms are handled internally by the components and/or libraries without requiring additional coding on the part of the developer. The following table lists the minimum operating system versions required:
Operating System Minimum Version
Windows 2000 5.00.2195
Windows XP 5.10.2600
Windows Server 2003 5.20.3790
Windows Vista 6.0.6000
Windows Server 2008 6.0.6001
Windows 7 6.1.7600
It is required that Windows 2000 have Service Pack 4 (SP4) installed on the system for both developers and end-users. For Windows XP, Service Pack 3 (SP3) must be installed and it is recommended that developers using Windows Vista install Service Pack 2 (SP2).
3. What programming languages can ActivePatch be used with?
The ActivePatch toolkit includes both an ActiveX component and a standard Windows dynamic link library. The ActiveX component is primarily designed to be used with visual development languages such as Visual Basic and Delphi but can be used with any language that supports the ActiveX standard. ActivePatch is also available as a standard DLL which can be used by virtually any programming language. Both the ActiveX component and the DLL are completely self-contained and do not have any dependencies on third-party libraries. Both offer similar performance and functionality, so the choice of which to use is largely up to the individual preferences of the developer.
4. Can ActivePatch be used with Visual Studio .NET?
Yes, ActivePatch can be used with Visual Studio .NET 2003 and Visual Studio 2005. You can import the ActivePatch ActiveX component directly from the IDE and a runtime callable wrapper will be created which will allow your application to access its properties, methods and events. To use the ActivePatch DLL from managed code, you will need to use the DllImport attribute to define the parameters of the functions that you wish to call. For more information, please refer to the Visual Studio documentation.
5. What kinds of files can ActivePatch update?
ActivePatch can update both text and binary data files. When ActivePatch compares the differences between files, they are analyzed at the byte level. This makes ActivePatch suitable for updating any type of file such as executable programs, word processing documents, and databases, as well as custom data files in a binary format.
6. Can ActivePatch be used with very large files?
ActivePatch was primarily designed for creating individual patches and updated packages for software installations and is optimized for files that are less than 50MB in size. While the product can be used to create patches of larger files, it will typically require much more time to generate a patch for files that are larger than 50MB. Note that this only affects the time required to generate the patch, not the time required to apply the patch on the end user's system. We do not recommend using ActivePatch with individual files that are larger than 250MB.
7. What are the principal advantages of using ActivePatch?
ActivePatch can significantly reduce the time and expense of updating files. Because ActivePatch analyzes the differences between two versions of a file, only the data which has changed is needed to update a previous version of a file to the current version. This reduces the amount of time a user must spend updating their software and/or data, as well as the expense of providing the update.

Instead of requiring that an updated version of the product be shipped to a customer on CD, updates can be made available directly over the Internet. If a company already distributes updates through the Internet, ActivePatch can significantly reduce the size of those updates. This results in conserving bandwidth, reducing costs, and permits more updates to be quickly distributed to more customers. Updates that are immediately available and require minimal time to download also encourage customers to use the current version of the software. In turn, this improves customer service and reduces the cost of providing technical support.
8. Can ActivePatch be used for more than just updating software?
While certain features of ActivePatch are specifically designed for updating software packages, any type of file can be updated. For example, ActivePatch can be used to periodically update systems which use a local copy of a shared database. It could also be used to manage a repository of documents, spreadsheets, and other data, automatically updating client systems when one or more of the files have changed. ActivePatch can benefit any application which needs to distribute or use modified versions of any type of file.
9. Are there any royalties or runtime licensing fees with ActivePatch?
The development license allows you to use the ActivePatch component and/or library with any number of products and redistribute it to any number of end-users. There are no restrictions on creating or applying patch files or packages and then redistributing them to end-users for any number of products. Unlike other products which restrict the creation of patches to a single system, any application which uses a licensed copy of ActivePatch can be used to create an unlimited number of patches.

Feature Comparison

1. How is using ActivePatch different from data compression?
Compression reduces the overall size of the file. However, it includes all of the data in the file. ActivePatch analyzes the original version of a file and the updated version, and only includes the data that has changed. For example, consider a Microsoft Access database which is approximately two megabytes in size. A user changes several records in the database and those changes then need to be sent to another user at a remote location. Compressing the database would result in a file that would probably be around 500-700K in size. However, because ActivePatch analyzes the differences between the original version and the updated version, that same update could be as small as 5K in size.
2. How is using ActivePatch different from an archiving program?
Archiving programs are designed to compress and store collections of files, and there are third-party toolkits that allow applications to create and manage these archives. The ActivePatch toolkit includes functions for managing collections of updated files which are called a package. Packages are similar in concept to archives. However, unlike the simple data compression used by archiving programs, ActivePatch only includes those files which have changed and only the changes within each specific file. This means that when compared to an archive of a collection of files, ActivePatch packages can be significantly smaller than archives created by programs like PKZip or WinZip.
3. How is patching different from incremental updating?
An incremental update consists of a collection of all the files which have changed between two versions. A patch package consists of the changes from within each individual file, resulting in a significantly smaller update.
4. What is the difference between ActivePatch and other patching software?
One of the key differences is that ActivePatch is designed primarily as a software development toolkit, not as an end-user product for developers. Other software packages which provide patching capabilities typically include one program which is used for creating the patch, and another program which is used for applying that patch. ActivePatch is designed to be directly integrated within an application, giving that application complete control over the update process. While some products do provide an API for applying a patch, control over the application process is typically very limited. In contrast, ActivePatch provides an extensive API for managing and updating patch packages.
5. What is the difference between ActivePatch and an installation toolkit?
ActivePatch is not a general purpose installation toolkit. However, it can be used in conjunction with software such as InstallShield. ActivePatch is designed specifically for updating previous file versions to their current version. ActivePatch does share some similar functionality with general purpose installation software such as the ability to create new files, manage shared files, and register ActiveX components. Application developers who wish to use ActivePatch to update their software should use a general purpose toolkit to initially install the product on the user's system. From that point on, ActivePatch can be used to apply any subsequent updates to the software without requiring the developer to create a new installation package for each update.
6. What is the difference between a patch file and a patch package?
A patch file contains the data that has changed between two versions of a file and the instructions required to convert the original version of that file into the updated version. A patch package is a single file which contains the data and instructions required to update a collection of files. Individual files may be added, removed, or modified when the update is applied and multiple versions of the same file may be included in a single package.
7. Are ActivePatch packages compatible with tools like WinZip?
Packages are designed and optimized specifically for the distribution of file updates. Although an ActivePatch package is similar in concept to a Zip archive, the two formats are not compatible.

General Development

1. Does ActivePatch include utilities to create and apply patches?
Yes, utilities are included with the toolkit that can be used to create individual patch files and packages. The complete source for these utilities is included with the product and can be modified to meet any specific needs you may have.
2. Does ActivePatch use a scripting language to create patches?
Unlike other software packages which are used to create patches, it is not required that you learn a special-purpose scripting language to create patch packages. In many cases, only two methods and a few lines of code are required to create a package. However, for those applications which require more complicated packages, you can use your favorite programming language, including scripting languages like VBScript or JScript, to create a package that meets your specific needs.
3. Can ActivePatch be used to distribute updates?
The ActivePatch toolkit is specifically designed for the creation and application of updates. For deployment over the Internet, we recommend that you use the SocketTools ActiveX Edition or SocketTools Library Edition which contains components and/or libraries for uploading and downloading files using the standard FTP and HTTP protocols.
4. Why are patches for executables larger than for data files?
A patch is based on the differences between an original version and an updated version of a file. Typically, changes to text and data files (such as Microsoft Access databases) are localized to specific areas of the file. Changing a single record, for example, results in an extremely small patch file since only that one record has changed. However, when an application is recompiled, even though the source code changes may be small, there are a large number of changes made throughout the entire file. This results in a larger individual patch file because each of those changes must be stored in the patch. In some cases, increasing the patch level can reduce the size of a specific patch, at the expense of increased memory and longer build times.
5. Does ActivePatch use any third-party libraries which must be redistributed?
Both the ActivePatch ActiveX component and the library are completely self-contained and only require libraries which are part of the base operating system. In particular, there are no dependencies on the Microsoft Foundation Classes (MFC42.DLL) library or the Microsoft Visual C++ Runtime (MSVCRT.DLL) library.
6. Is there any performance benefit in using the ActivePatch library?
There is no significant difference in performance between using the ActiveX component or the standard DLL. The choice of which to use in a development project should be based on preference and the language being used to develop the application.
7. Can the ActivePatch ActiveX component be used with Visual C++?
Yes, the ActiveX component can be used in a Visual C++ project. However, most C/C++ programmers will probably find the library interface easier and more intuitive to use.
8. Can the ActivePatch library be used with Visual Basic?
Yes, the library can be used directly within Visual Basic. The ActivePatch library includes a type library and can be referenced in a Visual Basic project which will give the developer access to all of the functions and constants listed in the documentation. However, most Visual Basic programmers will probably find the ActiveX component easier and more intuitive to use.