Implantar aplicativos ClickOnce em servidores de teste e de produção sem assinar novamente
Este artigo descreve um recurso do ClickOnce introduzido no .NET Framework versão 3.5 que permite a implantação de aplicativos ClickOnce de vários locais de rede sem assinar novamente ou alterar os manifestos do ClickOnce.
Observação
A nova assinatura ainda é o método preferencial para implantar novas versões de aplicativos. Sempre que possível, use o método de nova assinatura. Para obter mais informações, confira Mage.exe (Manifest Generation and Editing Tool).
Desenvolvedores e ISVs de terceiros podem aceitar esse recurso, o que facilita a atualização dos aplicativos pelos seus clientes. Esse recurso pode ser usado nas seguintes situações:
Ao atualizar um aplicativo, não na primeira instalação de um aplicativo.
Quando há apenas uma configuração do aplicativo em um computador. Por exemplo, se um aplicativo estiver configurado para apontar para dois bancos de dados diferentes, você não poderá usar esse recurso.
Excluir deploymentProvider de manifestos de implantação
No .NET Framework 2.0 e no .NET Framework 3.0, qualquer aplicativo ClickOnce instalado no sistema para disponibilidade offline precisa listar um deploymentProvider
em seu manifesto de implantação. O deploymentProvider
normalmente é chamado de local de atualização; é o local em que o ClickOnce verifica se há atualizações de aplicativo. Esse requisito, juntamente com a necessidade de os editores de aplicativos assinarem suas implantações, tornou difícil para uma empresa atualizar um aplicativo ClickOnce de um fornecedor ou de outros. Isso também dificulta a implantação do mesmo aplicativo de vários locais na mesma rede.
Com as alterações feitas no ClickOnce no .NET Framework 3.5, é possível que um terceiro forneça um aplicativo ClickOnce a outra organização, que poderá implantar o aplicativo em sua própria rede.
Para aproveitar esse recurso, os desenvolvedores de aplicativos ClickOnce precisarão excluir deploymentProvider
de seus manifestos de implantação. Esse requisito significa que você precisará excluir o argumento -providerUrl
ao criar manifestos de implantação com Mage.exe. Ou, se você estiver gerando manifestos de implantação com MageUI.exe, precisará garantir que a caixa de texto Local de Inicialização na guia Manifesto do Aplicativo fique em branco.
Observação
No ClickOnce para .NET Core 3.1 e .NET 5 ou posterior, use dotnet-mage.exe em vez de Mage.exe. Para obter mais informações, confira ClickOnce para .NET.
deploymentProvider e atualizações de aplicativo
A partir do .NET Framework 3.5, você não precisa mais especificar um deploymentProvider
no manifesto de implantação a fim de implantar um aplicativo ClickOnce para uso online e offline. Essa alteração dá suporte ao cenário em que você precisa empacotar e assinar a implantação por conta própria, mas permitir que outras empresas implantem o aplicativo em suas redes.
O ponto importante a ser lembrado é que os aplicativos que excluem um deploymentProvider
não podem alterar o local de instalação durante as atualizações, até que enviem uma atualização que inclua a marca deploymentProvider
novamente.
Aqui estão dois exemplos para esclarecer esse ponto. No primeiro exemplo, você publica um aplicativo ClickOnce que não tem marca deploymentProvider
e solicita aos usuários que o instalem http://www.adatum.com/MyApplication/
. Se você decidir que deseja publicar a próxima atualização do aplicativo http://subdomain.adatum.com/MyApplication/
, não terá como fazer isso no manifesto de implantação que reside em http://www.adatum.com/MyApplication/
. Portanto, você tem duas opções:
Dizer aos usuários para desinstalarem a versão anterior e instalarem a nova versão do novo local.
Incluir uma atualização em
http://www.adatum.com/MyApplication/
que inclui umdeploymentProvider
apontando parahttp://www.adatum.com/MyApplication/
. Em seguida, liberar outra atualização posteriormente comdeploymentProvider
apontando parahttp://subdomain.adatum.com/MyApplication/
.No segundo exemplo, você publica um aplicativo ClickOnce que especifica
deploymentProvider
e decide removê-lo. Depois que a nova versão semdeploymentProvider
é baixada pelos clientes, você não pode redirecionar o caminho usado para atualizações até lançar uma versão do aplicativo que temdeploymentProvider
restaurado. Assim como acontece com o primeiro exemplo,deploymentProvider
inicialmente precisa apontar para o local de atualização atual, não para o novo local. Nesse caso, se você tentar inserir umdeploymentProvider
que referenciahttp://subdomain.adatum.com/MyApplication/
, a próxima atualização falhará.
Criar uma implantação
Para obter diretrizes passo a passo sobre como criar implantações que podem ser implantadas de diferentes locais de rede, confira Passo a passo: implantar manualmente um aplicativo ClickOnce que não requer nova assinatura e que preserva as informações de identidade visual.