Сборка продуктов в Mac App Store

#macos #installation #package #mac-app-store #productbuild

#macos #установка #пакет #mac-app-store #сборка продукта

Вопрос:

Документ Apple о отправке приложения в Mac App Store содержит этот пример использования команды productbuild из /Developer/usr/bin/.

 productbuild 
--component build/Release/Sample.app /Applications 
--sign "3rd Party Mac Developer Installer: Name1 Name2" 
--product product_definition.plist Sample.pkg
  

Когда я запускаю эту команду в своем примере приложения, я получаю сообщение об ошибке:

productbuild: ошибка: в «product_definition.plist» не найден список определений продукта.

Что это за product_definition.plist, откуда он должен взяться, что должно быть внутри него и какой инструмент следует использовать для создания этого списка?

Комментарии:

1. Примечания: Сертификаты действительны и находятся в связке ключей. Приложение в каталоге сборки релиза загружает тестовую квитанцию из App Store и запускается корректно.

2. Ваша ссылка на документацию Apple не работает…

Ответ №1:

Из документа Apple, на который вы ссылались: «Вы должны указать отдельный компонент, подпись и (необязательно) файл определения продукта«.

Если у вас нет особых требований, вам не нужен файл определения продукта. Если вам это нужно, на странице руководства productbuild есть много информации. Это просто словарь plist, как в этом примере:

 <?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>gl-renderer</key>
    <string>( 'GL_APPLE_float_pixels' IN extensions )</string>
</dict>
</plist>
  

Я проверил, что Xcode не использует файл определения продукта, когда вы предоставляете общий доступ к архивному приложению в виде пакета. Это фактическая командная строка:

 /usr/bin/productbuild --component <path-to-xcarchive>/Cool.app 
                      /Applications 
                      <tmp-path>/package.pkg 
                      --sign 3rd Party Mac Developer Installer
  

Ответ №2:

Если вы запустите man productbuild и посмотрите на раздел СПИСОК СВОЙСТВ ОПРЕДЕЛЕНИЯ ПРОДУКТА, который начинается с

 PRODUCT DEFINITION PROPERTY LIST
 When you use productbuild to synthesize a distribution (e.g. with the --component option), you can specify additional parameters and
 requirements in a separate property list file, specified with the --product option. At the top level, this property list is a dictio-
 nary, with the following keys:

 Key                       Description
 os                        Minimum allowable OS versions (array of strings)
 arch                      Supported architectures (array of strings)
 ram                       Minimum required RAM in gigabytes (real)
 bundle                    Specific bundles that must exist on the system (array of dictionaries)
 all-bundles               Are all of the bundles specified required? (Boolean)
 gl-renderer               Required OpenGL capabilities (string)
 cl-device                 Required OpenCL capabilities (string)
 single-graphics-device    Must OpenGL and OpenCL requirements be met by a single device? (Boolean)
 home                      Should installation be allowed in user home directory? (Boolean)
  

Предоставляется намного больше информации, которую вы сможете сгенерировать с помощью XCode или текстового редактора.
В XCode просто создайте новый список и добавьте пары ключ / значение в соответствии с вашими требованиями и возможными значениями, перечисленными в файле man.