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



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

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

它找不到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-ref id="org.nodejs.pkg">node.pkg</pkg-ref>

相关内容

  • 没有找到相关文章

最新更新