Acceso a las propiedades de implementación de ClickOnce para .NET en Windows

A partir de .NET 7 y Visual Studio 2022 versión 17.4, puede acceder a las propiedades de implementación de ClickOnce mediante una variable de entorno.

El iniciador de aplicaciones comparte las propiedades de implementación de la aplicación ClickOnce con la aplicación que se inicia (solo .NET). Las propiedades se comparten con la aplicación mediante variables de entorno.

Los nombres de variable coinciden en gran medida con las propiedades de la clase ApplicationDeployment de .NET Framework. Los nuevos nombres de variable incluyen un prefijo ClickOnce_:

Además de estos cambios, hay disponible una nueva propiedad que devuelve la versión del iniciador de aplicaciones:

  • ClickOnce_LauncherVersion

Las aplicaciones .NET puede usar estas propiedades directa o indirectamente.

Nota:

Con este método, puede acceder a las propiedades de implementación de aplicaciones, pero .NET 7 no admite el equivalente de los métodos ApplicationDeployment.

Propiedades de acceso

En el ejemplo de código siguiente se muestra cómo acceder directamente a las dos propiedades siguientes, ClickOnce_IsNetworkDeployed y 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();
    }
}

El uso indirecto de estas propiedades requiere la implementación de una nueva clase ApplicationDeployment en el nivel de aplicación. Esta clase abstrae la lectura de variables de entorno y proporciona una experiencia similar a la clase anterior de .NET Framework.

Para obtener una implementación de ejemplo de esta clase, consulte ApplicationDeployment.cs.

El siguiente fragmento de código muestra cómo usar esta clase:

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

Parámetros ActivationUri y URL

A partir de .NET 7, dotnet-mage admite un nuevo modificador, -TrustURLParameters o -tu. Este modificador permite establecer el atributo de implementación necesario mediante la herramienta dotnet-mage. Este cambio es una mejora de la antigua herramienta Mage, que no admitía esta funcionalidad y también requería la modificación manual del manifiesto de aplicación para agregar el atributo trustURLParameters, <deployment install="true" trustURLParameters="true">.

Debe establecer trustURLParameters en true para permitir que la aplicación acceda a los parámetros de dirección URL y ActivationUri.

ClickOnce para .NET en Windows