检查存储库并更新

时间:2012-12-27 17:07:31

标签: python

我正在使用(非常)旧的Python库PyGame制作游戏。但这不是我在这里要问的问题。

如何创建一个代码来检查具有最新版本的服务器中的存储库,检查构建是否更新或相同,如果更新则提示用户下载(或拒绝)游戏更新,因为它将以多个版本开发,并允许玩家在我们进行更改时逐步更新。

像Minecraft一样,一旦更新出来并提示你更新......但是在Python中

1 个答案:

答案 0 :(得分:1)

您需要做三件事:

  1. 您将存储有关更新和版本的所有信息的服务器。

    • 它可以是一个Web服务器(对于Python,请参阅flaskweb.pydjangopylons等,或PHP或其他)单页。
    • 它将当前版本作为输入(GET / POST请求)并输出可用的更新(以可以解析的格式,JSON最好,或XML或只是纯文字)。
    • 可以从数据库中获取这些内容(请参阅MySQLpostgresql或任何适用于您选择的网络服务器的ORM sqlalchemy
    • 或者通过检查服务器上可用文件的名称(如果文件将托管在同一个Web服务器上)(名称将具有模式XXX-r24-20121224.tar.gz,并且您将检查文件列表glob或其他)。
  2. 一段代码,每次启动游戏时都会查询服务器,以便在有更新时检查Web服务器。例如,您可以使用requestsurllib2

  3. 将下载并更新您的实际游戏的一段代码。

    • Web服务器应该为您提供更新文件所在位置的链接
    • 您必须从那里下载(使用requestsurllib2
    • 解压缩(使用zipfiletarfile)并将其替换为您的实际文件。
    • 现在一切都取决于文件的布局方式:
      • 如果您正在分发源代码,那么您可以做的就是在一个包中构建它,然后您只需替换整个包。
      • zipfile包和Python实际上考虑了这一点,它们为您提供了一个选项,只将python文件放在zip文件中,Python为您提供了将所述zip文件添加到{{1}的选项并直接从那里导入。
      • 如果您使用PYTHONPATH或其他任何内容进行编译,则会出现另一个问题:您可能只能更新一个zip文件,或者替换实际的DLL和内容,这可能很大混乱。
      • 如果是deb软件包或类似文件,您可能希望使用它来更新,并要求用户执行此操作。
  4. 我希望这有帮助,即使它非常抽象。必须这样做:))

    现在我将给出我自己的(有偏见的)意见:如果你已经有一个网站在运行,那就用它来为这样的东西添加一个页面。否则我会建议免费托管,以便您使用flask设置网站。我建议,因为它很容易让它立即运行,而且它将允许你使用伟大的ORM sqlAlchemy。此外,我不打算告诉用户有新版本,让他们找出从哪里获取它。除非你只是以一种标准的方式分发它,否则就是这样。