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_
:
- ClickOnce_IsNetworkDeployed
- ClickOnce_ActivationUri
- ClickOnce_CurrentVersion
- ClickOnce_DataDirectory
- ClickOnce_IsFirstRun
- ClickOnce_TimeOfLastUpdateCheck
- ClickOnce_UpdatedApplicationFullName
- ClickOnce_UpdatedVersion
- ClickOnce_UpdateLocation
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.