2016-05-04 65 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所说,一个足够绝望的人总是可以绕过你的最佳努力。目标是让系统破坏足够复杂,用户不会付出努力。