2

p2より前では、インストール中に「カスタム」タスクを実行するために実行された機能を使用して、カスタムインストールハンドラーを作成できました。

p2では、カスタムインストールハンドラーがサポートされなくなったことがわかります。その代わりに「カスタムタッチポイント」があると聞いています。

ただし、具体的な例やドキュメントは見つかりません。

p2アップデートマネージャを使用してカスタムインストールハンドラの機能を取得する方法を教えてもらえますか?

編集:私がやりたいことの説明-

eclipse.iniファイルを編集し、-Xmxプロパティを64ビット環境と32ビット環境のどちらで実行しているかに基づいた値に設定する必要があります。

編集2:次の行を使用して機能にp2.infファイルを作成しようとしました-

instructions.install = \
addJvmArg(jvmArg:-Xmx900m);

instructions.install.import= \
org.eclipse.equinox.p2.touchpoint.eclipse.addJvmArg,

動作しますが、32ビットと64ビットを区別しません。

4

3 に答える 3

4

p2.infは、カスタマイズされたアクションを実行するのに最適な場所です。vm引数を.iniに追加するのに適した場所です。機能/プラグインの下にp2.infを配置できます。

12月20日に更新

自分の環境で試してみましたが、Linux 32ビットと64ビットに同じ機能をインストールするときに、異なるvm引数を設定するとうまく機能します。サンプルコードをダウンロードして試してみることができます。

#create a requirement on the IU fragment we are creating
requires.2.namespace=org.eclipse.equinox.p2.iu
requires.2.name=configure.com.example.yourfeature.linux.x86
requires.2.range=[1.0.0,1.0.0]
requires.2.greedy=true
requires.2.filter=(&(osgi.os=linux)(osgi.arch=x86))

#create a IU frament named configure.com.example.yourfeature.linux.x86 for linux 32 bit
units.0.id=configure.com.example.yourfeature.linux.x86
units.0.version=1.0.0
units.0.filter=(&(osgi.os=linux)(osgi.arch=x86))
units.0.provides.1.namespace=org.eclipse.equinox.p2.iu
units.0.provides.1.name=configure.com.example.yourfeature.linux.x86
units.0.provides.1.version=1.0.0
units.0.instructions.configure=addJvmArg(jvmArg:-Xmx500m);
units.0.instructions.configure.import=org.eclipse.equinox.p2.touchpoint.eclipse.addJvmArg,

#create a requirement on the IU fragment we are creating
requires.3.namespace=org.eclipse.equinox.p2.iu
requires.3.name=configure.com.example.yourfeature.linux.x86_64
requires.3.range=[1.0.0,1.0.0]
requires.3.greedy=true
requires.3.filter=(&(osgi.os=linux)(osgi.arch=x86_64))

#create a IU frament named configure.com.example.yourfeature.linux.x86_64 for linux 64 bit
units.1.id=configure.com.example.yourfeature.linux.x86_64
units.1.version=1.0.0
units.1.filter=(&(osgi.os=linux)(osgi.arch=x86_64))
units.1.provides.1.namespace=org.eclipse.equinox.p2.iu
units.1.provides.1.name=configure.com.example.yourfeature.linux.x86_64
units.1.provides.1.version=1.0.0
units.1.instructions.configure=org.eclipse.equinox.p2.touchpoint.eclipse.addJvmArg(jvmArg:-Xmx900m);
于 2010-12-14T13:42:56.033 に答える
0

この問題に関する最も完全なドキュメントはEclipsewikiだと思います。「ネイティブタッチポイントアクション」に興味があるかもしれませんが、独自のタッチポイントアクション、つまりインストールプロセスの一部として呼び出されるJavaクラスを実装することもできます。

編集:メタデータのカスタマイズには、p2.infファイルに何を入れることができるかに関する情報が含まれています。そこに与えられた例は次のとおりです。

 instructions.install = \
    ln(targetDir:@artifact,linkTarget:foo/lib.1.so,linkName:lib.so);\
    chmod(targetDir:@artifact,targetFile:lib/lib.so,permissions:755);
 instructions.install.import= \
    org.eclipse.equinox.p2.touchpoint.natives.ln,\
    org.eclipse.equinox.p2.touchpoint.natives.chmod
于 2010-12-13T18:51:38.443 に答える
0

これを実現する方法を説明する2つの記事があります。

1つ目はもう少し多くのオプションをカバーし、2つ目はP2タッチポイントについてのみです。

警告:プラグインにカスタムタッチポイントを追加すると、インストール時にデッドロックが発生し始めました(かなり頻繁に発生しますが、常にではありません)(リスクを回避して削除しました)。何か間違ったことをしたかもしれませんが、これは注意すべきことです。

ただし、組み込みのタッチポイントは正常に機能しているようです。

于 2015-03-12T07:29:10.820 に答える