Acessar propriedades de implantação do ClickOnce para .NET no Windows

A partir do .NET 7 e do Visual Studio 2022 versão 17.4, você pode acessar as propriedades de implantação do ClickOnce usando uma variável de ambiente.

O inicializador de aplicativos compartilha as propriedades de implantação do aplicativo ClickOnce com o aplicativo sendo iniciado (somente .NET). As propriedades são compartilhadas com o aplicativo usando variáveis de ambiente.

Os nomes das variáveis correspondem rigorosamente às propriedades na classe .NET FrameworkApplicationDeployment. Os novos nomes de variável incluem um prefixo ClickOnce_:

Além dessas alterações, há uma nova propriedade disponível que retorna a versão do inicializador de aplicativos:

  • ClickOnce_LauncherVersion

Um aplicativo .NET pode usar essas propriedades direta ou indiretamente.

Observação

Usando esse método, você pode acessar as propriedades de implantação do aplicativo, mas o .NET 7 não oferece suporte ao equivalente aos métodos ApplicationDeployment.

Acessar propriedades

O exemplo de código a seguir mostra como acessar duas propriedades diretamente, ClickOnce_IsNetworkDeployed e 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();
    }
}

O uso indireto dessas propriedades requer a implementação de uma nova classe ApplicationDeployment no nível do aplicativo. Essa classe abstrai a leitura de variáveis de ambiente e fornece uma experiência semelhante à antiga classe .NET Framework.

Para obter uma implementação de exemplo dessa classe, consulte ApplicationDeployment.cs.

O seguinte snippet de código mostra como usar essa classe:

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

Parâmetros ActivationUri e URL

No .NET 7, o dotnet-mage dá suporte a uma nova opção, -TrustURLParameters ou -tu. Essa opção permite que você defina o atributo de implantação necessário usando a ferramenta dotnet-mage. Essa alteração é um aprimoramento em relação à antiga ferramenta Mage, que não dava suporte a essa funcionalidade e, em vez disso, exigia que você modificasse manualmente o manifesto do aplicativo para adicionar o atributo trustURLParameters, <deployment install="true" trustURLParameters="true">.

Você precisa definir trustURLParameters como true para permitir que o aplicativo acesse os parâmetros ActivationUri e de URL.

ClickOnce para .NET no Windows