2

.pkgNodeJS を必要とする製品の OS Xインストーラーを作成しています。

公式の 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ます。

4

1 に答える 1

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>
于 2015-03-30T06:32:45.833 に答える