オンラインアップデート †Eclipseはサーバに置いたプラグインをダウンロードし、アップデートことができますが、ダウンロードできるプラグインはサーバにあるsite.xmlの内容で制御されています。たとえば、こんな感じです。
ダウンロードできるプラグインの制御 †さて、RCPで普通のアプリを作る場合、あるユーザはhogehogeプラグインのみ使用可能、で特定のユーザはさらにfugaプラグインも使用可能にする、なんてことをやりたいですね。しかしsite.xmlは通常静的なファイルであること、さらにsite.xmlをServletなどで動的に生成し、パラメータによってsite.xmlの内容を切り替えるなんてことをやったとしても、アップデートサイトへのリクエスト(HTTP)にパラメタを載せる方法がわかりませんでした。 まあサーバ側はIPアドレスとかで判断することもできなくないですが、あんまりエレガントではないですね。 そこでこんな感じ †そこでEclipseの更新UIではなくて、自分でアクションを作成し、アップデートサイトにアクセスするコードを作ってみました。 BusyIndicator.showWhile(window.getShell().getDisplay(), new Runnable() {
public void run() {
logger.debug("run() - start");
// UpdateManagerUI.openInstaller(window.getShell());
UpdateJob job = new UpdateJob("Search for new extensions.",
getSearchRequest());
UpdateManagerUI.openInstaller(window.getShell(), job);
logger.debug("run() - end");
}
});
private UpdateSearchRequest getSearchRequest() {
URL url = null;
try {
url = new URL("http://hogehoge.com/site.xml");// <-site.xmlのURL
} catch (MalformedURLException e) {
e.printStackTrace();
}
UpdateSearchRequest result = new UpdateSearchRequest(
UpdateSearchRequest.createDefaultSiteSearchCategory(),
new UpdateSearchScope());
result.addFilter(new BackLevelFilter()); <-よくわからん
result.addFilter(new EnvironmentFilter()); <-よくわからん
UpdateSearchScope scope = new UpdateSearchScope();
scope.addSearchSite("HogeApp Site", url, null);
// scope.addSearchSite("aaa", url, null); 複数追加すると複数サーチする
result.setScope(scope);
return result;
}
これえURLを指定できるので、このパラメタにユーザIDみたいな情報を載っければいいわけですね。でも、
などなどの問題が残りますね。。。 この記事は
現在のアクセス:10413 |