auto-upgradable application

Dave Brueck dave at pythonapocrypha.com
Wed Nov 5 12:43:46 EST 2003


> The endless request from my partners to fix the bugs or add new
> features already solved on the new version was really annoying.
>
> So, I was thinking about adding an auto update feature to my app, if
> anybody knows about any package for these purpose would be great.
>
> If not at least I'll write a very basic script (different 'exe' on the
> distribution) that checks for a a new version (on an intranet/internet
> location), if so and no update to the main core is done (the Python or
> wxPython libraries) then update the changes or display a message to
> update to the latest version for main core update.
>
> Do you have a better idea?

No, that approach works pretty well. At my company I created a build process
that spits out  the installer, the "full update" and the "incremental"
update. New users always download and install using the installer. Our app
is a networked app already, and part of the message that periodically comes
back from the server (client talks over XMLRPC to a Zope server) is info on
the latest version number and download locations.

If the client detects that it is out of date, it looks at the version info
to see if it is eligible for the incremental update and downloads it,
otherwise it downloads the full update (both are just zip files - full
update is about 4 MB, incremental is usually around 1MB. If your users are
all on a LAN then it's probably not worth the extra effort to distinguish
between full and incremental IMO). Once the update has been downloaded the
GUI prompts the user to see if they'd like to install it right away or wait.
When the installation is kicked off, a tiny separate program waits for the
main app to shutdown, unpacks the new files, and then relaunches the app.

One last thing that you probably don't need is that the client reports to
the server its version. This lets you keep track of how many users are still
on an old version, but in our scenario we also use it so that the server can
send back a "you're too old and must upgrade!" message so that the
client-server protocol can gracefully evolve over time.

-Dave






More information about the Python-list mailing list