0

我正在尝试为 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 标准程序的方法?提前致谢。

4

2 回答 2

0

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

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

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

于 2012-06-12T07:01:19.890 回答
0

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

        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();}
于 2012-06-13T08:30:12.027 回答