Segurança, controle de versão e problemas de manifesto em implantações de ClickOnce

Há uma variedade de problemas com ClickOnce security, versão do aplicativo e manifesto de sintaxe e semântica que pode causar uma ClickOnce implantação não seja bem-sucedida.

ClickOnce e o controle de conta de usuário do Windows Vista

Em Windows Vista, aplicativos, por padrão são executados como usuário padrão, mesmo se o usuário atual está conectado com uma conta que tenha permissões de administrador. Se um aplicativo deve executar uma ação que requer permissões de administrador, ele informa o sistema operacional, que, em seguida, solicita que o usuário insira suas credenciais de administrador. Esse recurso, chamado controle de conta de usuário (UAC), impede que aplicativos façam alterações que podem afetar todo o sistema operacional sem a aprovação explícita do usuário. Aplicativos Windows declarar que exigem a elevação de permissões, especificando a requestedExecutionLevel o atributo na trustInfo seção seus manifesto de aplicativo.

Devido ao risco de expor os aplicativos a ataques de elevação de segurança, ClickOnce aplicativos não é possível solicitar a elevação de permissões se o UAC está habilitado para o cliente. Qualquer ClickOnce aplicativo que tenta definir suas requestedExecutionLevel atributo para requireAdministrator ou highestAvailable não será instalado em Windows Vista.

Em alguns casos, o ClickOnce aplicativo pode tentar ser executado com permissões de administrador devido a lógica de detecção do instalador do Windows Vista. Nesse caso, você pode definir o requestedExecutionLevel atributo no manifesto do aplicativo para asInvoker. Isso fará com que o aplicativo seja executado sem elevação. Visual Studio 2008 adiciona automaticamente esse atributo para todos os manifestos de aplicativo.

Se você estiver desenvolvendo um aplicativo que requer permissões de administrador para todo o tempo de vida do aplicativo, você deve considerar a implantar o aplicativo usando a tecnologia do Windows Installer (MSI). Para obter mais informações, consulte Windows Installer Basics.

Aplicativos de confiança on-line de cotas do aplicativo e parcial

Se sua ClickOnce aplicativo executa on-line em vez de através de uma instalação, ele deve caber dentro da cota reservada para os aplicativos on-line. Além disso, um aplicativo de rede que é executado em confiança parcial, como com um conjunto restrito de permissões de segurança não pode ser maior do que metade do tamanho da cota.

Para obter mais informações e instruções sobre como alterar a cota de inscrição online, consulte ClickOnce Visão geral do cache.

Problemas de versionamento

Você pode ter problemas se você atribuir nomes fortes para seu assembly e incrementa o número de versão do assembly para refletir uma atualização do aplicativo. Qualquer assembly compilado com uma referência a um assembly de nome forte deve propriamente dito ser recompilado ou assembly tentará fazer referência a versão mais antiga. O assembly será tentar isso porque o assembly está usando o valor da versão antiga em sua solicitação 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. Após compilar o assembly, adicione-o como uma referência para o projeto que contém o principal do aplicativo. Se você atualizar o assembly, incrementa a versão 1.0.0.1 e tenta 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 seu ClickOnce manifestos manualmente; Esse erro não deve ocorrer se você gerar o uso de implantação Visual Studio 2005.

A especificação do indivíduo.NET Framework Assemblies no manifesto

Seu aplicativo não será carregado se você tiver editado manualmente um ClickOnce implantação para fazer referência a uma versão mais antiga de um .NET Framework assembly. Por exemplo, se você adicionou uma referência ao assembly System.Net para obter uma versão do .NET Framework anteriores à versão especificada no manifesto, um erro poderia ocorrer. Em geral, você não deve tentar especificar referências a indivíduo .NET Framework assemblies, como a versão do .NET Framework contra o qual seu aplicativo é executado é especificada como uma dependência no manifesto de aplicativo.

Problemas de análise do manifesto

Os arquivos de manifesto que são usados por ClickOnce são arquivos XML e devem ser bem formado e válido: eles devem obedecer as regras de sintaxe XML e usar apenas os elementos e atributos definidos no esquema XML relevante.

Algo que pode causar problemas em um arquivo de manifesto é selecionando um nome para o seu aplicativo que contém um caractere especial, como, por exemplo, uma aspa simples ou dupla. O nome do aplicativo é parte de sua ClickOnce de identidade. ClickOnceatualmente não analisa as identidades que contêm caracteres especiais. Se não conseguir ativar seu aplicativo, certifique-se de que você estiver usando apenas alfabéticos e numéricos para o nome e tenta implantá-lo novamente.

Se você tiver editado manualmente seus manifestos de implantação ou aplicativo, você pode ter acidentalmente corrompido-los. Manifesto corrompido impedirá uma correta ClickOnce instalação. Você pode depurar tais erros em tempo de execução clicando em detalhes na Erro de ClickOnce caixa de diálogo e ler a mensagem de erro no log. O log irá listar uma das seguintes mensagens:

  • Uma descrição do erro de sintaxe e o número da linha e caractere onde ocorreu o erro de posição.

  • O nome de um elemento ou atributo usado em violação do esquema do manifesto. Se você tiver adicionado o XML manualmente para seus manifestos, você terá de comparar suas inclusões os esquemas de manifesto. Para obter mais informações, consulte ClickOnce Manifesto de implantação e ClickOnce Application Manifest.

  • Um conflito de ID. Referências de dependência nos manifestos de implantação e o aplicativo devem ser exclusivas em ambos os name e publicKeyToken atributos. Se ambos os atributos correspondem entre quaisquer dois elementos dentro de um manifesto, análise de manifesto não terá êxito.

Precauções ao alterar manualmente os manifestos ou aplicativos

Quando você atualiza 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 os hash do arquivo e sua assinatura digital.

Precauções com o uso do provedor de implantação

O ClickOnce o manifesto de implantação tem um deploymentProvider propriedade que aponta para o caminho completo do local de onde o aplicativo deve ser instalado e atendido:

<deploymentProvider codebase="http://myserver/myapp.application" />

Esse caminho é definido quando ClickOnce cria o aplicativo e é obrigatória para aplicativos instalados. O caminho aponta para o local padrão onde o ClickOnce installer instalará o aplicativo e procure atualizações. Se você usar o xcopy comando para copiar um ClickOnce aplicativo para um local diferente, mas não alterar o deploymentProvider propriedade, ClickOnce ainda farão referência volta ao local original quando ele tenta baixar o aplicativo.

Se você deseja mover ou copiar um aplicativo, você deve também atualizar o deploymentProvider o caminho, para que o cliente realmente instala do novo local. Atualizando este caminho é principalmente uma preocupação, se você tiver instalado os aplicativos. Para os aplicativos on-line que são iniciados sempre através da URL original, definindo a deploymentProvider é opcional. Se deploymentProvider estiver definida, ela será respeitada; Caso contrário, a URL usada para iniciar o aplicativo será usada como a URL base para fazer o download de arquivos do aplicativo.

ObservaçãoObservação

Toda vez que você atualize o manifesto deve também assiná-lo novamente.

Consulte também

Conceitos

Solucionando problemas de implantações de ClickOnce

Protegendo aplicativos de ClickOnce

Escolhendo uma estratégia de implantação de ClickOnce