適用する
アプリケーションの起動時に 1 回だけ、コントロールを生成する前に呼びます。
using unvell.ReoGrid.Core.License;
ReoGridLicense.SetLicense("eyJsaWNlbnNlZSI6...");
キーの形式が不正、Base64 が壊れている、署名が一致しないといった場合は ArgumentException が
送出されます。署名を検証してから内容を信頼する順序は固定されており、キーは偽造できません。
キーをソースコードに直接埋め込まず、設定ファイルや環境変数から読む形を推奨します。
var key = Environment.GetEnvironmentVariable("REOGRID_LICENSE");
if (!string.IsNullOrEmpty(key))
ReoGridLicense.SetLicense(key);
1 本のキーがすべてを賄う
| バージョン非依存 | アセンブリバージョン・ビルド日とキーを照合しません。V4 用に発行済みのキーが V5 でもそのまま通ります。再発行は不要です |
| プラットフォーム非依存 | キーにプラットフォームの情報はありません。1 本で WinForms / WPF / Avalonia / ヘッドレスすべてを賄います |
更新が切れても動き続けます
ReoGrid One は初回購入の永続ライセンス + 任意の年間更新です(DevExpress や Telerik と同じ形)。
年間更新をしなかった場合でも、手元のバイナリは期限なく動作します。時限で停止する仕組み
(kill switch)は実装していません。更新権の期限は LicenseInfo.UpdatesUntil として読み取れますが、
ライセンス判定には使いません。更新が切れて変わるのは「新しいビルドを入手できるかどうか」だけで、
これはポータルや NuGet の配布側で制御されます。
すでに出荷したアプリケーションが、更新期限を理由に動かなくなることはありません。
未適用時の動作
評価は妨げない設計です。
| 動く | 制限される |
|---|---|
| 表示・スクロール・印刷・各形式へのエクスポート | 画面・印刷・PDF の描画に透かしが入る |
| ファイルの読み込み | XLSX 出力に通知シートが追加される |
| 3 つのコントロールともセル編集が不可 |
印刷を塞いでいないのは、同じ状態で PDF エクスポートが通る以上、塞いでも迂回経路が残るだけだからです。
状態を確認する
if (!ReoGridLicense.IsLicensed)
{
// 未適用・キーが不正・トライアル期限切れのいずれか
}
var info = ReoGridLicense.Current;
if (info != null)
{
Console.WriteLine(info.Licensee); // 使用許諾先
Console.WriteLine(info.Tier); // Trial / Production
Console.WriteLine(info.ExpiresAt); // トライアル期限(製品版は null=無期限)
Console.WriteLine(info.UpdatesUntil); // 更新権の期限(判定には使われない)
}
IsLicensed の判定に使われるのは、署名・ExpiresAt(トライアル期限)・AllowedAssembly
(アセンブリ紐付けがある場合)の 3 つだけです。
LicenseInfo の主なメンバー
| メンバー | 内容 |
|---|---|
Licensee / Email | 使用許諾先 |
Tier | Trial または Production |
IssuedAt | 発行日 |
ExpiresAt | トライアル期限専用。製品版のキーでは省略され、無期限を意味する |
UpdatesUntil | 更新権の期限。判定には使わない |
AllowedAssembly | 特定アセンブリへの紐付け(設定されている場合) |
IsExpired / IsValid | 期限判定 |
実行時の解除はできません
一度適用したライセンスを実行中に取り消す方法はありません。テスト用の内部 API は存在しますが、 公開されていません。