2016-12-06 7 views
0

productbuildDistribution XML 구조를 기반으로하면 pkg-refversion 속성은 productbuild으로 자동 채워집니다. --version 매개 변수를 productbuild으로 사용하여 패키지 버전을 지정할 수도 있습니다.Mac 패키지 설치 프로그램에서 버전을 확인하도록하는 방법은 무엇입니까?

두 패키지를 만들었습니다 : 패키지 A는 버전 1.0이고 패키지 B는 버전 2.0과 동일한 바이너리입니다. 이 버전은 세 가지 방법으로 주어졌다 :

그러나

  • 버전있는 값 Distribution.xml 파일 내부에 포장 된 바이너리 존재의 버전으로
  • 매개 변수 --version, 설치하지 않는 것 같다 버전을 확인하고 실행중인 패키지를 설치합니다. 버전 2.0을 먼저 설치 한 다음 버전 1.0 패키지를 실행하면 해당 응용 프로그램을 덮어 씁니다.

    버전을 확인하기 위해 설치 프로그램을 어떻게 적용합니까? 패키지 버전을 구분하기 위해 어딘가에 지정해야하는 키/속성/매개 변수가 있습니까?

    function dontDowngrade(prefix) { 
        if (typeof(my.result) != 'undefined') my.result.message = system.localizedString('ERROR_2'); 
        var bundle = system.files.bundleAtPath(prefix + '/Applications/YOURAPPNAMEHERE'); 
        if (!bundle) { 
         return true; 
        } 
        var bundleKeyValue = bundle['CFBundleShortVersionString']; 
        if (!bundleKeyValue) { 
         return true; 
        } 
        if (system.compareVersions(bundleKeyValue, '$packageVersion') > 0) { 
         return false; 
        } 
        return true; 
    } 
    

    오류 문자열 ERROR_2이 Localizable.strings에 있습니다 : 당신의 Distribution.xml 코드에서

  • 답변

    1

    ,이 기능을 추가

    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
    <plist version="1.0"> 
    <dict> 
    <key>ERROR_0</key> 
    <string>This update requires Mac OS X version %@ or later.</string> 
    <key>ERROR_1</key> 
    <string>This software is not supported on your system.</string> 
    <key>ERROR_2</key> 
    <string>A newer version of this software is already installed. </string> 
    <key>SU_TITLE</key> 
    <string>YOURAPPNAMEHERE</string> 
    </dict> 
    </plist> 
    

    나는 bash는 스크립트에서이 모든 것을 넣어와를 사용 텍스트를 쉘 변수로 대체하는 여기 문서. 예를 들어 $ packageVersion은 내 앱의 버전입니다 (예 : "2.0.0.0". YOURAPPNAMEHERE 문자열은 쉘 변수로 대체 될 수도 있습니다.

    cat <<EOF >"Distribution.xml" 
    <?xml version="1.0" encoding="utf-8"?> 
    ...other text... 
    EOF 
    

    iTunes 설치 프로그램을 통해 많은 것을 배울 수 있습니다. 설치 프로그램을 다운로드, 그것은의가 .pkg 밖으로 파일과 확장 드래그 마운트 :

    $ /usr/sbin/pkgutil --expand Install\ iTunes.pkg iTunesExpanded 
    

    다음 코드를보고 이에 대한 주위

    +0

    감사를 찌를 수 있습니다! 이것은 아주 좋은 리드입니다. 특히 iTunes.pkg를 예로들 수 있습니다. 그 패키지를 검사 할 생각은 없었어. – radj