【发布时间】:2015-02-01 16:55:43
【问题描述】:
我正在构建一个基于 Eclipse RCP 的产品,我遇到了一个问题,当我尝试使用内置 p2 UI 安装产品更新时,我在对话框中收到一条错误消息,提示“Insufficient应用此更新的访问权限。”
我已经调试到 Eclipse 并发现“根本原因”是有一个 p2 .profile 文件,其中包含包含此 sn-p 的 xml:
<iuProperties id='com.datical.db.ui.product' version='1.33.0.201412032223'>
<properties size='4'>
<property name='org.eclipse.equinox.p2.internal.inclusion.rules' value='STRICT'/>
<property name='org.eclipse.equinox.p2.type.root' value='true'/>
<property name='org.eclipse.equinox.p2.type.lock' value='3'/>
<property name='org.eclipse.equinox.p2.base' value='true'/>
</properties>
</iuProperties>
相关行是<property name='org.eclipse.equinox.p2.type.lock' value='3'/>
我不确定我做错了什么 - 我认为我的产品定义或功能定义或安装过程中一定有问题导致这条线出现。
当我单步执行 Eclipse 代码时(我们的目标环境是 3.7/Indigo),我看到配置文件正在写入 org.eclipse.equinox.internal.p2.engine:SurrogateProfileHandler:addSharedProfileBaseIUs(这是私有静态代码。)从 SurrogateProfileHandler:createProfile 调用
产品的 p2 存储库正在使用 tycho 插件构建,版本 0.15。
【问题讨论】:
-
由于 p2 是一个非常专业的主题,因此可能值得在 P2 论坛的Eclipse forums 上提问。
-
Indigo documents 建议该标志的有效值为 0 (LOCK_NONE)、1 (LOCK_UNINSTALL) 或 2 (LOCK_UPDATE)。没有提到3是什么意思。您是否尝试过更新版本的第谷?
-
这些标志是 OR'd 在一起的,所以 3 表示它被锁定以进行更新和卸载。我还没有(还)尝试过使用更新版本的第谷,主要是出于 FUD。 greg-449,感谢论坛的参考 - 我会尝试在那里交叉发布。
-
我从未听说过这个问题,所以这可能是一个尚未报告的错误。如果是这种情况,您无论如何都需要更新到更新的 p2 版本,并且由于 p2 嵌入在 Tycho 中,您需要更新您的 Tycho 版本。
-
今天我更新到 tycho 版本 0.21.0(最新),我看到几乎相同的行为。当我第一次运行产品时,锁定仍在设置中。我通过在安装时操作 XML 解决了这个问题。这使我可以在应用程序中运行“检查更新”,现在我实际上可以选择更新的版本并应用它——这最初似乎可以工作。但是,当我深入挖掘时,我会看到功能选项卡上的“关于”对话框中显示的旧版本和新版本功能,以及所有“旧”版本的插件。
标签: eclipse-rcp tycho p2