4

私は独自のプログラムを開発しましたが、プログラムに利用可能なアップデートがあることをユーザーに動的に伝えたいと思います。このプログラムはクロスプラットフォームになるように設計されており、Pythonで書かれています。更新には2つのタイプがあります。

1)データの更新(プログラムの実行に必要な情報を含むxmlファイルは更新でした)-このタイプの更新は、はるかに頻繁に発生します

2)システムアップデート(実際の実行可能ファイル[コンパイルされたPythonプログラム]がアップデートされます-このタイプのアップデートはそれほど頻繁には発生しません

オンラインデータベースに接続し、そこに投稿されているバージョンを現在のプログラムバージョンと比較して、更新があるかどうかを確認できるようにする必要があります。サーバーからの更新がある場合、プログラムは最小限のユーザー入力でその更新をダウンロードしてインストールできる必要があります。私の質問は、プログラムをクラッシュさせたり、ユーザーに手動でダウンロードしてインストールするように依頼したりせずに、更新を体系的にチェックしてからダウンロードしてインストールするようにプログラムに指示するにはどうすればよいですか?

4

2 に答える 2

5

簡単な回避策は、サーバーにある種のファイル(たとえば、program.txt)を配置し、その中に最新バージョンに関する基本情報を配置することです。次に、プログラムとともにダウンロードする同様のtxtファイル(たとえばversion.txt)があり、コードに関数を入れてversion.txtとprogram.txtを比較します。それらが同じである場合、プログラムは最新です。そうでない場合は、ネットに接続して最新バージョンをダウンロードする必要があります。

Python関数:

import Tkinter
import urllib

def updateCheck(self):
    update = False

    updateWindow = Tkinter.Toplevel()
    updateWindow.title(string="Update Checker")
    updateWindow.resizable(False, False)

    #Gets downloaded version
    versionSource = open('version.txt', 'r')
    versionContents = versionSource.read()

    #gets newest version
    updateSource = urllib.urlopen("http://www.suturesoft.com/Updates/craftbook.txt")
    updateContents = updateSource.read()

    #checks for updates
    for i in range(0,20):
        if updateContents[i] != versionContents[i]:
            dataLabel = Tkinter.Label(updateWindow,text="\n\nThere are data updates availible.\n\n")
            dataLabel.pack()
            update = True
            break
    for i in range(22,42):
        if updateContents[i] != versionContents[i]:
            versionLabel = Tkinter.Label(updateWindow,text="\n\nThere are version updates availible.\n\n")
            versionLabel.pack()
            update = True
            break
    if update == False:
        versionLabel = Tkinter.Label(updateWindow,text="\n\nYou are already running the most up to date version.\n\n")
        versionLabel.pack()

proram.txtおよびversion.txt:

data_version:10.11.12
exec_version:10.11.12

この場合、プログラムはプログラムが最新であることを通知します。

于 2012-10-12T04:14:43.927 に答える
5

xmlファイルと実行可能ファイルの現在のバージョン番号を返す単純なWebサービスをセットアップします。プログラムを起動時にこのWebサービスにダイヤルしてもらい、Webサービスが新しいバージョン番号を返した場合、プログラムのローカルコピーにあるものを更新できる(または自動更新プロセスを開始できる)ことを示すメッセージをユーザーに表示します。 。

于 2012-10-11T15:07:01.250 に答える