【问题标题】:Autoupgrade of an Eclipse (Lotus Notes 8.5.2) plugin自动升级 Eclipse (Lotus Notes 8.5.2) 插件
【发布时间】:2012-06-13 16:30:12
【问题描述】:

我正在尝试为 Lotus Notes 8.5.2 提供自动更新功能。该插件正在 Eclipse 3.4.2 下开发。到目前为止,我还没有设法通过连接到 Lotus Notes API 找到一种标准方法。我想到的是以下两种方法。

  • 使用 Eclipse p2 SDK 在运行时执行自动升级(在插件的早期启动时,更新程序将检查新版本并更新插件)。此条目描述了方法 -> http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fp2_api_overview.htm。不幸的是,SDK 不是 Eclipse 3.4.2 的一部分,我没有设法在 3.4.2 中使用这种方法。

  • 使用关闭 Lotus Notes 的外部进程,从 Lotus 的插件目录中删除旧版本的插件,将新版本复制到插件目录,再次启动 Lotus Notes 并终止进程。

第二种方法似乎合理,但需要在自动升级过程中关闭 Lotus Notes。所以我的问题是 - 是否有任何类似于上述第一个或任何其他 Lotus Notes 标准程序的方法?提前致谢。

【问题讨论】:

    标签: eclipse-plugin lotus-notes auto-update


    【解决方案1】:

    阅读小部件目录。它会做你想做的事。

    http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/topic/com.ibm.help.domino.admin85.doc/H_MANAGING_CLIENTS_USING_WIDGETS_AND_THE_WIDGETS_CATALOG_OVER.html

    您仍然需要在任何插件更新后重新启动客户端。

    【讨论】:

    【解决方案2】:

    感谢西蒙的建议-我找到了使用这篇文章中的建议的更直接的方法-> http://www.eclipsezone.com/eclipse/forums/t97689.html 添加了配置操作 (IConfigureFeatureOperation) 以将功能版本更新到 Lotus Notes 的 platform.xml 文件。 这是一个说明该方法的示例 sn-p:

            String updateSiteUrl = configuration.getUpdateSiteUrl();
    
            IProgressMonitor monitor = new NullProgressMonitor();
            ISite updateSite = SiteManager.getSite(new URL(updateSiteUrl),
                    monitor);
            IFeatureReference[] siteFeatures = updateSite
                    .getFeatureReferences();
            ILocalSite localSite = SiteManager.getLocalSite();
    
            List<IInstallFeatureOperation> installOps = new ArrayList<IInstallFeatureOperation>();
            List<IConfigFeatureOperation> configOps = new ArrayList<IConfigFeatureOperation>();
    
            IConfiguredSite[] configuredSites = localSite
                    .getCurrentConfiguration().getConfiguredSites();
    
            for (IConfiguredSite configuredSite : configuredSites) {
    
                IFeatureReference[] localSiteFeatures = configuredSite
                        .getConfiguredFeatures();
    
                for (IFeatureReference siteFeature : siteFeatures) {
                    for (IFeatureReference localSiteFeature : localSiteFeatures) {
    
                        VersionedIdentifier featureVi = siteFeature
                                .getVersionedIdentifier();
                        VersionedIdentifier localFeatureVi = localSiteFeature
                                .getVersionedIdentifier();
    
                        if (featureVi.getIdentifier().equals(
                                localFeatureVi.getIdentifier())) {
    
                            if (featureVi.getVersion().isGreaterThan(
                                    localFeatureVi.getVersion())) {
    
                                installOps
                                        .add(OperationsManager
                                                .getOperationFactory()
                                                .createInstallOperation(
                                                        configuredSite,
                                                        siteFeature
                                                                .getFeature(monitor),
                                                        null, null, null));
    
                                configOps
                                        .add(OperationsManager
                                                .getOperationFactory()
                                                .createConfigOperation(
                                                        configuredSite,
                                                        siteFeature
                                                                .getFeature(monitor),
                                                        null, null));
                            }
                        }
                    }
                }
            }
    
            if (installOps.size() > 0) {
    
                    // install new feature
                    for (Iterator<?> iter = installOps.iterator(); iter
                            .hasNext();) {
                        IInstallFeatureOperation op = (IInstallFeatureOperation) iter
                                .next();
                        op.execute(monitor, null);
                    }
    
                    // configure new feature
                    for (Iterator<?> iter = configOps.iterator(); iter
                            .hasNext();) {
                        IConfigFeatureOperation op = (IConfigFeatureOperation) iter
                                .next();
                        op.execute(monitor, null);
                    }
    
                    localSite.save();}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多