2011-03-05 6 views
4

나는 코드화하고 .pkg로 만든 MAC OSX 용 Java 응용 프로그램을 가지고 있습니다. .pkg를 만드는 동안 버전 번호도 부여했습니다. 이제 응용 프로그램이 실행될 때 업데이트를 확인할 수 있도록 내 Java 코드에서이 응용 프로그램의 버전 번호를 가져와야합니다. 내 앱 파일을 마우스 오른쪽 버튼으로 클릭하면 패키지를 만드는 동안 입력 한 버전이 표시되지 않습니다..pkg 파일의 버전을 가져 옵니까?

pkg 빌드를 위해 jar bundler를 사용하여 만든 내 응용 프로그램 파일의 버전을 설정해야합니까?

내가 어떻게 이것을 수행 할 수 있는지 제안 해주십시오.

+0

다른 전략을 보려면 [이 답변] (http://stackoverflow.com/questions/1389047/autoupdate-feature-in-a-java-swing-desktop-app/1403234#1403234)을보십시오. 버전을 확인하지 않아도됩니다. –

답변

1

PackageMaker Project에서 패키지를 생성하는 동안 설정 한 버전 번호는 .app-File의 버전이 아니라 설치 프로그램의 버전입니다. 다른 설치 관리자가 현재 설치를 다운 그레이드하는지 여부를 확인할 수 있도록해야합니다. 설치 프로그램은 시스템에 설치중인 내용을 절대로 보지 않습니다.

.app-Bundle의 버전을 설정하려면 .app-file을 마우스 오른쪽 단추로 클릭하고 나타나는 메뉴에서 "패키지 내용 표시"를 선택하십시오. "Contents"폴더를 열면 "Info.plist"라는 파일이 있습니다. 이 파일을 편집해야하며 거기에 응용 프로그램의 버전 정보를 설정해야합니다. 예를 들어, 속성 목록 편집기 (Apple Developer Tools에 포함) 또는 BBEdit과 같은 다른 도구를 사용하여이 작업을 수행 할 수 있습니다.

응용 프로그램의 .plist에서 읽으려면 특수 라이브러리가 필요합니다. Daniel Dreibrodt의 Java property list library (this post on my blog에서 찾을 수있는 .plist 형식에 대한 자세한 정보)을 권합니다.

일반적으로 업데이트 목적으로 사용하는 앱 번들의 버전 정보를 설정해야합니다. 설정되지 않은 경우 사용자는 소프트웨어를 시작하지 않고 설치 한 버전에 대한 정보를 얻을 기회가 없습니다.

.pkg 파일의 버전이 필요하지 않은 경우 .app-Bundle 버전이 필요합니다. 어쨌든 .pkg 파일의 버전은 .app 파일과 같은 방식으로 처리됩니다. 정보를 찾을 수있는 Info.plist도 있습니다. 동일한 라이브러리로 파싱 될 수도 있습니다.

0

pkg는 a.o.가 포함 된 zip 파일입니다. PackageInfo라는 파일 PackageInfo XML 파일은 다음과 같이보고한다 : 응용 프로그램 버전을 얻으려면

pkg-info/@version 

:

<pkg-info format-version="2" identifier="com.mycompany.pkg.MyApp" version="1.2.0" overwrite-permissions="false" install-location="/" auth="root"> 
<payload installKBytes="4717" numberOfFiles="146"/> 
<scripts> 
    <preinstall file="./preinstall"/> 
    <postinstall file="./postinstall"/> 
</scripts> 
<bundle-version> 
    <bundle path="./Applications/MyApp.app" CFBundleShortVersionString="1.2.0" CFBundleVersion="166" id="com.mycompany.MyApp" CFBundleIdentifier="com.mycompany.MyApp"> 
     <bundle path="./Contents/Library/LoginItems/HelperApp.app" CFBundleShortVersionString="1.0" CFBundleVersion="1" id="com.mycompany.HelperApp" CFBundleIdentifier="com.mycompany.HelperApp"/> 
    </bundle> 
</bundle-version> 
</pkg-info> 

패키지 버전을 얻으려면, 다음과 같은 XPath를 사용할 수

pkg-info/bundle-version/bundle/@CFBundleShortVersionString 

을 그리고 빌드 번호는 여기에 있습니다 :

pkg-info/bundle-version/bundle/@CFBundleVersion 
관련 문제