2

我有一个功能,我想更改它的 ID。但是,这使得无法更新现有安装,原因如下:

  1. 假设版本 1.0 的功能 F1 包含版本 1.0 的插件 A。
  2. 现在,我想在 1.1 版中有一个功能 F2,它在 1.1 版中使用插件 A。
  3. 安装 F2 时出现错误 - 我已经具有功能 F1,它需要 1.0 版中的插件 A,因此,安装插件 A 1.1 将使该依赖关系无效。

我正在寻找一种方法来表示 F2 取代了 F1。我怎样才能做到这一点?

4

1 回答 1

3

我假设您使用的是 p2。

当您使用 p2 metadata导出/构建功能时,生成的 content.xml (.jar) 包含如下内容:

<unit id='f.feature.group' version='1.0.0' singleton='false'>
  <update id='f.feature.group' range='[0.0.0,1.0.0)' severity='0'/>
  ...
</unit>

<update>元素指定此功能将更新的先前版本。如您在上面看到的那样,现有的元数据生成工具设置了这一点。

我创建了一个功能“f”,其中包括插件“A 1.0.0”并使用元数据导出并将该功能安装到我的 Eclipse 中。然后我创建了一个包含插件“A 2.0.0”的功能“g”。我再次将其导出到同一个存储库。然后我去手动编辑了 content.xml 文件,并更改了:

<unit id='g.feature.group' version='1.0.0.200907061120' singleton='false'>
  <update id='g.feature.group' range='[0.0.0,1.0.0.200907061120)' severity='0'/>

<unit id='g.feature.group' version='1.0.0.200907061120' singleton='false'>
  <update id='f.feature.group' range='[0.0.0,1.0.0.200907061120)' severity='0'/>

然后在我的eclipse中,我做了一个“检查更新”,它发现'g'是对之前'f'的更新并进行了升级。(您可能需要强制重新加载存储库以获取更改,在“可用软件站点”首选项页面中执行“测试连接”应该这样做)。

不幸的是,目前没有办法让导出/构建过程为您更改更新元素,并且需要手动编辑。我提出了这个错误

于 2009-07-06T15:52:24.077 回答