Acceder a las propiedades de implementación 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 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 estrechamente con las propiedades de la clase .NET Framework<xref:System.Deployment.Application.ApplicationDeployment>. Los nuevos nombres de variable incluyen un ClickOnce_ prefijo:

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

  • ClickOnce_LauncherVersion

Una aplicación .NET puede usar estas propiedades directamente o indirectamente.

Note

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 siguiente ejemplo de código se muestra cómo acceder directamente a dos propiedades, 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 ApplicationDeployment clase en el nivel de aplicación. Esta clase abstrae la lectura de variables de entorno y proporciona una experiencia similar a la antigua clase .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 una nueva opción, -TrustURLParameters o -tu. Esta opción permite establecer el atributo de implementación necesario con la herramienta dotnet-mage. Este cambio es una mejora respecto a 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 trustURLParameters atributo, <deployment install="true" trustURLParameters="true">.

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

ClickOnce para .NET en Windows