2016-09-20 2 views
4

Я сделал пакет, который включает 2 компонента в соответствии с файлом --component-plist. на файл Plist я добавил следующий флаг, чтобы предотвратить понижение версии:pkgbuild OSX, Принудительный отказ установки в случае понижения

BundleIsVersionChecked: Don't install bundle if newer version on disk? (bool) 

, когда я выполняю сценарий понизить, я получаю следующее сообщение:

Sep 15 11:42:49 os-x-10 installd[284]: PackageKit: Skipping component \ 
"com.my.driverAE21E" (<current_version>) because the version \ 
<new_version> is already installed at <my_component> 

Это, как ожидается, но, к сожалению, установка и другой компонент правильно установлен, а также сценарии preinstall и postintsall - поэтому я получаю смесь обеих версий.

Есть ли способ принудительно выполнить проверку версии компонента до любой попытки их фактической установки и остановить процесс установки, если проверка не прошла.

UPDATE:

Другой подход, который может помочь мне, чтобы предотвратить ход Preinstall и послеустановочные сценариев в случае попытки понизить производится.

Я видел ссылку на неотвеченный вопрос по этому вопросу here.

ответ

1

Что вам нужно сделать, это добавить проверку версий в свой файл distribution.xml для архива продукции, а затем выполнить все необходимые проверки кода JavaScript. Это позволит вам предотвратить запуск установки как можно раньше, возвращая false из функции проверки. Не могу дать вам пример, поскольку я никогда не делал проверку собственной версии самостоятельно, но используя my.target.receiptForIdentifier() и system.compareVersions(), вы должны идти.

Дополнительная информация по этому вопросу: https://developer.apple.com/reference/installerjs (см. «Ссылка на определение XML-схемы определения распределения», см. Описание distribution.xml).

Смежные вопросы