Skip to content
This repository has been archived by the owner on Feb 25, 2018. It is now read-only.
timothy eichler edited this page Feb 11, 2016 · 21 revisions

Why does my program run the old version one last time when updating?

After Esky updates your program the new version won't apply until your program next starts, this is by design as you may have used Esky to update in the background or from a user dialog etc. If you want the new version to apply immediately you will need to explicitly restart your app, there is no universally correct way to do this. One possible way is to re-invoke it with execv. First you will need to find the path of your application executable then you can invoke it like this:

def restart_this_app():
    appexe = appexe_from_executable(sys.executable)
    os.execv(appexe,[appexe] + sys.argv[1:])

How do I find the path of my application executable?

We have some useful helper functions

from esky.util import appdir_from_executable
from esky.util import appexe_from_executable

Why is Esky not finding frozen versions on my server?

Check firewall/antivirus are not blocking the port/program.

Why does esky create 2 executables?

Esky uses a bootstrapping mechanism that keeps the app safe in the face of failed or partial updates.

The top level executable is the one you should be running, it does all the business of managing what version to run. Once it has decided what to run it will run the correct version.