Zugreifen auf ClickOnce-Bereitstellungseigenschaften für .NET unter Windows

Ab .NET 7 und Visual Studio 2022, Version 17.4, können Sie mithilfe einer Umgebungsvariable auf ClickOnce-Bereitstellungseigenschaften zugreifen.

Das Anwendungsstartfeld teilt ClickOnce-Anwendungsbereitstellungseigenschaften mit der gestarteten Anwendung (nur .NET). Eigenschaften werden mithilfe von Umgebungsvariablen für die Anwendung freigegeben.

Die Variablennamen stimmen eng mit den Eigenschaften in der .NET Framework-Klasse <xref:System.Deployment.Application.ApplicationDeployment> überein. Die neuen Variablennamen enthalten ein ClickOnce_ Präfix:

Zusätzlich zu diesen Änderungen ist eine neue Eigenschaft verfügbar, die die Anwendungsstartprogrammversion zurückgibt:

  • ClickOnce_LauncherVersion

Eine .NET Anwendung kann diese Eigenschaften direkt oder indirekt verwenden.

Note

Mit dieser Methode können Sie auf Anwendungsbereitstellungseigenschaften zugreifen, aber .NET 7 unterstützt nicht das Äquivalent von ApplicationDeployment-Methoden.

Zugriffseigenschaften

Das folgende Codebeispiel zeigt, wie Sie direkt auf zwei Eigenschaften, ClickOnce_IsNetworkDeployed und ClickOnce_ActivationUri, zugreifen.

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();
    }
}

Die indirekte Verwendung dieser Eigenschaften erfordert die Implementierung einer neuen ApplicationDeployment Klasse auf Anwendungsebene. Diese Klasse abstrahiert das Lesen von Umgebungsvariablen und bietet eine ähnliche Erfahrung wie die alte .NET Framework-Klasse.

Eine Beispielimplementierung dieser Klasse finden Sie unter ApplicationDeployment.cs.

Der folgende Codeausschnitt veranschaulicht die Verwendung dieser Klasse:

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

ActivationUri und URL-Parameter

Ab .NET 7 unterstützt dotnet-mage einen neuen Schalter -TrustURLParameters oder -tu. Mit diesem Switch können Sie das erforderliche Bereitstellungsattribut mithilfe des Dotnet-Mage-Tools festlegen. Diese Änderung stellt gegenüber dem alten Mage-Tool eine Verbesserung dar, das diese Funktionalität nicht unterstützte und außerdem eine manuelle Änderung des Anwendungsmanifests erforderte, um das Attribut trustURLParameters, <deployment install="true" trustURLParameters="true">, hinzuzufügen.

Sie müssen trustURLParameters auf true festlegen, damit die Anwendung auf die Parameter ActivationUri und die URL-Parameter zugreifen kann.

ClickOnce für .NET unter Windows