程序执行时的版本检查

时间:2016-05-04 20:19:52

标签: python python-2.7

我有一组可能与第三方用户共享的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.

这种形式的版本检查工作得很好,但有人告诉我,在某些用例中,互联网访问将无法使用,因此这种形式的版本检查会在这些情况下自动失败。

是否有其他形式的版本检查不需要使用互联网,以确保用户使用最新版本的脚本?我已经考虑过每周发布新版本并在代码中硬编码日期,但是很容易改变系统日期并绕过它。

1 个答案:

答案 0 :(得分:2)

如果你真的认为每周写一个更新是切实可行的,那么日期的想法并不错。对于商业软件,IT经理通常有责任在第三方案例中更新用户的软件,而不是软件的作者。

您可以使用datetime.datetime.now()time.time()设置软件最初运行的日期,然后将该变量保存为用户本地驱动器上的二进制支持文件(最好在不明显的地方) )。然后在启动时检查参考文件并检查时间,并检查日期是否倒退。

作为额外的支持层,您可以编写更新批处理脚本,IT经理可以从连接互联网的计算机上运行该脚本,该计算机会自动下载您的更新并将其分发给LAN连接的用户群。更新脚本甚至可以作为cron作业/计划任务运行,以便它每周自动运行一次。

正如贾里德所说,一个绝望的人总能规避你的最大努力。目标是使其变得足够复杂以破坏系统,用户不会付出努力。