创建一个使用其他产品.pkg的.pkg安装程序

时间:2015-03-06 12:39:42

标签: node.js macos pkgbuild

我正在为需要NodeJS的产品构建OS X .pkg安装程序。

我正在尝试将official NodeJS pkg installer嵌入我的安装程序的组件包中。

我将官方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之间的依赖关系。

1 个答案:

答案 0 :(得分:0)

找不到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>