Accéder aux propriétés de déploiement ClickOnce pour .NET sur Windows

À partir de .NET 7 et Visual Studio 2022 version 17.4, vous pouvez accéder aux propriétés de déploiement ClickOnce à l’aide d’une variable d’environnement.

Le lanceur d’applications partage les propriétés de déploiement d’application ClickOnce avec l’application lancée (.NET uniquement). Les propriétés sont partagées avec l’application à l’aide de variables d’environnement.

Les noms des variables sont étroitement associés aux propriétés dans la classe .NET Framework ApplicationDeployment. Les noms des nouvelles variables incluent un préfixe ClickOnce_ :

En plus de ces modifications, une nouvelle propriété est disponible, retournant la version du lanceur d’applications :

  • ClickOnce_LauncherVersion

Une application .NET peut utiliser ces propriétés directement ou indirectement.

Remarque

Grâce à cette méthode, vous pouvez accéder aux propriétés de déploiement d’application, mais .NET 7 ne prend pas en charge l’équivalent des méthodes ApplicationDeployment.

Propriétés d’accès

L’exemple de code suivant montre comment accéder directement à deux propriétés : ClickOnce_IsNetworkDeployed et ClickOnce_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();
    }
}

L’utilisation indirecte de ces propriétés nécessite l’implémentation d’une nouvelle classe ApplicationDeployment au niveau de l’application. Cette classe extrait la lecture des variables d’environnement et fournit une expérience similaire à l’ancienne classe .NET Framework.

Pour obtenir un exemple d’implémentation de cette classe, consultez ApplicationDeployment.cs.

L'extrait de code suivant montre comment utiliser cette classe :

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

Paramètres d’URL et ActivationUri

À compter de .NET 7, dotnet-mage prend en charge un nouveau commutateur : -TrustURLParameters ou -tu. Ce commutateur vous permet de définir l’attribut de déploiement demandé à l’aide de l’outil dotnet-mage. Cette modification entraîne une amélioration par rapport à l’ancien outil Mage, qui ne prenait pas en charge cette fonctionnalité et obligeait également à modifier manuellement le manifeste de l’application pour ajouter l’attribut trustURLParameters, <le déploiement install="true" trustURLParameters="true">.

Vous devez définir trustURLParameters sur true pour permettre à l’application d’accéder aux paramètres ActivationUri et URL.

ClickOnce pour .NET sur Windows