Eclipse p2替代自定义安装处理程序

时间:2010-12-13 18:06:50

标签: eclipse installation p2 pde

在p2之前,可以编写一个自定义安装处理程序,其中包含一个在安装过程中执行任何“自定义”任务的功能。

我看到使用p2不再支持自定义安装处理程序。 我一直听说'自定义接触点'正在替代它。

但是我无法找到任何具体的示例/文档。

任何人都可以告诉我如何使用p2更新管理器获取自定义安装处理程序的功能。

编辑:我想要做的事情的描述 -

我需要编辑eclipse.ini文件,并根据我们是在64位还是32位环境中运行来将-Xmx属性设置为一个值。

编辑2 我尝试使用以下行在我的功能中创建p2.inf文件 -

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

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

并且它可以工作,但它不区分32位和64位。

3 个答案:

答案 0 :(得分:2)

p2.inf 绝对是执行自定义操作的正确位置。这是在.ini中添加vm参数的好地方。您可以在功能/插件下添加 p2.inf

12月20日更新

我在自己的环境中尝试过,在linux 32bit和64bit上安装相同的功能时,它可以很好地设置不同的vm args。您可以下载example code进行播放。

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

答案 1 :(得分:0)

我认为关于此事的最完整的文档是Eclipse wiki。您可能对“本机接触点操作”感兴趣,但也可以实现您自己的接触点操作,即作为安装过程的一部分调用的Java类。

编辑:Customizing Metadata包含有关您可以放入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 :(得分:0)

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

第一个包含更多选项,第二个仅包含P2接触点。

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

Built-in touchpoints似乎工作正常。