5

ライセンスされたEclipse機能があり、ライセンスは独自のコードによって処理されます。ユーザーは更新サイトにアクセスして、機能をアップグレードできます。私たちが直面する問題は、ユーザーが新しいアップグレードを使用する前に、ユーザーのライセンスを更新する必要がある場合です。

私がやりたいことは、ユーザーのライセンスに対して機能のバージョンを検証し、インストールする前にライセンスを更新する必要があることをユーザーに警告することです。

カスタムのEclipse p2 touchPointアクションvalidateLicenseを使用してこれを行うと思いました。

例:

コードが呼び出され、ユーザーのライセンスに対してバージョンを検証します。失敗した場合は、ユーザーに警告し、ユーザーはインストールをキャンセルできます。

だから私の最初の質問は:

  • 私はこれを正しく理解していますか、それともこれを行う他の方法はありますか?

私の 2 番目の質問はかなり基本的なものです。

  • コードを実行するように eclipse に指示する場所はどこですか? 私はここでEclipseのヘルプを見て、それが何であるかを説明しています。しかし、コードを実行するための情報をどこに置くべきかわかりません。それはfeature.xmlにありますか。

最後に:

  • p2 touchPonts を作成して使用する方法の例はありますか?
4

2 に答える 2

1

タッチポイントはインストール時に実行されます。これは、解決 (検証) が既に行われていることを意味します。彼らが助けになるかどうかはわかりません。ユーザーがインストールしたライセンスを表す Installable Unit (IU) (または Eclipse Feature) の作成についてはどうでしょうか。次に、製品からそのライセンスへの依存関係を設定します。

たとえば、com.mycompany.license (1.0.0) という IU を作成します。com.mycompany.license (2.0.0) という名前の別のライセンスを作成します。ライセンスをインストールすると、適切な IU がプロファイルに追加されます。

ここで、製品をインストールする場合、製品の新しいバージョンにはライセンス バージョン 2.0.0 が必要です。このライセンスがインストールされていない場合、解決は失敗します。

これは理にかなっていますか?これが役立つと思いますか?

于 2012-10-11T16:17:54.197 に答える
1

ここに示すようにカスタム アクションを実装しました。動作しているように見えるシステムがあります。私の場合は不要なので「タッチポイント」拡張を省略しましたが、残りは同じです。

私のアクションは機能 (instructions.install) のインストール フェーズ中に実行されますが、構成フェーズも機能する可能性があります。収集フェーズが機能しませんでした。

アクションは、ダウンロードが既に実行された後、インストール プロセス中に実行されます。理想的にはダウンロードの前ですが、私にとっては大きな問題ではありません。アクションからエラー ステータスを返すと、インストールがキャンセルされます。ダウンロードしたファイルがいくつか残りますが、それらはアクティブ化されず、後で p2 のガベージ コレクターによって削除される可能性があります。

さらに興味深いこともできるようになりました。私のアクション プラグインは、メイン プラグインに依存しています (オプションであり、欲張りではありません)。したがって、インストールは次のように機能します。

  • アクションプラグインがダウンロードされました
  • カスタムアクションが実行されます
  • このアクションは、メインのプラグインが既にインストールされているかどうかを検出し、インストールされている場合はそれを呼び出してライセンス情報を取得します。メイン プラグインは、アクションの API を公開する必要があります。このアクションは、メイン プラグインのバージョンもチェックして、API が存在するかどうかを検出します。
  • アクションは、インストールを続行するかキャンセルするかを決定できるようになりました。Display#syncExec を使用してユーザーと対話することもできます (これは checkTrust フェーズのコードが行うことなので、安全だと思います)。必要に応じて、アクションはインストールがヘッドレスかどうかを検出することもできます。

いくつかの落とし穴:

  • アクション自体はバージョン管理する必要があります。これは、plugin.xml および p2.inf ファイルで宣言するバージョンであり、プラグインのバージョンとは異なります。1.0.0 をプラグインと同じバージョンに置き換えるだけです。このようにして、アクション プラグインの最新バージョンが実行前に常にダウンロードされます。これは素晴らしいことです。なぜなら、ライセンス ルールに対する問題の変更をアクション プラグインで実装できるようになったからです。
  • Actions API は Eclipse 3.5 と 3.6 の間で変更されました。とにかくかなり古いので、おそらく3.5のサポートをやめるでしょう。
  • アクション プラグインはおそらく署名されているはずです。私の場合はそうです。Eclipse を更新サイトにポイントするだけで、ダウンロードしたコードを実行できるようになるため、このシステムは私にはほとんど強力すぎるように思えます。

これがさまざまなバージョンの Eclipse や他の IDE でどのように機能するかをテストする必要があります。3.6 で奇妙な (ノンブロッキング) エラーが発生しました。ただし、結果は有望であり、システムが実際に機能する可能性があるようです.

于 2012-11-19T10:20:45.783 に答える