ライセンスに関する例外やダイアログが表示される場合の対処法

文書番号 : 80536     文書種別 : Info
登録日 : 2013/11/01     最終更新日 : 2015/08/06

対象製品

Studio共通

詳細

製品の使用方法によって、以下のような例外やダイアログが表示される場合がございます。

・製品版を使用しているにも関わらず、トライアル版に関するダイアログが表示される
・「[Component name]のライセンスが無効です。」の例外(LicenseException)が発生する。
・「[Component name]のライセンスが確認できません。」の例外(LicenseException)が発生する。

この場合、以下のような原因と対処法が考えられます。

1.ライセンス認証をしていない

製品をご使用になるには、インストール時に「ライセンス認証ツール」を実行し、ライセンス認証する必要があります。製品がライセンス認証されているかどうかは、「ライセンス認証ツール」を実行することで確認できます。

2.以前ビルドした中間ファイルや出力ファイルが残っている

(1)対象のプロジェクトを開きます。
(2)Visual Studio の [ビルド(B)] メニューからプロジェクト名(またはソリューション名)のリビルドを実行します。

3.適切なライセンス情報を記載した licenses.licx ファイルがプロジェクト内に存在しない

licenses.licx ファイルの確認手順
(1)対象のプロジェクトを開きます。
(2)Visual Studio のソリューションエクスプローラーの [すべてのファイルを表示] ボタンをクリックします。
(3)以下のいずれかのフォルダに licenses.licx ファイルが存在するかどうかを確認します。
・Visual Basicの場合、プロジェクトフォルダ下の「My Project」フォルダ
・C#の場合、プロジェクトフォルダ下の「Properties」フォルダ
・プロジェクトのルートフォルダ
(4)licenses.licx ファイルが存在しない場合は、後述の「license.licx ファイルの再作成手順」を実施します。
(5)licenses.licx ファイルが存在する場合は、ソリューションエクスプローラー上でlicenses.licx ファイルをダブルクリックし、記載内容を確認します。licenses.licx ファイルに、プロジェクト内で使用しているコントロールのライセンス情報が記載されていない場合は、後述の「license.licx ファイルの再作成手順」を実施します。

licenses.licx ファイルの再作成手順
(1)コントロールを使用している Form のデザイン画面を表示します。
(2)ツールボックスから、同じコントロールを Form 上に貼り付けます。これにより licenses.licx ファイルが再作成され、張り付けたコントロールのライセンス情報が licenses.licx ファイルに記載されます。
(3)ソリューションエクスプローラー上で licenses.licx ファイルをダブルクリックし、記載内容を確認します。
(4)(2)で貼り付けたコントロールを削除します。
(5)プロジェクト内で複数種類のコントロールを使用している場合は、それぞれのコントロールごとに、(1)~(4)の手順を繰り返します。
(6)[ビルド(B)] メニューにある「(プロジェクト名)のリビルド」を実行します。

※ 各コントロールのライセンス情報は「ComponentOne Studio 共通ヘルプ」の「ライセンスの組み込み」をご参照ください。

4.licenses.licx ファイルが「埋め込まれたリソース」に設定されていない

(1)対象のプロジェクトを開きます。
(2)Visual Studio のソリューションエクスプローラーの [すべてのファイルを表示] ボタンをクリックします。
(3)ソリューションエクスプローラー内に licenses.licx ファイルを選択します。
(4)プロパティウィンドウから「ビルドアクション」を「埋め込まれたリソース」に設定されているか確認します。
(5)「ビルドアクション」が「埋め込まれたリソース」以外の場合には「埋め込まれたリソース」に設定します。

5.コントロールを動的に生成している

設計時にコントロールをフォームに貼り付けると Licenses.licx ファイルが自動的に作成され、プロジェクトに組み込まれます。しかし、実行時にコントロールを生成する場合には、Licenses.licx ファイルは作成されません。この場合は以下の手順に従って licenses.licx ファイルを作成し、プロジェクトに追加してください。

(1)Visual Studio で新しいプロジェクトを開きます。
(2)使用する製品のコンポーネントを参照設定します。
(3)ソリューションエクスプローラ上のソリューション名を右クリックします。
(4)表示されたコンテキストメニューで[追加]-[新しい項目の追加]をクリックします。
(5)表示されたダイアログで「テキストファイル」を選択し、ファイル名に「Licenses.licx」と入力して開くボタンをクリックします。
(6)以下の文字列を Licenses.licx に入力します。(利用するアセンブリバージョンを記述します。)

FlexGrid for WinFormsの例:
.NET Framework 2.0 ビルドを使用する場合
C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.2

.NET Framework 4 ビルドを使用する場合
C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4

※ 各コントロールのライセンス情報は「ComponentOne Studio 共通ヘルプ」の「ライセンスの組み込み」をご参照ください。

(7)Licenses.licx を保存します。
(8)Licenses.licx をプロジェクトに追加し、プロパティウィンドウから「ビルドアクション」を「埋め込まれたリソース」に設定する。

6.ユーザーコントロール内で使用している

