Shelf Life(使用期限)チェックは、アプリケーションが特定の日付より後も実行されていないかどうかを検出するタイプのチェックです。 このチェックにより、アプリケーションは Shelf Life、つまり限られた期間のみ実行できるようになります。
Shelf Life チェックはベータ版、つまり評価版のソフトウェアで特に役立ちます。 ユーザーが有効期限を過ぎてアプリケーションを実行しようとした場合、Shelf Life チェックはこれを検出し、アプリケーションに通知したり、アプリケーションを終了したりして対応することができます。 つまり、Shelf Life チェックは現在の日付に基づいて、アプリケーションの不正な使用を検出して対応します。
Shelf Life チェックの構成
Dotfuscator でアプリケーションに Shelf Life チェックを差し込むには、まず PreEmptive Solutions から Shelf Life Activation Key を入手する必要があります。
アクティブ化キーを入手したら、チェックを有効にします。 次に、チェックのユーザー インターフェイスを使用するか、ShelfLifeCheckAttribute
を使ってソース コードにアノテーションを付けることにより、チェックを構成します。 これらのどちらの方法でも、チェックの動作を決めるさまざまなプロパティを指定できます。詳細な一覧については、「チェック属性」ページの ShelfLifeCheckAttribute
セクションを参照してください。
アクティブ化キー
Shelf Life Activation Key は、Shelf Life チェックを差し込むために必要なデータ ファイルです。 アクティブ化キーを入手するには、PreEmptive Solutions にご連絡ください。
アクティブ化キーが発行されたら、そのキー ファイルのパスを各 Shelf Life チェックの ActivationKeyFile プロパティに指定する必要があります。 アクティブ化キーのコピーを各ビルド マシンに保管することをお勧めします。
アクティブ化キーは、アプリケーションが Dotfuscator で処理されるときにのみ必要となります。 アプリケーションは実行時にアクティブ化キーにアクセスする必要はないため、アクティブ化キーを開発組織外に配布しないでください。
トークン
Shelf Life トークンは、有効期限など、アプリケーションの使用期限に関する情報を含んでいるファイルです。 Dotfuscator は、期限切れ情報をアプリケーションに直接埋め込むのではなく、この情報を含むトークンを生成します。 Shelf Life チェックは、実行時にこのトークンを使用して、アプリケーションの有効期限が切れているかどうかを判断します。
Dotfuscator Community は、Shelf Life チェックを差し込む際に、そのチェックの ExpirationDate プロパティに基づいて自動的にトークンを生成し、そのトークンをチェックが実行時に使用できるようにアプリケーションに埋め込みます。
また、Dotfuscator Professional では、実行時に使用されるトークンが信頼できるものであることを保証するため、公開/秘密キー ペアを使ってトークンに署名することもできます。
有効期限
各 Shelf Life トークンは、関連する有効期限を持っています。 トークンを使用する Shelf Life チェックの実行では、(単にシステム時間をチェックするより複雑なアルゴリズムを使って)有効期限と現在の日時を比較します。 有効期限が過去の日付になっていたら、アプリケーションは期限切れであると判断されます。 アプリケーションが期限切れの場合に行われる動作は、アプリケーション通知のプロパティによって異なります。
Shelf Life チェックの有効期限は、そのチェックの ExpirationDate プロパティで指定します。
Shelf Life トークンの日付は文字列として、次の 2 つの書式のいずれかで設定されます。
-
絶対日付。
YYYY-MM-DD
書式の日付 -
相対日付。Dotfuscator によりトークンが生成された日付からその日付までの日数を表す整数
たとえば、Dotfuscator によりトークンが生成された日付が 2017 年 8 月 1 日で、アプリケーションの有効期限を 2017 年 8 月 31 日とする場合には、有効期限は 2017-08-31
または 30
と記述することができます。
アプリケーション通知
Shelf Life チェックにアプリケーション コードを通知させる機能は、Dotfuscator Professional でのみ使用できます。
終了の動作
Shelf Life チェックでは、チェック操作はサポートされていません。 Shelf Life チェックの ExpirationNotificationSinkElement プロパティを DefaultAction に設定することで、Exit 操作を使用するのと同等の構成を行うことができます。
このように構成された Shelf Life チェックが期限切れのアプリケーションの使用を検出した場合、アプリケーションは終了コード 0 で直ちに終了します。
サポートされないアプリケーションの種類
Dotfuscator は、以下に挙げる .NET アセンブリ以外のすべての .NET アセンブリに Shelf Life チェックを差し込むことができます。
- ネイティブ コードおよびマネージ コードを含んでいる Managed C++ アセンブリ
- マルチ モジュール アセンブリ
- .NET Core アセンブリ
- .NET 5 アセンブリ
- UWP アセンブリ
- Xamarin アセンブリ
テスト
アプリケーションに差し込まれた Shelf Life チェックが、アプリケーションの期限切れ後の使用に対応する動作をテストするための最も簡単な方法は、過去の有効期限を使ってそのチェックを一時的に構成することです。 必ず Shelf Life チェックのすべての場所を試してください。 テストの結果、アプリケーションが期限切れになる場合に予期したとおりに動作していることを確認できたら、有効期限を必要な値に変更したうえでアプリケーションを配布用にビルドする必要があります。