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

标签 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之间的依赖关系.

最佳答案

它没有找到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>

关于node.js - 创建使用另一个产品 .pkg 的 .pkg 安装程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28898994/

相关文章:

macos - OSX .pkg 删除其他开发版本

node.js - 为 Node 发布安装包(sanitizer)以运行 browserquest

python - Pygame崩溃了?

node.js - NodeJs sails 模型替换现有表

xcode - 如何在 Mac 上使用 Apple 推送通知?

c++ - CMake 将依赖项复制到可执行输出路径

macos - 使用shell脚本编辑plist文件

java - Java 和 Mojave 的强化运行时

node.js - 将 RDF/XML 文件转换或转换为 JSON-LD 格式

javascript - Mongoose 的默认 Promise 库在 MEAN 堆栈中已弃用