我有一组可能与第三方用户共享的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.
这种形式的版本检查工作得很好,但有人告诉我,在某些用例中,互联网访问将无法使用,因此这种形式的版本检查会在这些情况下自动失败。
是否有其他形式的版本检查不需要使用互联网,以确保用户使用最新版本的脚本?我已经考虑过每周发布新版本并在代码中硬编码日期,但是很容易改变系统日期并绕过它。
答案 0 :(得分:2)
如果你真的认为每周写一个更新是切实可行的,那么日期的想法并不错。对于商业软件,IT经理通常有责任在第三方案例中更新用户的软件,而不是软件的作者。
您可以使用datetime.datetime.now()
或time.time()
设置软件最初运行的日期,然后将该变量保存为用户本地驱动器上的二进制支持文件(最好在不明显的地方) )。然后在启动时检查参考文件并检查时间,并检查日期是否倒退。
作为额外的支持层,您可以编写更新批处理脚本,IT经理可以从连接互联网的计算机上运行该脚本,该计算机会自动下载您的更新并将其分发给LAN连接的用户群。更新脚本甚至可以作为cron作业/计划任务运行,以便它每周自动运行一次。
正如贾里德所说,一个绝望的人总能规避你的最大努力。目标是使其变得足够复杂以破坏系统,用户不会付出努力。