質問

P2の前に、インストール中に「カスタム」タスクを実行するために実行された機能を備えたカスタムインストールハンドラーを作成できます。

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

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

P2 Update Managerでカスタムインストールハンドラーの機能を取得する方法を教えてください。

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

eclipse.iniファイルを編集し、64ビットまたは32ビットenv内で実行されているかどうかに基づいて、-xmxプロパティを値に設定する必要があります。

編集2: 次の行を使用して、機能でP2.INFファイルを作成しようとしました -

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

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

そして、それは機能しますが、32〜64ビットを区別しません。

役に立ちましたか?

解決

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

12月20日に更新:

私は自分の環境でそれを試しましたが、Linux 32ビットと64ビットに同じ機能をインストールするときに、異なるVM Argsを設定するのに適しています。ダウンロードできます 例コード それで遊ぶために。

#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);

他のヒント

この問題に関する最も完全なドキュメントは Eclipse wiki. 。おそらく「ネイティブタッチポイントアクション」に興味がありますが、独自のタッチポイントアクション、つまりインストールプロセスの一部として呼び出される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

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

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

警告: プラグインにカスタムタッチポイントを追加したとき、インストール時にデッドロック(かなり頻繁ではありませんが)を開始しました(リスクを望んでおらず、削除しました)。たぶん私たちは何か間違ったことをしましたが、これは知っておくべきことです。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top