【问题标题】:Creating a .pkg installer that makes use of another product .pkg创建使用另一个产品 .pkg 的 .pkg 安装程序
【发布时间】:2015-03-06 12:39:42
【问题描述】:

我正在为需要 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 之间的依赖关系。

【问题讨论】:

    标签: node.js macos pkgbuild


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 2020-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多