2016-08-27 3 views
0

Я разрабатываю программное обеспечение, и по нескольким причинам хочу разработать собственную функцию автоматического обновления. Программа представляет собой полный графический интерфейс, написанный с помощью PyQt, и использует значки, файлы данных и т. Д. Он будет заморожен с помощью cx_freeze или pyinstaller.Обновить программу: перезаписать файлы?

Часть автообновления загрузит новую версию (zip) на удаленном сервере. Затем это осложняется:

Программное обеспечение запущено и загрузило новую версию. Что он делает с новой версией? Может ли программа извлечь файлы из zip и перезаписать файлы запущенной версии?

Или мне нужно сохранить новую версию в сторону, выйти из текущей версии и как-то использовать новую версию? Если да, то как мне сделать обмен между старой и новой версией?

EDIT:

Вот, например, closeEvent метод моего класса QMainWindow:

def closeEvent(self, event): 

    """Method to perform actions before exiting. 
    Allows to save the prefs in a file""" 

    ...Do some stuff... 

    QtGui.qApp.quit() 

    self.logger.info("Closing the program") 

Могу ли я использовать этот метод для выполнения обмена?

+0

Открыть нить без 'deamon' удалить старые файлы, а затем извлечь новые. Но нужно сравнить все файлы конфигурации с отсутствующими/недопустимыми параметрами. Конечно, запустите все связанные приложения, прежде чем начинать новый! – dsgdfg

+0

Я отредактировал мой вопрос, чтобы быть более точным, если это поможет. Не могли бы вы показать мне, как и где я должен открыть поток? – Rififi

ответ

0

Это аналогично question к твоему и принятый ответ говорит:

После загрузки программы установки для новой версии, вы можете использовать atexit.register() с os.exec*(), чтобы запустить программу установки, например atexit.register(os.execl, "installer.exe", "installer.exe"). Это приведет к тому, что установщик начнет работу, когда приложение достигнет выхода. Приложение немедленно выйдет после вызова os.exec*() , поэтому никаких условий гонки не произойдет.

выглядит как хорошее решение для вашего сценария использования

Смежные вопросы