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.

Der Anwendungslauncher teilt die Eigenschaften der ClickOnce-Anwendungsbereitstellung mit der gestarteten Anwendung (nur bei .NET). Eigenschaften werden mithilfe von Umgebungsvariablen für die Anwendung freigegeben.

Die Variablennamen entsprechen weitgehend den Eigenschaften in der ApplicationDeployment-Klasse für .NET Framework. Die neuen Variablennamen enthalten den Präfix ClickOnce_:

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.

Hinweis

Mit dieser Methode können Sie auf Anwendungsbereitstellungseigenschaften zugreifen, aber .NET 7 unterstützt keine entsprechenden ApplicationDeployment-Methoden.

Zugriffseigenschaften

Im folgenden Codebeispiel wird gezeigt, wie Sie direkt auf die beiden Eigenschaften ClickOnce_IsNetworkDeployed und ClickOnce_ActivationUri zugreifen können.

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 Switch, -TrustURLParameters oder -tu. Mit dieser Option können Sie das erforderliche Bereitstellungsattribut mithilfe des DotNet.Mage-Tools festlegen. Diese Änderung ist eine Verbesserung gegenüber dem alten Mage-Tool, das diese Funktionalität nicht unterstützt hat, und auch eine manuelle Änderung des Anwendungsmanifests erforderlich, um das attribut trustURLParameters hinzuzufügen, <Deployment install="true" trustURLParameters="true">.

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

ClickOnce für .NET unter Windows