Auto-Updating Rich-Client Applications
Introduction
Here are some possible things to check when looking for a tool that makes
your application auto-update:
- A product doesn't consist in a single EXE, but a bunch of files, of
different nature (EXEs, OCX and DLL, TXT, JPG, etc.). The tool must handle
the notion of "project", or "package", instead of only
updating a single EXE
- Non-binaries don't have version numbers, and version numbers aren't
reliable anyway (VB uses 3-digit version numbers, Windows uses 3- or 4-digit
numbers depending on the version of Windows; Some binaries are not incremented,
or don't have version numbers altogether). So, must use a hashing system
to identify a file uniquely, in addition to version numbers (you still need
to keep from updating a shared resource if yours is older than the one currently
installed)
- Have mercy on users still connected in dial-up, and download patches
instead of the full file (or they'll hit Escape, and you're back to square
one), especially since the update UI will show up when they launch the main
application to get some work done (no one is going to wait 20mn for the
whole thingie to get updated before being allowed to work)
- What about customers where one host has a modem to connect in dial-up,
and is connected to the other hosts in a LAN with NetBeui only (because
never had the need for TCP/IP since the other hosts aren't connected to
the Net)? What about access rights when updating system files like OCX's
provided by MS?
- Support for major languages for the standard UI, not just English (no,
I don't want to spend time translating all this myself, thank you very much)
- Must run on all versions of Windows, ie. watch out for products based
on IE or the MSI format (must update older Windows for MSI to run)
- Ideally, the tool should be able to parse source files or compiled binaries
to extract what files constitute the program, instead of requiring you to
list each and every file to generate the server-side list
Additional ideas:
- Little or no work to integrate to existing applications (eg. for Classic
VB, just a call in Sub Main() or ActiveX to add to project)
- Ideally, this tool can parse the source code and the compiled EXE and
update the list of dependencies automatically (ie. I don't need to think
about updating the list of dependencies when adding a file to the project
such as a new OCX or some JPG, etc.)
- The UI (eg. "A new version is available. Would you like to upgrade?")
must be available in major languages, not just English
- For those customers connecting in dial-up...
- must be possible to let them ignore the update only for so many
launches or time (ie. we want them to update at least once a month)
- Also for dial-up users: The tool must be able to launch the RAS
connection directly, instead of requiring their clicking on Cancel in
the UI, connect themselves, and relaunch our app
- Able to deploy the update to other hosts on the LAN from the host
that has the Internet dial-up modem
- Since our www server is a shared host, this solution should not require
our installing any binary program on the server, unless it's a PHP script
- Must be easy to deploy, ideally compiled into the main EXE or as an
OCX that we can stick into the EXE with PE Bundle so as to make this change
transparent to our existing customers
- Works on all flavors of Windows
- Anti-virus- and firewall-friendly, and knows how to handle the case
where the user is logged on with insufficient rights to update files
- Handles cumulative patches, and only download the delta this particular
customer needs (ie. if many patches are available since the customer didn't
upgrade for a month, should only retrieve the latest patch, instead of downloading
and patching multiple times)
eUpdator
"eUpdator is a system to add automatic
version checking and updating to your applications. The system was mainly developed
for client / server solutions, where eUpdator provided an easy and secure way
to be sure that all clients are running the latest version. [...] Currently
there are two different clients available, a VCL component for Borland Delphi
developers and a DLL with an API for C/C++."
Updater
"This updater
makes it possible to update your application easily with data in XML format.
This way, you don't have to write your own updater."
mxWebUpdate
"mxWebupdate
adds automatic update support to your application. It retrieves information
from the web, if a newer version available, it can download a file via HTTP
and run the update. Full source code available. Supports Delphi 5, 6, 7
and 2005"
Indigorose
http://www.indigorose.com
TrueUpdate
- Difference with SetupFactory?
- "Software developers who want to add "update from web"
capability to their software will love this tool. Using TrueUpdate you can
add a professional web based updating system to your software. TrueUpdate
is a "must have" tool for any designer, developer, or programmer
who is serious about the evolution of their software. With just a few clicks,
users can find out whether a new version of your product is available, download
it, and install it automatically. Or configure your software to launch TrueUpdate
silently whenever your software it is opened, notifying users as soon as
a new update is available."
- $395.00
- Two applications: One to build the list of files and upload it to the
server, and a client app that you run from your main app to check for updates
- The client app can fetch files from either a web server, or a shared
driver (but the name of this host must be set in the client app, making
it rather theoretical since it's pretty unlikely all your customers name
hosts the same way (since no process is running on the server, no way to
detect this host using eg. broadcast)
Visual Patch
- " Unlike setup programs, which contain all the files needed
to run an application, patches created with Visual Patch contain only the
files that changed from the previous releases."
- $295.00
Setup Factory
- "Built-in HTTP download, web data submission and ZIP file handling
make it easy to distribute changing data."
- $395.00
Wise Installer
http://www.wise.com
Products for System Administrators
Products for Software Developers
- Wise for Windows Installer (generates MSI) 6 Standard $449
- Wise Installation System (script-based)
- Wise for Visual Studio .NET
Wise Language Pack for Wise Package Studio and Wise for Windows Installer
Installer VISE
- http://www.mindvision.com
- "Includes Updater VISE, a multiversion file updater"
- One Year Subscription per programmer $695
- One Language File $200
Microsoft
The availability of two auto-updating solutions, Jamie Cool's "AppUpdater"
and the Updater Application Block released on MSDN, provided a better experience
for the developer and the end user. With both solutions, applications were installed
to the local machine, so they didn't have the performance or security issues
of href-exes, and it was possible for an application to support offline use
.Net
ClickOnce
MSI
rtpatch
xdelta
Redbend
- http://www.redbend.com/
- "Red Bend Software develops advanced technology for updating &
installing complex software, enabling companies to deliver software over-the-air
(OTA) or online, cost-effectively, reliably & securely."
- Price unknown
ZeroG InstallAnywhere
- http://www.zerog.com
- "Zero G Software creates powerful, flexible, and successful solutions
for installing, configuring, and updating software on any platform, including
Windows and .NET, Linux, Mac, Solaris, HP-UX, AIX, z/OS, and NetWare."
- InstallAnywhere 6.1 Enterprise Edition - English $2,999.00
- "PowerUpdate is a multiplatform
software updating and delivery solution for maintaining ISV and internally-developed
software applications."
Catalyst ActivePatch
- http://www.catalyst.com
- "ActivePatch is a software development toolkit that enables your
application to reduce the size of updated files, in some cases by more than
90%, significantly reducing network load and the amount of time that your
users must spend downloading files. More than simple file compression, ActivePatch
analyzes the differences between files at the byte level, and only stores
the information that has changed. Whether you want to provide automatic
updates for your software over the Internet, distribute modified databases
over your corporate WAN or reduce the storage requirements for archived
files, ActivePatch can be used to integrate this functionality directly
into your software without depending on external tools or complicated batch
files and proprietary scripting languages."
- $247.00
ClickTeam PatchMaker
- http://www.clickteam.com
- Ever had to produce and distribute a software patch? Even the most proficient
and careful software developers need to update or patch an existing software
product. With Patch Maker it's easy and the patch is small and secure
Marimba
- http://www.marimba.com/
- "Marimba takes the complexity out of distributing and managing
software in today's dynamic IT environments. By automating the delivery,
installation, updating, repair, removal, and management of applications
and content on desktops, laptops, servers and mobile devices, Marimba reduces
management costs, helps departments meet growing service level demands with
their existing IT staff and reduces business risk associated with downtime
and virus attacks."
- Price unknown
MDiff
CadiaPatch
Updater Plus
- http://www.nartac.com/products/updaterplus/
- "Updater Plus is currently available as a component for Borland's
Delphi version 4, 5, and 6. We are also developing Borland C++ Builder,
ActiveX, and COM versions of Updater Plus." (Last Updated December
19, 2001)
AutoUpdate+
- Tested Aug 2004
- http://autoupdateplus.com/
- Small company license. For companies of 4 or less employees. $139
- All the files that make up the projects (ie. the files that you want
to update on the client host) must live in the same directory ("base
directory")
- No support for languages other than English
- You must tell AutoUpdate the version number of each file manually instead
of having it read this out from the binary (What about files like JPG or
TXT that don't have version numbers?)
Sunisoft IncUpdate
- Tested Aug 2004
- http://www.sunisoft.com/
- "IncUpdate is the tool that helps you to add the professional web
based updating system to your software product in 10 minutes and you needn't
write a single line of code. As it is a developer tool, not component, you
can use it no matter what programming language you are using."
- USD$129
- Doesn't come with pre-translated standard strings. You'll have to translate
the UI yourself
- Stuck at "Please wait while we check for any update" when
trying to download infos from www server. Couldn't figure it out
DTLink Software AppUpdate
- Tested Aug 2004
- http://www.appupdate.com/
- "Support for industry-standard Portable Application Description
(PAD) files hosted on your own web site." (PAD?)
- Based on a 220KB ActiveX control
- Seems like a small revenue, byproduct of their main application; very
little traffic in the Support section
- Only US$ 89.95 per developer: Single Copy or Multiples Copies ("For
multiple user licenses please fax in your order."): Must buy a license
for each customer using the control?
Asta Binary Patcher
- Tested Aug 2004
- http://www.astatech.com/products/binarypatcher/
- $299
- "The typical use of the AstaBinaryPatcher is to efficiently update
remotely deployed EXE's without have to stream down large files. There
are 3rd Party tools that integrate with the AstaBinaryPatcher to provide
a transparent autoupdate process for any application and allow the application
to "check" for an update on a remote server, get a patch and update
an application in place.""
- Seems biased toward Delphi users
- Add-ons: TWebUPdate,
WebUpdate2 ($29.95)
- Neither Asta BP nor the two add-ons seem under development (latest news
in 2002?), and they don't seem to handle a multiple-file project, just a
single file at a time
FileStream InstallConstruct
- http://www.filestream.com
- Price $295.00
- "Have InstallConstruct automatically create an MSI file to
be used with the Windows Installer on Windows ME and XP with Elevated Privileges."
- For update, must give name of each and every file to check, where to
check, and what to do (kid you not)
FlashUpdate
- http://www.synopsis-software.com/
- FlashUpdate Commercial License: $449.00, FlashUpdate Shareware License: $249.00
- Requires inputing logon/password to FTP server, even when you don't
intend to provide this to the user
- On a W2K Pro host (no SP), trial version 1.3.3 crashed with err 429
when adding files to a distribution package, and "Flash update is already
running a window" when relaunching the app
Install Shield
- "InstallShield provides
powerful features and enhanced timesaving tools to make authoring reliable
Windows Installer (MSI), InstallScript™, and Universal Engine installations
easier than ever": What's the diff between MSI and the other two? Do
the last two run on any, bare Windows, even older versions that can't run
MSI?
- InstallShield X Professional ($1399)
- InstallShield X Express $399 (English: Must buy other languages?)
- Update Service 3
- Tuner 5.5
- AdminStudio 5.5
- Patch Impact Manager
- AMS
- DemoShield
iAnywhere Solutions' Manage Anywhere Studio
- http://www.ianywhere.com
- "an easy and effective solution for distributing, installing and
managing software, data and files on remote systems. It enables a central
IT support team to manage distributions to an entire workforce from a single
management console."
- Manage Anywhere Studio 5.2 for Windows $499.00
PEBundle
In PEBundle 3.20, it's now
possible to just add a URL pointing from which a missing required module can
be downloaded. This juste makes it easier to repair broken apps, but doesn't
solve the issue of how to update an application should the main EXE or any dependency
changes.
Desaware's VersionStamper
- VersionStamper
- As Part of the COM Universal bundle $495
- Looks like it hasn't been updated since 2001 (quick try of the demo
showed that the VS control only look in WINDOWS\SYSTEM for DLLs/OCXs, instead
of also looking in \SYSTEM32
Lindersoftware SetupBuilder
- http://www.lindersoftware.com
- "SetupBuilder is the solution for custom Windows installations
with no dependency on the Microsoft's Windows Installer Service (MSI)."
(so, must install Windows add-on on older Windows for the MSI package to
run)
- SetupBuilder 4.03 Standard Edition $199.95
- "SetupBuilder's Web distribution technology allows you to
very easily deploy and update your applications over the Internet. It offers
complete control and flexibility for electronic software distribution and
reduces your company's support costs. [...] Unlike other web deployment
technologies, SetupBuilder does not rely on browser plug-ins or ActiveX
controls, thus freeing your users from having to endure a multimegabyte
download just to get your software. The installation runs as a stand-alone
application and uses the WINSOCK API to download the necessary files
required for the installation." SetupBuilder 4.03 Web Edition (Beta
1.5) $299.95
- Only the non-web, Standard edition was available as trialware
Bennet-Tec UpdateLive
- http://www.bennet-tec.com
- "UpdateLive is designed to keep your applications up to date! Shipping
UpdateLive with your applications keeps your software and data current,
keeps the customers happy, increases sales and reduces distribution and
support costs."
- Price: $750 ea.
Agensoft PatchFactory
- http://www.agensoft.com
- Personal license US $98.00, 2-9 licenses US $88.00
- Generates an EXE that you must download and run
- Patching EXE comes with fixed cost (barely updated a 8KB OCX; the patching
EXE was 45KB)
Practical Software Solutions' PPS Update Check Control
- http://www.practicalsoftwaresolutions.net
- "PSS Update Check is a Royalty Free ActiveX component that allows
you to add that Check for Update button or menu item to you application
in just a few lines of code. Now you can let your users know when the next
release is available and provide them with details on what has changed."
- Requires the VB6 run-time
Resources
Code Samples
Articles