Eclipse plugin Eclipse(Lotus Notes 8.5.2)插件的自动升级
我试图为LotusNotes8.5.2提供一个自动更新功能。该插件是在Eclipse3.4.2下开发的。到目前为止,我还没有找到一种通过连接到LotusNotesAPI来实现这一点的标准方法。我想到的是以下两种方法Eclipse plugin Eclipse(Lotus Notes 8.5.2)插件的自动升级,eclipse-plugin,lotus-notes,auto-update,Eclipse Plugin,Lotus Notes,Auto Update,我试图为LotusNotes8.5.2提供一个自动更新功能。该插件是在Eclipse3.4.2下开发的。到目前为止,我还没有找到一种通过连接到LotusNotesAPI来实现这一点的标准方法。我想到的是以下两种方法 使用EclipseP2 SDK在运行时执行自动升级(在插件的早期启动时,更新程序将检查新版本并更新插件)。此条目描述方法->。不幸的是,SDK不是Eclipse3.4.2的一部分,我没有在3.4.2中使用这种方法 使用一个外部进程关闭Lotus Notes,从Lotus的插件目录中
- 使用EclipseP2 SDK在运行时执行自动升级(在插件的早期启动时,更新程序将检查新版本并更新插件)。此条目描述方法->。不幸的是,SDK不是Eclipse3.4.2的一部分,我没有在3.4.2中使用这种方法
- 使用一个外部进程关闭Lotus Notes,从Lotus的插件目录中删除插件的旧版本,将新版本复制到插件目录,再次启动Lotus Notes并终止该进程
第二种方法似乎合理,但需要在自动升级过程中关闭LotusNotes。所以我的问题是——有没有类似于上面第一种方法或LotusNotes的任何其他标准过程的方法?提前感谢。请阅读小部件目录。它会做你想做的事
不过,在任何插件更新之后,您仍然需要重新启动客户端 谢谢你的建议Simon-我找到了一个更直接的方法来使用这篇文章中的建议-> 添加了一个配置操作(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();}
String updateSiteUrl=configuration.getUpdateSiteUrl();
IProgressMonitor监视器=新的NullProgressMonitor();
ISite updateSite=SiteManager.getSite(新URL(updateSiteUrl),
监视器);
IFeatureReference[]siteFeatures=updateSite
.getFeatureReferences();
ILocalSite localSite=SiteManager.getLocalSite();
List installOps=new ArrayList();
List configOps=new ArrayList();
IConfiguredSite[]配置站点=本地站点
.getCurrentConfiguration().getConfiguredSites();
对于(IConfiguredSite configuredSite:configuredSites){
IFeatureReference[]localSiteFeatures=configuredSite
.getConfiguredFeatures();
对于(IFeatureReference siteFeature:siteFeatures){
对于(IFeatureReference localSiteFeature:localSiteFeatures){
VersionedIdentifier功能vi=站点功能
.getVersionedIdentifier();
VersionedIdentifier localFeatureVi=localSiteFeature
.getVersionedIdentifier();
如果(featureVi.getIdentifier())等于(
localFeatureVi.getIdentifier()){
如果(featureVi.getVersion())大于(
localFeatureVi.getVersion()){
安装
.add(操作管理器)
.getOperationFactory()
.createInstallOperation(
配置站点,
站点特征
.getFeature(监视器),
空,空,空),;
配置操作
.add(操作管理器)
.getOperationFactory()
.createConfigOperation(
配置站点,
站点特征
.getFeature(监视器),
空,空),;
}
}
}
}
}
如果(installOps.size()>0){
//安装新功能
for(迭代器iter=installOps.Iterator();iter
.hasNext();){
IInstallFeatureOperation op=(IInstallFeatureOperation)iter
.next();
op.execute(监视器,空);
}
//配置新功能
for(迭代器iter=configOps.Iterator();iter
.hasNext();){
IConfigFeatureOperation op=(IConfigFeatureOperation)iter
.next();
op.execute(监视器,空);
}
localSite.save();}
感谢Simon的建议-我找到了一种更直接的方法来使用这篇文章中的建议->