Получить установленную версию Minecraft с Delphi - PullRequest
1 голос
/ 02 ноября 2011

Можно ли получить установленную версию Minecraft с помощью Delphi?
Интересно то, что мне нужно прочитать %appdata%\.minecraft\bin\minecraft.jar версия.
Но без META-INF\MANIFEST.MF чтения.

Ответы [ 3 ]

4 голосов
/ 02 ноября 2011

Java-программа не имеет версии, если она не указана в файле манифеста.

Возможно, разработчик оставил номер версии в каком-то текстовом файле readme или в другом ресурсе внутри файла JAR, который,как вы знаете, это всего лишь ZIP-архив.

Если ничего из этого не работает, альтернативой будет создание каталога версий Minefield, основанного на размере файла.Используйте функцию System FileSize (), чтобы получить размер файла JAR и найти его в своем каталоге.

В зависимости от обстоятельств, если размер файла не найден в вашем каталоге, вы можетепредположить, что он новее, чем последняя версия, которую вы каталогизировали.

Даже лучше, чем полагаться на размер файла для вашего каталога, было бы сгенерировать хеш.Даже CRC32 будет достаточно.

2 голосов
/ 12 марта 2013

Да, это возможно.Вы можете использовать эти данные xml , предоставленные mojang.

Например:

<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, этого должно быть достаточно для проверки версии.

2 голосов
/ 02 ноября 2011

Я считаю, JAR-файлы на самом деле являются просто ZIP-файлами, и я слышал, что в последних версиях Delphi есть устройство с инструментами для доступа к Zip-файлам. Я не знаком с внутренней структурой файлов JAR, но если это так, и информация о версии, которую вы ищете, где-то присутствует, вы сможете извлечь ее таким образом.

...