【问题标题】: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 找到一种标准方法。我想到的是以下两种方法。
第二种方法似乎合理,但需要在自动升级过程中关闭 Lotus Notes。所以我的问题是 - 是否有任何类似于上述第一个或任何其他 Lotus Notes 标准程序的方法?提前致谢。
【问题讨论】:
标签:
eclipse-plugin
lotus-notes
auto-update
【解决方案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();}