Windows で .NET の ClickOnce アクティブ化データにアクセスする

.NET 8.0 Preview 1 バージョンの dotnet-mage 以降、環境変数を使用して ActivationData プロパティにアクセスできます。 このバージョンの dotnet-mage を使用すると、プログラムで次のことができます。

  • カスタム ファイルの関連付けに基づいて、アクティブ化対象のファイル名を検出します。
  • appref-ms ファイルでアクティブ化に使用される引数を検出します。

ランチャーは AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData 配列を読み取り、配列が空でない場合は該当する環境変数を設定します。

環境変数

次の環境変数が設定されます。

  • ClickOnce_ActivationData_Count

    この変数が存在する場合、値は ActivationData 文字列配列内の要素の数です。

  • ClickOnce_ActivationData_<n>

    配列内の各要素に対して、0 から始まるインデックスを持つ新しい環境変数が追加されます。つまり、次のようになります。

    ClickOnce_ActivationData_0 ClickOnce_ActivationData_1

    この変更によって修正されるシナリオでは常に 0 から始まるインデックス要素が使用されるため、変数は常に ClickOnce_ActivationData_0 になりますが、コードは柔軟であり、すべてのアクティブ化データを .NET アプリに渡すことができます。

Access プロパティ

次のコードを使用して、これらの環境変数を読み取って ActivationData コンテンツを検出できます。

string value = Environment.GetEnvironmentVariable("ClickOnce_ActivationData_0");

これまでは、.NET Framework アプリで、次のコードを使用してこのデータを読み取っていました。

string value = AppDomain.CurrentDomain?.SetupInformation?.ActivationArguments?.ActivationData?[0];

Windows での .NET 用 ClickOnce