【问题标题】:How do I stop an Eclipse Feature from starting after it's been installed安装后如何阻止 Eclipse 功能启动
【发布时间】:2014-03-11 14:11:19
【问题描述】:

我正在开发几个 Eclipse 功能(形成可安装单元的 Eclipse 插件组),并且我被要求每个功能都必须能够被停用,或者换句话说,不能启动当 Eclipse 启动时。

我有一个对 UI 做出贡献的插件(透视图、向导、菜单项等),我试图像这样拦截对插件的 start 方法的调用...

请注意,PluginVerification 类正在另一个插件中运行,该插件将随包含我要停止的插件的功能的安装一起提供。换句话说,我的 Feature 由插件 A、B 和 C 组成。PluginVerification 存在于 C 中,我想用它来控制插件 A 和 B 的启动。

这是插件A和B的Activator类的启动方法

/*
 * (non-Javadoc)
 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
 */
public void start(BundleContext context) throws Exception {
    if(PluginVerification.verify(this)) {
        super.start(context);
        plugin = this;
    }
}

如果对 PluginVerification.verify(this) 的调用返回 false,那么我不会启动插件。这工作了一半,因为插件确实没有启动,但是这个插件贡献的 UI 工件仍然出现。例如,这个插件提供的向导仍然可以通过 UI 访问。但是当您尝试使用其中之一时,会抛出 NullPointerExceptions,因为该插件从未启动。

我希望有人可以帮助我找到更好的地方来真正阻止插件启动,这样它就不会贡献它的 UI 工件。我打算提醒用户他的产品未经验证,因此无法启动。我希望用户感觉好像该功能已经从他的 Eclipse 环境中消失了。

感谢您的考虑, 追踪

【问题讨论】:

    标签: eclipse eclipse-rcp eclipse-plugin


    【解决方案1】:

    我认为p2 director 会给你带来更好的运气。至于为什么有些工件可用,可能是因为你的插件已经安装(可以通过osgi控制台查看)但没有启动。。

    【讨论】:

    • 感谢您的链接。大约一天半以来,我一直在阅读有关 p2 director 和 API 的信息。我正在尝试以编程方式进行卸载,但尚未成功。当我得到它时,我会在这里发布。
    【解决方案2】:

    您需要查看<eclipse_home>/configuration/config.ini 文件和osgi.bundles 属性

    the eclipse help:

    osgi.bundles

    系统启动并运行后自动安装和可选启动的捆绑包的逗号分隔列表。每个条目的格式为:

    <URL | simple bundle location>[@ [<start-level>] [":start"]]
    

    启动级别指示捆绑包应该运行的 OSGi 启动级别。如果省略起始级别(>0 整数),则框架将使用捆绑包的默认起始级别。如果添加了“开始”标签,则捆绑包将在安装后标记为已启动。

    认为您应该能够通过将捆绑包添加到该列表而不将其列为“开始”和/或更改插件之间的开始级别来实现您想要做的事情一个先于另一个开始。

    另外,请查看Dude, where's my bundle

    【讨论】:

    • 我认为他想在运行时这样做,例如基于许可证
    • 完全正确。理论上,会定期检查许可证的状态,如果检查返回的许可证已被移至“撤销”状态,那么我必须切断对该功能的访问。
    • Fredrik,我现在看到您想要通过您的回答来完成什么,但我认为使用 P2 Director 解决方案更符合我的要求。我需要用户撤销他/她对我的插件的访问权限,卸载它们似乎是最好的方法。我确实了解了一些关于开始级别的知识,所以谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多