2012-06-11 69 views
0

我正在嘗試爲Lotus Notes 8.5.2提供自動更新功能。該插件正在Eclipse 3.4.2下開發。到目前爲止,我還沒有設法通過掛鉤到Lotus Notes API中找到一個標準的方法來完成此操作。我想到的是以下兩種方法。Eclipse的自動升級(Lotus Notes 8.5.2)插件

第二種方法似乎是合理的,但需要在自動升級過程中關閉Lotus Notes。所以我的問題是 - 有沒有類似於上面第一個或任何其他Lotus Notes標準程序的方法?提前致謝。

回答

0

感謝您的建議西蒙 - 我發現使用這個職位的建議更直接的方式 - >http://www.eclipsezone.com/eclipse/forums/t97689.html 與另外一個配置的操作(IConfigureFeatureOperation)用於更新版本的功能到platform.xml文件的Lotus Notes。 這裏是一個示例代碼段說明方法:

 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();}