productbuild의 Distribution XML 구조를 기반으로하면 pkg-ref
의 version
속성은 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 코드에서
감사를 찌를 수 있습니다! 이것은 아주 좋은 리드입니다. 특히 iTunes.pkg를 예로들 수 있습니다. 그 패키지를 검사 할 생각은 없었어. – radj