Upgrading Py2exe App

Aahz aahz at pythoncraft.com
Sun Feb 28 14:44:44 EST 2010


In article <mailman.201.1267054217.4577.python-list at python.org>,
Ryan Kelly  <ryan at rfk.id.au> wrote:
>On Wed, 2010-02-24 at 15:05 -0800, Aahz wrote:
>> In article <mailman.2807.1266614926.28905.python-list at python.org>,
>> Ryan Kelly  <ryan at rfk.id.au> wrote:
>>>
>>>Yes.  The idea of having a "bootstrapping exe" is that actual
>>>application code can be swapped out without having to overwrite the
>>>executable file.  As long as you don't change python versions, this
>>>allows updates to be safe against system crashes, even on platforms
>>>without atomic file replacement.
>>>
>>>So the frozen app does this in a background thread:
>>>
>>>   Esky(sys.executable,"http://my.updates.com").auto_update()
>>>
>>>And it hits the given url, grabs the latest zipfile, downloads and
>>>unpacks and atomically places it into the application directory.  Et
>>>viola, your app is at the latest version.
>>
>> How does this work with a running app?  What if the app is a service?
>
>The changes will only take effect the next time the app is started -
>currently there's no support for "hot upgrading" a running app.

>From my POV, hot upgrading is less important than solid restart
capabilities, particularly for services.  Performing tasks like modifying
the DB schema is also important (not the actual capability, but hooks for
it).  E.g., the next time the app starts, it should know that it's been
upgraded.
-- 
Aahz (aahz at pythoncraft.com)           <*>         http://www.pythoncraft.com/

"Many customs in this life persist because they ease friction and promote
productivity as a result of universal agreement, and whether they are
precisely the optimal choices is much less important." --Henry Spencer



More information about the Python-list mailing list