オンラインアップデート †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みたいな情報を載っければいいわけですね。でも、
などなどの問題が残りますね。。。 この記事は
現在のアクセス:10207 |