Eigenschappen van ClickOnce-implementatie openen voor .NET op Windows

Vanaf .NET 7 en Visual Studio versie 17.4 van 2022 hebt u toegang tot ClickOnce-implementatie-eigenschappen met behulp van een omgevingsvariabele.

Het startprogramma voor toepassingen deelt eigenschappen van ClickOnce-toepassingsimplementatie met de toepassing die wordt gestart (alleen .NET). Eigenschappen worden gedeeld met de toepassing met behulp van omgevingsvariabelen.

De namen van variabelen komen nauw overeen met de eigenschappen in de klasse .NET Framework<xref:System.Deployment.Application.ApplicationDeployment>. De nieuwe namen van variabelen bevatten een ClickOnce_ voorvoegsel:

Naast deze wijzigingen is er een nieuwe eigenschap beschikbaar die de versie van het startprogramma voor toepassingen retourneert:

  • ClickOnce_LauncherVersion

Een .NET-toepassing kan deze eigenschappen direct of indirect gebruiken.

Opmerking

Met deze methode hebt u toegang tot de eigenschappen van de toepassingsimplementatie, maar .NET 7 biedt geen ondersteuning voor het equivalent van ApplicationDeployment-methoden.

Toegangseigenschappen

In het volgende codevoorbeeld ziet u hoe u rechtstreeks toegang hebt tot twee eigenschappen en ClickOnce_IsNetworkDeployedClickOnce_ActivationUri.

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

Indirect gebruik van deze eigenschappen vereist de implementatie van een nieuwe ApplicationDeployment klasse op toepassingsniveau. Deze klasse abstraheert het lezen van omgevingsvariabelen en biedt een vergelijkbare ervaring als de oude .NET Framework-klasse.

Zie ApplicationDeployment.cs voor een voorbeeld van de implementatie van deze klasse.

In het volgende codefragment ziet u hoe u deze klasse gebruikt:

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

ActivationUri en URL-parameters

Vanaf .NET 7 ondersteunt dotnet-mage een nieuwe switch, -TrustURLParameters of -tu. Met deze schakeloptie kunt u het vereiste implementatiekenmerk instellen met behulp van het hulpprogramma dotnet-mage. Deze wijziging is een verbetering ten opzichte van het oude Mage-hulpprogramma, dat deze functionaliteit niet ondersteunt en ook handmatige aanpassing van het toepassingsmanifest vereist om het trustURLParameters kenmerk, <deployment install="true" trustURLParameters="true"> toe te voegen.

U moet trustURLParameters instellen op true om de applicatie toegang te geven tot de ActivationUri en URL-parameters.

ClickOnce voor .NET op Windows