Auto updating a python executable generated with pyinstaller

前端 未结 4 1877
既然无缘
既然无缘 2020-12-15 19:14

I have a desktop app that I\'m working on and I am using PyInstaller to generate de distribution files.

I have chosen PyInstaller over

相关标签:
4条回答
  • 2020-12-15 19:31

    There is also http://www.pyupdater.org/ I see it is not cited here

    0 讨论(0)
  • 2020-12-15 19:41

    as of today pyinstaller has only experimental python3 support. If anyone wants to use esky i would recommend using cx freeze. It supports python 2 and 3 and works on linux mac and windows

    You are then able to use esky. Esky has the advantage of working with a bootstrap mechanism so that you always have at least one runnable version installed.

    0 讨论(0)
  • 2020-12-15 19:52

    I ran into the same issue some time ago--so I wrote a small library (updater4pyi) to do exactly that on Mac OS X, Linux and Windows. You can get it from PyPI for example with

    > pip install updater4pyi
    

    The source repository is at: https://github.com/phfaist/updater4pyi.

    This is a small and not very mature project. It's meant to be as flexible as possible, not relying for example on any specific gui toolkit. I have done some testing on the different platforms, but there may still be bugs. I hope it might be useful to someone else, too.

    0 讨论(0)
  • 2020-12-15 19:57

    You can create a launcher application for your main application and add all the update logic there. The launcher application does the following:

    Displays a pop up (this gives a quick feedback to the user that the program is loading)

    Checks the local and repository versions

    if local < remote (say v1.0 < v2.0) then:

    .... Check at the remote repository for the existence of an updater application called updater_v2.0.exe.

    ........ If there is one: download it run it and exit. (see bellow)

    ........ If there is not: download the latest main application exe and replace the local one (beware of file access rights at this step -- you're trying to write to c:\program files).

    if local > remote then:

    .... Display an error/warning except if this is a developers workstation (you need a setting for this)

    Start up the main application.

    The purpose of the updater application is to accommodate cases where fetching a fresh main application exe is not enough. I also use it in order to update the launcher application itself (that's why the launcher is exiting as soon as it runs the updater - BTW give windows a bit of time before trying to overwrite the laucher executable)

    0 讨论(0)
提交回复
热议问题