【问题标题】:Self updating game in javajava中的自我更新游戏
【发布时间】:2013-08-04 11:40:54
【问题描述】:

我正在用 Java 制作一个游戏,它具有以下重要特性:

1) 连接到远程服务器(我制作的),并将检查更新并在必要时安装它们 2) 不是单个 .JAR 文件(即有多个 .jar 和其他内容,例如 .png、.wav 等) 3) JAVA WEB START 不是一个选项,因为我想自己做这件事

记住上面的事情,我遇到了一个问题。我不知道如何实现多个“补丁”更新系统。目前我有 1 个 .txt 文件,服务器从中读取,并将 .txt 中列出的文件发送到客户端,然后将它们移动到位。问题是,这仅对可能 2 次更新有用。我正在寻找更有用的长期解决方案,我需要一些帮助。以下是我想到的一些事情:

1) 有一个以每个版本命名的 zip 文件夹(问题:客户端如何获取所有最新的文件 2)在每个 jar 中都有一个包含版本的 .txt 文件(问题:不能用 png 或 wav 做到这一点,我不知道如何读取 txt 文件开始)

我真的需要一些帮助,我已经尝试用谷歌搜索它,我已经考虑了 3 周了,但什么都想不出来。

问题:如何使用多个补丁更新游戏/程序?

【问题讨论】:

  • 我很好奇,JNLP 和 Java Web Start 有什么问题?它为安全和源身份验证提供代码签名,它缓存文件供您以后使用,它仅在服务器上的文件更改时更新。您真正需要做的唯一事情是编写 JNLP 文件并在您的服务器上托管 JNLP 文件和相关 jar。它会比你自己编写的任何东西都更安全、更健壮。

标签: java jar version patch


【解决方案1】:

首先,长期来看最好的解决方案是使用 Webstart / JNLP。

但是,如果您坚持不使用它(无论出于何种原因),那么在技术上是可行的。然而:

  • 杂乱无章。

  • 要么效率非常低(因为每次用户都必须加载整个程序),要么用户必须足够信任你才能安装你的程序并获得允许它安装随机内容的权限在他的机器上,恕不另行通知。

这样做的方法是将游戏分成启动器部分和应用程序部分。启动器需要权限才能写入和删除(非临时)文件,以及从 Internet 获取内容。它“回拨”以找出应用程序文件的最新版本,然后下载并安装它们。它必须应对各种错误情况,并且它需要确保没有任何东西可以欺骗它在用户的机器上安装坏东西,等等,是否有人欺骗了你的更新服务。

当然,JNLP 会处理所有这些,除此之外还有更多。人们将更愿意安装您的 JNLP 基础架构……这可能不安全,或者非常讨厌(据他们所知)。 (我不会在我的机器上安装自我更新应用程序,除非它是由具有无可挑剔凭据的公司提供的。)

【讨论】:

    【解决方案2】:

    我想你这里需要JNLP 框架。

    JNLP 提供以下内容:

    • 允许用户从服务器下载 jars
    • 启动时验证应用程序是否需要更新
    • 在本地 JVM 上运行

    实际上,每个 Java 应用程序都可以转换为 JNLP。只需在您的游戏包含的所有 jar 上签名,从您的游戏创建可执行 jar 并创建一个网页,您可以从中下载您的游戏

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多