2011-11-02 7 views
1

Delphi를 사용하여 Minecraft 버전을 설치할 수 있습니까?
재미있는 부분은 %appdata%\.minecraft\bin\minecraft.jar 버전을 읽어야한다는 것입니다.
그러나 META-INF\MANIFEST.MF 독서없이.Delphi로 Minecraft 버전을 설치하십시오

+0

버전 번호를 알아 내려고 시도하고 계시나요? – thedaian

+0

예. 나는 Minecraft를 모른다. 그러나 주 EXE가 모든 버전에서 같은 경로를 가지고 있다면,이 EXE에서 버전 정보를 간단히 읽을 수있다. [그렇게] (http://stackoverflow.com/questions/5539316/how -can-i-read-details-of-file). 파일 경로가 다른 경우 마이그레이션 경로는 앱 경로 레지스트리 키를 사용하여 찾을 수 있습니다. –

+0

@JohnRiselvato 링크는 무엇입니까? – GolezTrol

답변

2

저는 실제로이 ZIP 파일이라고 생각합니다. 델파이의 최신 버전에는 Zip 파일에 액세스 할 수있는 도구가 있다고 들었습니다. 필자는 JAR 파일의 내부 구조에 익숙하지 않지만 찾고있는 버전 정보가 어딘가에 있다면이 방법으로 압축을 풀 수 있어야합니다.

4

Java 프로그램은 Manifest 파일에 지정되어 있지 않으면 버전이 없습니다.

아마도 개발자는 일부 README 텍스트 파일이나 JAR 파일 내부의 다른 리소스에 버전 번호를 남겨 두었을 것입니다. 아시다시피 ZIP 아카이브 일뿐입니다.

그 중 어떤 것도 작동하지 않는다면 파일 크기에 따라 Minefield 버전의 카탈로그를 작성해야합니다. System FileSize() 함수를 사용하여 JAR 파일의 파일 크기를 가져 와서 카탈로그에서 찾으십시오.

상황에 따라 카탈로그에서 파일 크기를 찾을 수없는 경우 사용자가 카탈로그 한 최신 버전보다 새로운 것으로 가정 할 수 있습니다.

카탈로그의 파일 크기에 의존하는 것보다 더 나은 것은 해시를 생성하는 것입니다. CRC32조차도 충분할 것입니다.

+0

정확히 맞지 않으면 java.lang.Package.getImplementationVersion'을보십시오 – OnTheFly

+0

@ user539484, 정보 주셔서 감사합니다. 문서에는, java.lang.Package.getImplementationVersion가 매니페스트 파일로부터 정보를 취득한다고 기재되어 있습니다. –

+0

매니 페스트가 없거나 훼손 될 수 있으므로 (매니페스트의 버전 태그는 선택적 임) 무작위 관찰 :'> java -jar IDL2Pas.jar -version' print'[XFEIDL] 03.03.03.C1.A2 [XBEJAV]'브래킷 된 문자열은 Messages.properties 파일에서 나오지만 그 5 옥텟은 어떨까요? ? – OnTheFly

2

예, 가능합니다. 모잠비크에서 제공하는 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> 태그에 저장됩니다. 항아리를 수정하지 않으면 버전을 확인하기에 충분합니다.

관련 문제