From: Aahz on
In article <mailman.201.1267054217.4577.python-list(a)python.org>,
Ryan Kelly <ryan(a)rfk.id.au> wrote:
>On Wed, 2010-02-24 at 15:05 -0800, Aahz wrote:
>> In article <mailman.2807.1266614926.28905.python-list(a)python.org>,
>> Ryan Kelly <ryan(a)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(a)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