Создание установщика .pkg, использующего другой продукт .pkg

Я создаю установщик OS X .pkg для продукта, для которого требуется NodeJS.

Я экспериментирую с возможностью встраивания официального установщика NodeJS pkg в качестве компонента моего установщика.

Я загрузил официальный pkg в packages/node.pkg и изменил свой distribution.xml, чтобы он выглядел так:

...
        <pkg-ref id="org.nodejs.pkg">node.pkg</pkg-ref>

        <choices-outline>
                <line choice="org.nodejs.pkg" />
        </choices-outline>

        <choice
                id="org.nodejs.pkg"
                visible="false"
                title="nodejs"
                description="NodeJS"
                start_selected="true">
            <pkg-ref id="org.nodejs.pkg" />
        </choice>
...

Однако при сборке с productbuild:

productbuild --distribution distribution.xml \
    --resources resources \
    --package-path packages \
    --version 0.2.3 \
    setup.pkg

Я получаю следующее предупреждение:

productbuild: warning: package packages/node.pkg could not be loaded

Я отбросил возможность того, что packages/node.pkg по какой-то причине не может существовать (возможно, я скачал pkg в другое место):

$ file packages/node.pkg
packages/node.pkg: xar archive - version 1

Что мне не хватает?

Это потому, что я пытаюсь использовать пакет продукта в качестве пакета компонентов моего собственного пакета продукта?

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


person jviotti    schedule 06.03.2015    source источник


Ответы (1)


Он не находит пакет node.js. Вы должны изменить следующую строку с правильным путем:

<pkg-ref id="org.nodejs.pkg">node.pkg</pkg-ref>

Если вы связали node.pkg ВНУТРИ вашего пакета как пакет компонентов, вы должны использовать следующее: (Обратите внимание на использование # перед именем пакета)

<pkg-ref id="org.nodejs.pkg">#node.pkg</pkg-ref>

Если вы сохранили node.pkg вне вашего пакета (скажем, он присутствует в том же каталоге, что и ваш pkg), вы можете использовать относительные пути:

<pkg-ref id="org.nodejs.pkg">node.pkg</pkg-ref>
person Vikram Singh    schedule 30.03.2015