Как включить зависимости установщика в dmg/pkg на Mac

У меня есть приложение для Mac (например, Sample.pkg, содержащее Sample.app) вместе с несколькими зависимостями pkg (например, A.pkg и B.pkg ). Всякий раз, когда пользователь запускает архив dmg/product, связанный с этими тремя пакетами, A.pkg и B.pkg должны быть запущены первыми, прежде чем будет установлен Sample.pkg.

Есть ли способ, где я могу указать эту зависимость при упаковке приложения Mac, без необходимости пользователю вручную проверять и устанавливать их в правильном порядке?


person Sumalatha Abhishek    schedule 13.07.2015    source источник
comment
Ничего себе, не видя ответа на этот вопрос так грустно!   -  person mattmilten    schedule 23.01.2019
comment
Я пытаюсь решить точно такую ​​же проблему. Прошло 4 года, а ответов нет. @SumalathaAbhishek вам удалось найти какое-либо решение или обходной путь?   -  person Marek R    schedule 05.02.2020


Ответы (1)


Решение

Есть способ. Вы можете добавить такую ​​запись в свой distribution.xml

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<installer-gui-script minSpecVersion="1">
    <title>Application name</title>
    <organization>com.organization</organization>

    ....

    <volume-check>
        <required-bundles description="Some message which UI Installer doesn't show :(">

            <!-- bundle 1 -->
            <bundle id="com.organization.app1" path="Applications/App1.app" />

            <!-- bundle 2 -->
            <bundle id="com.organization.app2" path="Applications/App2.app" />
        </required-bundles>
    </volume-check>

    ....
</installer-gui-script>

Это задокументировано здесь (обязательные пакеты).

Некоторые примеры можно найти на github.

Недостаток

В программе установки Apple есть ошибка, required-bundles description говорит:

Атрибуты

|----------------|------------------|------------------------------------------------------------|
| Attribute name |       Type       |                       Description                          |
|----------------|------------------|------------------------------------------------------------|
|                |                  | _Optional._ Values: `true` (default) to require all of     |
|     `all`      |     Boolean      | the specified bundles, or `false` to require at least one  |
|                |                  | of them.                                                   |
|----------------|------------------|------------------------------------------------------------|
|  `description` |   String,        | _Optional._ A description of the required bundles,         |
|                | localization key | displayed to the user if the requirement is not met.       |
|----------------|------------------|------------------------------------------------------------|

Таким образом, сообщение от description должно отображаться, но я его нигде не вижу, поэтому пользователь может быть сбит с толку, почему он не может установить приложение.

Просто предупреждает: You can't install <your application> here, <your application> do not allow it. (извините, перевод с моей локализации обратно на английский).

Альтернатива

Я видел некоторый установочный пакет, который запускал форму пользовательского сценария installation-check, вызвав его из установочного JavaScript, используя system.run('script_name').

person Marek R    schedule 06.02.2020