我们有一个许可的eclipse功能,许可证由我们自己的代码处理。用户可以进入我们的更新站点并升级其功能。我们面临的问题是在用户的许可证需要使用新升级之前需要更新。
我想要做的是根据用户许可证验证功能版本,并警告用户在安装之前需要更新其许可证。
我以为我会使用自定义eclipse p2 touchPoint动作validateLicense来做到这一点。
示例:
我的代码被调用,我根据用户的许可证验证版本。如果失败,我会警告用户,然后他可以取消安装。
所以我的第一个问题是:
我的第二个问题非常基本:
最后:
答案 0 :(得分:1)
接触点在安装时执行,这意味着已经发生了分辨率(验证)。我不确定他们会帮忙。如何创建表示用户已安装的许可证的可安装单元(IU)(或Eclipse功能)。然后,您将从您的产品中依赖该许可证。
例如,创建一个名为com.mycompany.license(1.0.0)的IU。您将创建另一个名为com.mycompany.license(2.0.0)的文件。安装许可证后,相应的IU将添加到配置文件中。
现在,当您安装产品时,新版本的产品将需要许可证版本2.0.0。如果未安装此许可证,则解决方案将失败。
这有意义吗?你认为这会有所帮助吗?
答案 1 :(得分:1)
我实现了here所示的自定义操作,我有一个似乎有用的系统。我省略了“接触点”扩展,因为在我的情况下它是不必要的,但其余部分是相同的。
我的操作在我的功能(instructions.install)的安装阶段执行,但也许配置阶段也可以工作。收集阶段没有用。
在安装过程中,在已经执行下载后执行操作。理想情况下,它将在下载之前,但对我来说这不是一个大问题。从操作返回错误状态会取消安装。它会留下一些下载的文件,但它们不会被激活,可能会被p2的垃圾收集器删除。
我还设法做了一些更有趣的事情。我的动作插件在我的主插件上有一个依赖(可选和非贪婪)。所以安装的工作原理如下:
一些问题:
我仍然需要测试它如何与不同版本的Eclipse和其他IDE一起使用。我在3.6中看到了一个奇怪的(非阻塞)错误。然而,结果是有希望的,看起来系统可能实际工作。