Top / Eclipse / プラグイン開発のTIPS集 / オンラインアップデートの話

オンラインアップデート

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みたいな情報を載っければいいわけですね。でも、

などなどの問題が残りますね。。。


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Eclipse / プラグイン開発のTIPS集 / オンラインアップデートの話

現在のアクセス:10067


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS