、この機能を追加します。
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である:
<?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
次にあなたがコードを確認し、このために周りの
感謝を突くことができます!これは非常に良いリードです。特に例としてiTunes.pkgを指しています。そのパッケージをチェックすることは決して考えなかった。 – radj