2016-08-27 8 views
0

私はソフトウェアを開発しています。私は、いくつかの理由から、私自身の自動更新機能を開発したいと思います。このプログラムはPyQtで書かれた完全なGUIで、アイコン、データファイルなどを使用します。これはcx_freezeまたはpyinstallerでフリーズされます。更新プログラム:ファイルを上書きしますか?

自動更新パーツは、新しいバージョン(zip)をリモートサーバーにダウンロードします。その後、複雑になる:

ソフトウェアが実行され、新しいバージョンをダウンロードしました。新しいバージョンではどうなるのですか?ソフトウェアはzipからファイルを抽出し、実行中のバージョンのファイルを上書きできますか?

新しいバージョンを別に保存して、実行中のバージョンを終了して何とか新しいバージョンを使用する必要がありますか?もしそうなら、旧バージョンと新バージョンとのやり取りはどうしたらいいですか?

EDIT:

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") 

は私が交換を実行するには、このメソッドを使用することができます:ここで

は、例えば私のクラスのQMainWindowのcloseEvent方法ですか?

+0

オープンスレッドのための良い解決策のように見えます。しかし、欠落している/無効なパラメータのすべての構成ファイルを比較する必要があります。もちろん、新しいアプリケーションを起動する前に関連アプリケーションをすべて終了してください! – dsgdfg

+0

私の質問がより正確になるように編集しました。どのように、どこでスレッドを開くべきか私に教えてください。 – Rififi

答えて

0

これが言うあなたと受け入れ答えにquestion似ています。新しいバージョンのインストーラをダウンロードした後

、インストーラを実行するためにos.exec*()atexit.register()を使用することができ、例えば atexit.register(os.execl, "installer.exe", "installer.exe")。 これは、アプリケーションが約 の終了時にインストーラを起動させます。アプリケーションは、os.exec*() 呼び出し後すぐに終了するため、競合状態は発生しません。

は、古いファイルを削除deamon`、後で新しい抽出し `なしでご利用の場合

関連する問題