Windows 上の .NET の ClickOnce 配置プロパティにアクセスする

.NET 7 および Visual Studio 2022 バージョン 17.4 以降では、環境変数を使用して ClickOnce 配置プロパティにアクセスできます。

アプリケーション起動ツールは、ClickOnce アプリケーション配置プロパティを起動するアプリケーションと共有します (.NET のみ)。 プロパティは、環境変数を使用してアプリケーションと共有されます。

変数名は、.NET Framework ApplicationDeployment クラスのプロパティと密接に一致します。 新しい変数名には、ClickOnce_ プレフィックスが含まれます。

これらの変更に加えて、アプリケーション起動ツールのバージョンを返す新しいプロパティを使用できます。

  • ClickOnce_LauncherVersion

.NET アプリケーションでは、これらのプロパティを直接または間接的に使用できます。

Note

このメソッドを使用すると、アプリケーション展開プロパティにアクセスできますが、.NET 7 では ApplicationDeployment メソッドと同等のメソッドはサポートされていません。

Access プロパティ

次のコード例は、ClickOnce_IsNetworkDeployedClickOnce_ActivationUri の 2 つのプロパティに直接アクセスする方法を示しています。

NameValueCollection nameValueTable = new NameValueCollection();
if (Environment.GetEnvironmentVariable("ClickOnce_IsNetworkDeployed")?.ToLower() == "true")
{
    string value = Environment.GetEnvironmentVariable("ClickOnce_ActivationUri");
    Uri activationUri = string.IsNullOrEmpty(value) ? null : new Uri(value);
    if (activationUri != null)
    {
        nameValueTable = HttpUtility.ParseQueryString(activationUri.Query);
        Console.WriteLine("Query string: " + activationUri.Query);
        Console.ReadKey();
    }
}

これらのプロパティを間接的に使用するには、アプリケーション レベルで新しい ApplicationDeployment クラスを実装する必要があります。 このクラスでは、環境変数の読み取りを抽象化し、古い .NET Framework クラスと同様のエクスペリエンスを提供します。

このクラスの実装例については、「ApplicationDeployment.cs」を参照してください。

このクラスを使用する方法を次のコード スニペットに示します。

NameValueCollection nameValueTable = new NameValueCollection();
if (ApplicationDeployment.IsNetworkDeployed)
{
    ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
    if (ad.ActivationUri != null)
    {
        nameValueTable = HttpUtility.ParseQueryString(ad.ActivationUri.Query);
    }
}

ActivationUri および URL パラメーター

.NET 7 より、dotnet-mage は新しいスイッチ (-TrustURLParameters または -tu) をサポートしています。 このスイッチを使用すると、dotnet-mage ツールを使用して必要な配置属性を設定できます。 この変更は、この機能をサポートしていなかった以前の Mage ツールに対する改善であり、trustURLParameters 属性 <deployment install="true" trustURLParameters="true"> を追加するようにアプリケーション マニフェストを手動で変更する必要もあります。

アプリケーションが ActivationUri および URL パラメーターにアクセスできるように、trustURLParameters を true に設定する必要があります。

Windows での .NET 用 ClickOnce