2016-05-04 17 views
1

私は、サードパーティのユーザーと共有される可能性がある一連のpythonスクリプトを用意しています。彼らが厳密に社内で使用されていたとき、私たちはスタッフに対して非推奨バージョンのスクリプトを使用していました。私は、アップデートがリリースされたときにユーザーにスクリプトを更新させる次のバージョンチェックを組み込んだ。 プログラムの実行時のバージョンチェック

CURRENT_VERSION = "61022050" 

def version_check(): 
    try: 
     response = urllib2.urlopen(url) 
     html = response.read() 
     d = json.loads(html) 
    except Exception: #Version Check Failed. 

    if (d["version"] != CURRENT_VERSION): 
     #Version Check Outdated. Provide link to download. 

    #Version Check Passed. 

は、バージョンチェックのこの形式は、本当によく働いたが、私はいくつかのユースケースでは、インターネット接続が利用できませんと言われたので、バージョンチェックのこの形式は、自動的にそのような場合に失敗します。

ユーザーが最新のリリースのスクリプトを確実に使用できるようにインターネットを必要としない別の形式のバージョンチェックがありますか?私は毎週新しいバージョンをリリースし、コードに日付をハードコーディングすることを考えましたが、システム日付を変更して回避するのはとても簡単です。

+4

"それを回避してください" - あなたは愚かなことを防ぐことはできません。 –

+0

あなたのサードパーティユーザーはあなたの個人的な使用のためにあなたのプログラムを使用していますか?毎週主な機能変更やマイナーな調整を行っていますか? – BHawk

+0

@BHawk社内向けです。私がリリースした各リビジョンは、後で混乱を招く可能性のある解析問題を修正しました。 – C1pher

答えて

2

あなたが本当に毎週更新を書くことが実用的だと思うなら、日付のアイデアは悪いものではありません。商用ソフトウェアの場合、通常、ソフトウェアの作成者ではなく、サードパーティのケースでユーザーのソフトウェアを更新するのはITマネージャーの責任です。

datetime.datetime.now()またはtime.time()を使用してソフトウェアを最初に実行する日付を設定し、その変数をユーザーのローカルドライブ上のバイナリサポートファイルとして保存することができます。次に、時間が経過したことを確認して起動時に参照ファイルをチェックし、日付が逆転したかどうかを確認します。

サポートの追加層として、ITマネージャがインターネットに接続されたコンピュータから実行してアップデートを自動的にダウンロードし、LANに接続されたユーザーベースに配布できるアップデートバッチスクリプトを作成できます。更新スクリプトは、1週間に1回自動的に実行されるように、cronジョブ/スケジュールされたタスクとして実行することもできます。

Jaredが述べたように、絶望的な人は常にあなたの最善の努力を回避することができます。目標は、システムを妨害するだけの複雑さをユーザーに与えないようにすることです。

関連する問題