2008年1月8日火曜日

About Box (ライセンスダイアログ) について

比較的高い頻度でサポートに寄せられるお問い合わせに、「IP*Works! の製品版をインストールしたのに、About Box (ライセンスダイアログ) が表示される」というものがあります。今回は .NET Edition を例に、ライセンスの仕組みと対処法を解説してみたいと思います。

NET Edition では、製品ライセンスに Microsoft Licensing scheme を使用します。これにより、ライセンス済みのコンポーネントをフォームにドロップした時点で "licenses.licx" という名称のファイルが自動生成され、埋め込みリソース (embedded resource) として当該プロジェクトに自動追加されます。Visual Studio .NET 内でライセンス済みコンポーネントを使用するにはこのファイルが必要で、このファイルが存在しないあるいはファイル内に正しい情報が記載されていない場合、About Box が表示されます。

ではフォームを使用しないアプリケーションの場合や、フォームを使用するけれど動的にコンポーネントを生成する場合はどうすれば良いでしょうか。

このような場合には licenses.licx ファイルを手で作成することで対処します。このファイルはライセンス済みコンポーネントの情報から成る行で構成されています。各行にはコンポーネント名およびライブラリ名が記述されています。例えば、nsoftware.IPWorks.dll の NNTP コンポーネントを使用するのであれば licx ファイルには
nsoftware.IPWorks.Nntp, nsoftware.IPWorks
という行が含まれることになります。

なお既定値では Visual Studio は上記以外の付加情報 (バージョン番号やカルチャ等) もこの行に含めます。もしライセンス上の問題が発生した場合は、これらの付加情報を削除し、前述の2項目 (コンポーネント名およびライブラリ名) のみにしてみると状況が改善することがあります。

licenses.licx に関する注意事項:
  1. licx ファイルを手作業で作成する場合は、ソリューションエクスプローラを通じて当該プロジェクトに対する埋め込みリソースとして追加されなければなりません。
  2. licx ファイルは "licenses.licx" という名称でなければならず、また当該プロジェクトのルートディレクトリに配置されなければなりません。(サブフォルダに配置することはできません。)
  3. 開発対象がクラスライブラリの場合は、呼び出し側アプリケーションに対し当該 licenses.licx ファイルをクラスライブラリとともに配布する必要があります。さらに、呼び出し側アプリケーションは当該製品がアクティブ化済みになっているマシン上でコンパイルされなければなりません。(簡単に言えば、クラスライブラリはそれ自身は royalty-free で配布することは認められていません。)

最後にもう1つ注意すべき点があります。Visual Studio .NET はプロジェクト名に空白文字 (" ") が含まれている場合、正しく licx ファイルを認識しないという問題があります。もしプロジェクト名がこれに該当する場合は、プロジェクト名から空白文字を除去するか、別の文字に置き換えてからプロジェクトをリビルドしてみてください。

0 件のコメント:

コメントを投稿