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

有两篇文章解释了如何实现这一点:

第一个涵盖了更多选项,第二个仅涉及 P2 接触点。

警告:当我们向我们的插件添加自定义接触点时,它在安装时开始死锁(经常,但并非总是)(我们不想要风险并删除它们)。也许我们做错了什么,但这是需要注意的。

不过,内置的接触点似乎工作得很好。

于 2015-03-12T07:29:10.820 回答
0

我认为最完整的文档是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
于 2010-12-13T18:51:38.443 回答