製品のコントロールを継承して独自のコントロールを作成したり、他のコントロールと組み合わせてユーザーコントロールを作成する場合は、LicenseProvider 属性を設定する必要があります。作成したコントロールに LicenseProvider 属性を設定していない場合は、製品のライセンス情報を参照できないので、そのコントロールを使ったアプリケーションを実行したときに、ライセンスエラーが表示されます。コントロールに LicenseProvider 属性を設定するには、次のように、クラスの宣言の前に LicenseProvider 属性を設定します。

FlexGrid for WinFormsの例:
[Visual Basic]
Imports System.Drawing
Imports System.Windows.Forms
Imports System.ComponentModel

' 継承コントロールの場合
<LicenseProviderAttribute(GetType(LicenseProvider))> _
Public Class MyControl
  Inherits 継承元のクラス
  ...
End Class

' ユーザーコントロールの場合
<LicenseProviderAttribute(GetType(LicenseProvider))> _
Public Class UserControl1
  ...
End Class

[C#]
using System.Drawing;
using System.Windows.Forms;
using System.ComponentModel;

// 継承コントロールの場合
[LicenseProviderAttribute(typeof(LicenseProvider))]
public partial class MyControl : 継承元のクラス
{
  ...
}

// ユーザーコントロールの場合
[LicenseProviderAttribute(typeof(LicenseProvider))]
public partial class UserControl1 : UserControl
{
  ...
}

7.クラスライブラリなどに配置して他のアセンブリから呼び出している

製品収録コンポーネントを使用していないアセンブリから、製品収録コンポーネントが使用されているアセンブリを呼び出した場合に発生します。これは製品のライセンス仕様上の正しい処理です。

製品収録コンポーネントをクラスライブラリなどで使用し、他のアセンブリから呼び出して使用する場合は、呼び出し元のプロジェクトにも 製品のライセンスが必要です。この場合、以下のような 製品収録コンポーネント のライセンス情報を記述した licenses.licx ファイルを作成し、埋め込みリソースとして呼び出し元のプロジェクトに追加します。(利用するアセンブリバージョンを記述します。)

FlexGrid for WinFormsの例:
.NET Framework 2.0 ビルドを使用する場合
C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.2

.NET Framework 4 ビルドを使用する場合
C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4

※ 各コントロールのライセンス情報は「ComponentOne Studio 共通ヘルプ」の「ライセンスの組み込み」をご参照ください。

8.VSS (Visual Source Safe) によるモジュール管理を行っている

当ツールよるモジュール管理を行う場合、特に licenses.licx ファイルの扱いには十分に注意する必要があります。

例えば 「最新情報の取得」 や 「チェックイン/アウト」 が適切に行われなかった場合、サーバ側とクライアント側の licenses.licx ファイルの同期が取られていない (例 : クライアント側の情報が古いままになっている) などの理由から、正しいライセンス情報がプロジェクトに読み込まれず、結果的にライセンスエラーが表示してしまう可能性もあります。つまり、これらは当ツールにおけるユーザー操作に大きく依存する現象であるため、製品側での抜本的な解決策はありません。

このような場合は、例えばソースコード編集の際には licenses.licx ファイルも同時にチェックイン/アウトする (または常に最新情報の取得を行う) などの運用面を考慮することで常に同期を保ったり、場合によっては予め本ファイルを管理下から除外する等の対応もご検討ください。 なお、当ツールの使用方法に関しては MSDN ライブラリ等の各種参考文献をご覧ください。

9.UAC(ユーザーアカウント制御)を有効にしている

UAC(ユーザーアカウント制御)により、製品情報をレジストリから取得できない場合があります。その結果、正しいライセンス情報がプロジェクトに読み込まれず、結果的にライセンスエラーが表示される場合があります。 Visual Studio を管理者権限で実行してください。

10. App_Licenses.dllが存在しない
「Webサイト」形式のプロジェクトを開発する場合、App_Licenses.dllを作成する必要があります。Webフォーム上にコントロールを貼り付けると、Binフォルダ内にApp_Licenses.dllが自動的に作成されますが、存在しない場合は、次の手順に従い手動で作成してください。

(1)ソリューションエクスプローラにてlicenses.licxファイルを右クリックします。
(2)表示されるメニューから「ラインタイムライセンスのビルド」を選択します。

11. Silverlight/Windowsストアアプリケーションの場合

SilverlightアプリケーションとWindowsストアアプリケーションでは、ライセンスの組み込みは不要です。ただし、トライアル版で開発している場合は、トライアル版のライセンス情報が埋め込まれ、トライアル版に関するダイアログが表示されます。

トライアル版から製品版に移行した場合は、本製品を使用しているXAMLファイルから「c1:C1NagScreen.Nag="True"」または「Xaml:C1NagScreen.Nag="True"」というコードを削除して、ソリューション(プロジェクト)のリビルドを行ってください。これによりトライアル版のライセンス情報がクリアされ、ダイアログが表示されなくなります。


問題が解決しない場合
上記対策を実施してもプロジェクトのビルド時に「"LC.exe" はコード -1 を伴って終了しました。("LC.exe" exited with code -1)」というエラーが発生する場合、以下の情報をあわせて確認してください。
「"LC.exe" はコード -1 を伴って終了しました("LC.exe" exited with code -1)」エラーのトラブルシューティング