是否有可能使用Delphi安裝Minecraft版本?
有趣的部分是我需要閱讀 %appdata%\.minecraft\bin\minecraft.jar
版本。
但沒有META-INF\MANIFEST.MF
閱讀。獲取已安裝的Minecraft版本與德爾福
回答
我相信JAR files實際上只是ZIP文件,而且我聽說Delphi的最新版本有一個帶有工具的單元來訪問Zip文件。我對JAR文件的內部結構並不熟悉,但是如果您是,並且您正在尋找的版本信息存在於某處,那麼您應該能夠以這種方式提取它。
Java程序沒有版本,除非它在Manifest文件中指定。
也許開發人員在JAR文件中的某些自述文本文件或某些其他資源中留下了版本號,正如您所知,它只是一個ZIP壓縮文件。
如果沒有這些工作,另一種方法是根據文件大小構建雷區版本的目錄。使用System FileSize()函數獲取JAR文件的文件大小並在目錄中查找它。
根據具體情況,如果在您的目錄中未找到文件大小,則可能會認爲它比您已編目的最新版本更新。
甚至比依靠文件大小爲您的目錄會生成一個哈希。即使CRC32也足夠了。
這不完全正確,請看'java.lang.Package.getImplementationVersion' – OnTheFly
@ user539484,感謝您的信息。該文檔聲明'java.lang.Package.getImplementationVersion'從清單文件中獲取它的信息。 –
這使我錯了,因爲清單可能會丟失或篡改(AFAIK,清單中的版本標記甚至是可選的)。隨機觀察:''java -jar IDL2Pas.jar -version'打印'[XFEIDL] 03.03.03.C1.A2 [XBEJAV]'括號內的字符串來自'Messages.properties'文件,但那些5個八位字節? – OnTheFly
是的,這是可能的。您可以使用mojang提供的this xml data。
例如:
<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,這應該足以檢查版本。
- 1. 安裝德爾福XE4
- 2. 德爾福xe5安裝zeoslib
- 3. 獲取的LastAccessTime德爾福
- 4. 與德爾福
- 5. 與德爾福
- 6. 與德爾福
- 7. 德爾福 - 安裝的組件丟失
- 8. 德爾福的DirectX組件安裝
- 9. 德爾福的Unicode版本(XE2)
- 10. 德爾福5安裝錯誤
- 11. 獲取已安裝文件的版本
- 12. 德爾福與流
- 13. 德爾福與indy
- 14. MSBuild和多個德爾福版本
- 15. 德爾福版本具體compillation
- 16. 德爾福JEDI安裝程序生成4197不承認2007年德爾福
- 17. 德爾福安卓黑屏後的一些版本
- 18. 訪問日曆安卓與德爾福
- 19. 德爾福組裝電話
- 20. 德爾福獲取目錄的句柄
- 21. 德爾福:與Indy10的MySql
- 22. 德爾福v.Word - 如何從德爾福
- 23. 德爾福HID Delphi7和德爾福XE2
- 24. Redmon&捕獲stdin與德爾福
- 25. 轉換德爾福7代碼與德爾福2009年工作
- 26. 德爾福7 - 從網站獲取值
- 27. 德爾福 - 獲取文件夾圖標
- 28. 德爾福Firemonkey獲取列表設備
- 29. 問題與德爾福XE
- 30. 問題與TdxComponentPrinter(德爾福)
你想弄清楚版本號,或者是什麼? – thedaian
是的。我不知道Minecraft,但是如果主EXE在每個版本中都有相同的路徑,那麼你可以簡單地從這個EXE讀取版本信息,[像這樣](http://stackoverflow.com/questions/5539316/how - 可以 - 我讀 - 細節-的文件)。如果文件路徑不同,那麼migth可以使用應用程序路徑註冊表項來找到它。 –
@JohnRiselvato什麼是鏈接? – GolezTrol