2016-05-04 97 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連接的用戶羣。更新腳本甚至可以作爲cron作業/計劃任務運行,以便每週自動運行一次。正如Jared所說,一個足夠絕望的人總是可以繞過你的最佳努力。目標是讓系統破壞足夠複雜,用戶不會付出努力。