从Eclipse中以编程方式安装Eclipse插件?

从Eclipse中以编程方式安装Eclipse插件?,eclipse,eclipse-plugin,p2,Eclipse,Eclipse Plugin,P2,我想为Eclipse插件创建一个自动安装程序(即,不通过“更新管理器”)。我的场景很简单:用户关闭Eclipse,将下载的JAR放入dropins文件夹,启动Eclipse,剩下的过程是自动化的 在P2时代之前的较旧版本中,Eclipse有(现在仍然有)一个名为InstallCommand的类,可用于将plugins安装到当前运行的平台中 尽管这在Eclipse3.4和3.5中仍然有效,但它的行为并不正常:最明显的是,以这种方式安装的插件无法自动卸载(它变暗) JavaDoc声称InstallC

我想为Eclipse插件创建一个自动安装程序(即,不通过“更新管理器”)。我的场景很简单:用户关闭Eclipse,将下载的JAR放入dropins文件夹,启动Eclipse,剩下的过程是自动化的

在P2时代之前的较旧版本中,Eclipse有(现在仍然有)一个名为
InstallCommand
的类,可用于将plugins安装到当前运行的平台中

尽管这在Eclipse3.4和3.5中仍然有效,但它的行为并不正常:最明显的是,以这种方式安装的插件无法自动卸载(它变暗)

JavaDoc声称
InstallCommand
已被弃用,应该用P2替代。然而,我找不到适合这份工作的工具。存在,但它是为作为独立于命令行的应用程序运行而构建的。从Eclipse中调用它是可能的,但它实际上并不适合这样做。例如,进度监控和错误报告工作得不好

有人知道一个好的替代方案吗

谢谢,
Zviki

我建议将插件部署为可执行JAR。JAR中的安装程序应该请求Eclipse安装目录,并在正确的位置解包插件(根据需要再加上一些检查)


可选地包括一个小的“看门狗”插件,它不依赖于太多内容,只需检查主插件是否正确加载,并显示一条有用的错误消息,用户可以通过电子邮件向您提供支持。

Dropins似乎非常接近您想要的内容,特别是如果他们只是下载没有相关元数据的JAR(即元数据需要自动生成)

你可以考虑定义第二个下拉区域来管理你自己。看看Orth.Eclin.Enimox .P.Turrule.DROPIN中的<代码> PrimeService同步器< /C>。正在添加y


在启动时对dropins进行对账,请参阅p2.reconciler.dropins Activator.watchDropins(),您可能也可以从自己的捆绑包中查看另一个文件夹。

根据InstallCommand的弃用注释中引用的bug 311590中的信息,另一种方法可能是使用P2操作。

通常将功能和插件解包到
dropins
下的文件夹中就足以安装l一个插件。你还想做什么?是的。但是,我有一个商业插件,我正在尝试创建一个更友好的用户体验。在这种情况下,将其放入dropins文件夹可能会失败错误报告并不是很明显。并非所有Eclipse用户都是能够跟踪问题并解决问题的Eclipse专家。如果你自己做,就不会在安装过程中,你最好还是自己做升级工作。@Al,不,我不这么认为。Eclipse更新机制就可以了。问题是:当人们访问你的网站并决定试用你的软件时,他们想下载一些东西。在大多数情况下,他们不会马上安装,而是以后再安装。如果你把他们留给j如果没有更新URL,你肯定会失去客户。这就是下载和安装程序很重要的原因。我应该在博客上写下这一点……这是一个不错的选择,我自己也考虑过。但是,你仍然需要在目标平台上执行配置操作。你不应该假设标准的插件/功能目录结构,而是r让P2来处理安装。这让你回到第一步…如何?在P2新闻组中提问和/或打开针对P2导演的bug?这可能是P2导演的一个增强。我可能会建议。至于P2组:我只是更喜欢StackOverflow,我通常在这里和那里得到更多答案。我在Eclipse新闻组保持不变。谢谢。我不想复制dropins行为。关于PROFILE_LOCKED-这不是我做的,所以可能是个bug(尽管我怀疑在此阶段是否有人会费心修复它)。PROFILE_LOCKED在当前p2代码中,我知道它是故意存在的,但我不确定其背后的原因。我现在会选择dropins解决方案(在大多数情况下都有效),但我可以想出更好的建议。类似于JAR但具有不同后缀的东西(如EAR或WAR,可能是OSGi的OAR)。它将与Eclipse关联,因此双击将调用Eclipse。它将打包一个更新站点,包含一个更新站点的URL或一个在当前OSGi运行框架中调用的可执行文件。我将整理我的想法并提出建议。@zvikico这个OAR想法听起来很有趣(类似于许多打包解决方案)。你有没有为此提出一个bug?还有,当你说“不想复制dropins行为”时,你到底是什么意思?主要的区别是,你会有一些带有进度条之类的UI?(我认为这对P2股票也是很好的..但谁知道dropins机制似乎已经不受欢迎了(见一个bug@)