Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Há uma variedade de problemas com a segurança do ClickOnce, o controle de versão do aplicativo e a sintaxe e semântica do manifesto que podem fazer com que uma implantação do ClickOnce não seja bem-sucedida.
ClickOnce e Controle de Conta de Usuário do Windows
No Windows Vista e em versões posteriores do Windows, os aplicativos são executados por padrão como um usuário padrão, mesmo que o usuário atual esteja conectado com uma conta que tenha permissões de administrador. Se um aplicativo precisar executar uma ação que exija permissões de administrador, ele informará o sistema operacional, que solicitará que o usuário insira suas credenciais de administrador. Esse recurso, chamado UAC (Controle de Conta de Usuário), impede que os aplicativos façam alterações que possam afetar todo o sistema operacional sem a aprovação explícita do usuário. Os aplicativos do Windows declaram que exigem essa elevação de permissão especificando o requestedExecutionLevel atributo na seção do manifesto trustInfo do aplicativo.
Devido ao risco de expor aplicativos a ataques de elevação de segurança, os aplicativos ClickOnce não podem solicitar elevação de permissão se o UAC estiver habilitado para o cliente. Qualquer aplicativo ClickOnce que tente definir seu requestedExecutionLevel atributo para requireAdministrator ou highestAvailable não será instalado no Windows Vista e versões posteriores.
Em alguns casos, seu aplicativo ClickOnce pode tentar ser executado com permissões de administrador devido à lógica de deteção do instalador no Windows. Nesse caso, você pode definir o requestedExecutionLevel atributo no manifesto do aplicativo como asInvoker. Isso fará com que o próprio aplicativo seja executado sem elevação. O Visual Studio adiciona automaticamente esse atributo a todos os manifestos do aplicativo.
Se você estiver desenvolvendo um aplicativo que requer permissões de administrador durante todo o tempo de vida do aplicativo, considere implantar o aplicativo usando a tecnologia Windows Installer (MSI). Para obter mais informações, consulte Noções básicas do Windows Installer.
Quotas de aplicações online e aplicações com confiança parcial
Se a sua aplicação ClickOnce for executada online em vez de através de uma instalação, ela deve encaixar-se na cota reservada para aplicações online. Além disso, um aplicativo de rede executado em confiança parcial, como com um conjunto restrito de permissões de segurança, não pode ser maior que metade do tamanho da cota.
Observação
No ClickOnce para .NET Core e .NET 5 ou posterior, a confiança parcial, que requer Segurança de Acesso ao Código, não é suportada. No .NET Framework, o uso da Segurança de Acesso ao Código não é uma prática recomendada e não é recomendado.
Para obter mais informações e instruções sobre como alterar a cota de aplicativo online, consulte Visão geral do cache ClickOnce.
Problemas de controle de versão
Você pode ter problemas se atribuir nomes fortes ao assembly e incrementar o número da versão do assembly para refletir uma atualização do aplicativo. Qualquer assembly compilado com referência a um assembly com nome forte deve ser recompilado, ou então tentará utilizar a versão mais antiga. A assembleia tentará isto porque a assembleia está a usar o valor da versão antiga no seu requerimento de ligação.
Por exemplo, digamos que você tenha um assembly de nome forte em seu próprio projeto com a versão 1.0.0.0. Depois de compilar o assembly, adicione-o como uma referência ao projeto que contém seu aplicativo principal. Se você atualizar o assembly, incrementar a versão para 1.0.0.1 e tentar implantá-lo sem também recompilar o aplicativo, o aplicativo não poderá carregar o assembly em tempo de execução.
Este erro pode ocorrer somente se você estiver editando seus manifestos ClickOnce manualmente; você não deve enfrentar esse erro se você gerar sua implantação usando o Visual Studio.
Especificar assemblies individuais do .NET Framework no manifesto
Seu aplicativo falhará ao carregar se você tiver editado manualmente uma implantação do ClickOnce para fazer referência a uma versão mais antiga de um assembly do .NET Framework. Por exemplo, se você adicionou uma referência ao assembly System.Net para uma versão do .NET Framework antes da versão especificada no manifesto, ocorrerá um erro. Em geral, você não deve tentar especificar referências a assemblies individuais do .NET Framework, pois a versão do .NET Framework em relação à qual seu aplicativo é executado é especificada como uma dependência no manifesto do aplicativo.
Problemas de análise de manifesto
Os arquivos de manifesto que são usados por ClickOnce são arquivos XML, e eles devem ser bem formados e válidos: eles devem obedecer às regras de sintaxe XML e usar apenas elementos e atributos definidos no esquema XML relevante.
Algo que pode causar problemas em um arquivo de manifesto é selecionar um nome para seu aplicativo que contenha um caractere especial, como aspas simples ou duplas. O nome da aplicação faz parte da sua identidade ClickOnce. Atualmente, o ClickOnce não analisa identidades que contenham caracteres especiais. Se o aplicativo não for ativado, verifique se você está usando apenas caracteres alfabéticos e numéricos para o nome e tente implantá-lo novamente.
Se tiver editado manualmente os seus manifestos de implantação ou aplicação, poderá tê-los corrompido involuntariamente. Manifesto corrompido impedirá uma instalação correta do ClickOnce. Você pode depurar esses erros em tempo de execução clicando em detalhes na caixa de diálogo Erro ClickOnce e lendo a mensagem de erro no log. O log listará uma das seguintes mensagens:
Uma descrição do erro de sintaxe e o número da linha e a posição do caractere onde o erro ocorreu.
O nome de um elemento ou atributo usado em violação do esquema do manifesto. Se você adicionou XML manualmente aos seus manifestos, terá que comparar suas adições aos esquemas de manifesto. Para obter mais informações, consulte Manifesto de implantação ClickOnce e Manifesto do aplicativo ClickOnce.
Um conflito de ID. As referências de dependência em manifestos de distribuição e aplicação devem ser exclusivas nos seus atributos
nameepublicKeyToken. Caso os dois atributos coincidam entre quaisquer dois elementos dentro de um manifesto, a análise do manifesto não será bem-sucedida.
Precauções ao alterar manualmente manifestos ou aplicativos
Ao atualizar um manifesto de aplicativo, você deve assinar novamente o manifesto do aplicativo e o manifesto de implantação. O manifesto de implantação contém uma referência ao manifesto do aplicativo que inclui o hash desse arquivo e sua assinatura digital.
Precauções com o uso do provedor de implantação
O manifesto de distribuição ClickOnce tem uma deploymentProvider propriedade que aponta para o caminho completo do local de onde a aplicação deve ser instalada e gerida.
<deploymentProvider codebase="http://myserver/myapp.application" />
Esse caminho é definido quando o ClickOnce cria o aplicativo e é obrigatório para aplicativos instalados. O caminho aponta para o local padrão de onde o instalador do ClickOnce instalará o aplicativo e procurará atualizações. Se utilizar o comando xcopy para copiar uma aplicação ClickOnce para uma localização diferente, mas não alterar a propriedade deploymentProvider, o ClickOnce continuará a referir-se ao local original ao tentar transferir a aplicação.
Se você quiser mover ou copiar um aplicativo, você também deve atualizar o deploymentProvider caminho, para que o cliente realmente instale a partir do novo local. Atualizar esse caminho é principalmente uma preocupação se você tiver aplicativos instalados. Para aplicações online que são sempre iniciadas através do URL original, definir o deploymentProvider é opcional. Se deploymentProvider estiver definido, será honrado, caso contrário, o URL usado para iniciar o aplicativo será usado como o URL base para baixar arquivos do aplicativo.
Observação
Toda vez que você atualizar o manifesto, você também deve assiná-lo novamente.
Conteúdo relacionado
Solucionar problemas de implantações do ClickOnceProteger aplicativos ClickOnceEscolha uma estratégia de implantação do ClickOnce