Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A partir do .NET 7 e do Visual Studio 2022 versão 17.4, pode aceder às propriedades de implementação do ClickOnce usando uma variável de ambiente.
O lançador de aplicações partilha as propriedades de implementação da aplicação ClickOnce com a aplicação que está a ser lançada (apenas .NET). As propriedades são partilhadas com a aplicação utilizando variáveis de ambiente.
Os nomes das variáveis correspondem de perto às propriedades da classe .NET Framework<xref:System.Deployment.Application.ApplicationDeployment>. Os novos nomes das variáveis incluem um ClickOnce_ prefixo:
- ClickOnce_IsNetworkDeployed
- ClickOnce_ActivationUri
- ClickOnce_CurrentVersion
- ClickOnce_DataDirectory
- ClickOnce_IsFirstRun
- ClickOnce_TimeOfLastUpdateCheck
- ClickOnce_UpdatedApplicationFullName
- ClickOnce_UpdatedVersion
- ClickOnce_UpdateLocation
Para além destas alterações, está disponível uma nova propriedade que devolve a versão do launcher da aplicação:
ClickOnce_LauncherVersion
Uma aplicação .NET pode usar estas propriedades direta ou indiretamente.
Note
Usando este método, pode aceder às propriedades de implementação da aplicação, mas o .NET 7 não suporta o equivalente aos métodos ApplicationDeployment.
Propriedades de acesso
O exemplo de código seguinte mostra como aceder diretamente a duas propriedades, 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();
}
}
A utilização indireta destas propriedades requer a implementação de uma nova ApplicationDeployment classe ao nível da aplicação. Esta classe abstrai a leitura de variáveis de ambiente e proporciona uma experiência semelhante à antiga classe .NET Framework.
Para uma implementação exemplar desta classe, veja ApplicationDeployment.cs.
O seguinte excerto de código mostra como usar esta classe:
NameValueCollection nameValueTable = new NameValueCollection();
if (ApplicationDeployment.IsNetworkDeployed)
{
ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
if (ad.ActivationUri != null)
{
nameValueTable = HttpUtility.ParseQueryString(ad.ActivationUri.Query);
}
}
ActivationUri e parâmetros do URL
A partir do .NET 7, dotnet-mage suporta um novo interruptor, -TrustURLParameters ou -tu. Esta opção permite-lhe definir o atributo de implementação necessário utilizando a ferramenta dotnet-mage. Esta alteração é uma melhoria em relação à antiga ferramenta Mage, que não suportava esta funcionalidade e também exigia a modificação manual do manifesto da aplicação para adicionar o trustURLParameters atributo, <deployment install="true" trustURLParameters="true".>
Tens de definir trustURLParameters como true para permitir que a aplicação aceda aos ActivationUri parâmetros e URL.