Mac App Store

Документ Apple по отправке приложения в MacApp 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: error: не найден список определения продукта в "product_definition.plist".

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

2 ответа

Решение

В документе 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

Если вы запускаете 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 просто создайте новый plist и добавьте пары ключ / значение в соответствии с вашими требованиями и возможными значениями, перечисленными в файле man.

Другие вопросы по тегам