auto-upgradable application

R

Rene Aguirre

Hello everybody,

Recently I made a 'improvement' from an 'old' system we used for i2c
bus testing as I had no access to the source code, I started from
scratch on Python/wxPython.

The idea just came from a Python/wxPython trial in my spare time, then
suddently I realized that the system was already a working prototype,
at least the main functions we used from the old software were already
working, so I code for some of the improvements.

At this point some of my partners realized that the new software was
already more productive than the older one, so, I started to
distribute the system using py2exe and an installer (first Inno setup
then "NIS" -nullsoft install system- for bzip2 compression). That's
were my nightmare started.

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?

Rene Aguirre
 
D

Dave Brueck

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
 
C

Christos TZOTZIOY Georgiou

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.

I don't know if that really would help, but you might like to check the
file 'mhautupd.py' in the following directory:

http://www.sil-tec.gr/~tzot/manhang/nt/

which downloads newer versions of the other modules of the program over
HTTP. I believe it won't be hard to suit it to your needs. Basically,
you will need only the first for loop in the do_updownloads function.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,169
Messages
2,570,920
Members
47,462
Latest member
ChanaLipsc

Latest Threads

Top