1

是否可以使用 Delphi 安装 Minecraft 版本?
有趣的部分是我需要阅读 %appdata%\.minecraft\bin\minecraft.jar版本。
但不META-INF\MANIFEST.MF读书。

4

3 回答 3

4

除非在 Manifest 文件中指定,否则 Java 程序没有版本。

也许开发人员将版本号留在了一些自述文本文件或 JAR 文件中的一些其他资源中,如您所知,它只是一个 ZIP 存档。

如果这些都不起作用,另一种方法是根据文件大小构建 Minefield 版本的目录。使用 System FileSize() 函数获取 JAR 文件的文件大小并在您的目录中查找它。

根据具体情况,如果在您的目录中找不到文件大小,您可以假设它比您编目的最新版本更新。

比依赖目录的文件大小更好的是生成哈希。即使是 CRC32 也足够了。

于 2011-11-02T16:48:58.883 回答
2

对的,这是可能的。您可以使用mojang 提供的这个 xml 数据。

例如:

<Contents>
<Key>11w47a/minecraft.jar</Key>
<LastModified>2011-11-24T13:20:06.000Z</LastModified>
<ETag>"2ad75c809570663ec561ca707983a45b"</ETag>
<Size>2242242</Size>
<Owner>...</Owner>
<StorageClass>STANDARD</StorageClass>
</Contents>

如您所见,它们在<Key>标签中提供版本和文件名。二进制的 md5 和存储在<ETag>标签中。只要您没有修改您的 jar,这应该足以检查版本。

于 2013-03-12T12:58:53.893 回答
2

我相信JAR 文件实际上只是 ZIP 文件,而且我听说最近版本的 Delphi 有一个带有访问 Zip 文件的工具的单元。我不熟悉 JAR 文件的内部结构,但如果您熟悉,并且您要查找的版本信息存在于某个地方,您应该可以通过这种方式提取它。

于 2011-11-02T15:57:21.640 回答