Как запретить установщику.pkg искать включенные.app (s) в местах, отличных от указанного каталога установки,
Эта проблема обсуждалась несколько раз на Stackoverfl0w, но, к сожалению, я не нашел действительно удовлетворительного решения.
Ситуация:
(Включено только потому, что большинство предыдущих ответов сопровождалось строкой "Просто не делайте этого! Нет причин иметь несколько версий приложения... и т. Д.", С чем я согласен в большинстве случаев, но не в этом.)
В настоящее время мы отправляем файл.pkg, который устанавливает наш программный пакет, в /Applications/$CompanyName/$SoftwareName_$VersionNumber . Включение номера версии в имя папки и не удаление старых версий необходимо, поскольку многие из наших клиентов используют нашу текущую версию и бета-версию параллельно, и, кроме того, многие клиенты работают со старой версией программного обеспечения, поскольку они сертифицировали ее для определенного использования. случае, но они используют текущую версию для текущих проектов.
Раньше мы поставляли только инструменты командной строки и библиотеки для macOS, поэтому в течение многих лет мы работали совершенно нормально.
Однако мы начали переносить наши приложения с графическим интерфейсом из Windows только на Windows / macOS / Linux, которые поставляются в формате.app под macOS.
Проблема:
Если.app поставляется в установщике.pkg, установщик ищет на старом диске старые экземпляры того же.app. Если он находит один, он заменяет найденный экземпляр (очень плохой), а также не помещает.app в указанный установочный каталог (также плохой).
Решения, которые я нашел:
а) Изменение CFBundleIdentifier.app для каждой выпущенной версии. Кажется, не как чистый путь для меня. Я предполагаю, что это также приведет к тому, что.app появится несколько раз в Launchpad
б) Поиск всех экземпляров.app до того, как это сделает установщик, архивирование их и повторное извлечение после установки. (Также не похоже на хорошее решение.)
У кого-нибудь есть чистый способ для этого? Не могу поверить, что у Apple нет способа указать, что это поведение должно быть опущено при создании.pkg.
Есть ли лучшая документация, чем та, которую я нашел?
http://s.sudre.free.fr/Stuff/Ivanhoe/FLAT.html (Хорошая документация, но после ~8 лет безотказной работы многие поля по-прежнему помечены как "Описание будущего".)
РЕДАКТИРОВАТЬ: Добавлен XCode в качестве тега. Столкнувшись после того, как заработал камышом с этим вопросом. Буду признателен за любое предложение:)
1 ответ
Свойство "переместить" в файле дистрибутива, кажется, контролирует это. К сожалению, похоже, что вы можете включить "перемещение" только путем добавления этого ключа, но не можете отключить его, пропустив ключ. Согласно документации Apple по дистрибуции XML, по умолчанию для пакетов.app используется "перемещение".