Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Nem todos os desenvolvedores que estão criando implantações do ClickOnce planejam implantar os próprios aplicativos. Muitos deles apenas empacotam seu aplicativo usando ClickOnce e, em seguida, entregam os arquivos a um cliente, como uma grande empresa. O cliente se torna o responsável por hospedar o aplicativo em sua rede. Este tópico discute alguns dos problemas inerentes a essas implantações em versões do .NET Framework antes da versão 3.5. Em seguida, ele descreve uma nova solução fornecida usando o novo recurso "usar manifesto para confiança" no .NET Framework 3.5. Por fim, ele conclui com estratégias recomendadas para criar implantações do ClickOnce para clientes que ainda estão usando versões mais antigas do .NET Framework.
Problemas envolvidos na criação de implantações para clientes
Vários problemas ocorrem quando você planeja fornecer uma implantação para um cliente. O primeiro problema diz respeito à assinatura de código. Para ser implantado em uma rede, o manifesto de implantação e o manifesto do aplicativo de uma implantação do ClickOnce devem ser assinados com um certificado digital. Isso levanta a questão de usar o certificado do desenvolvedor ou o certificado do cliente ao assinar os manifestos.
A questão de qual certificado usar é crítica, pois a identidade de um aplicativo ClickOnce é baseada na assinatura digital do manifesto de implantação. Se o desenvolvedor assinar o manifesto de implantação, ele poderá causar conflitos se o cliente for uma grande empresa e mais de uma divisão da empresa implantar uma versão personalizada do aplicativo.
Por exemplo, digamos que a Adventure Works tenha um departamento financeiro e um departamento de recursos humanos. Ambos os departamentos licenciam um aplicativo ClickOnce da Microsoft Corporation que gera relatórios de dados armazenados em um banco de dados SQL. A Microsoft fornece a cada departamento uma versão do aplicativo que é personalizada para seus dados. Se os aplicativos forem assinados com o mesmo certificado Authenticode, um usuário que tentar usar ambos os aplicativos encontrará um erro, pois o ClickOnce consideraria o segundo aplicativo idêntico ao primeiro. Nesse caso, o cliente pode experimentar efeitos colaterais imprevisíveis e indesejados que incluem a perda de todos os dados armazenados localmente pelo aplicativo.
Um problema adicional relacionado à assinatura de código é o deploymentProvider elemento no manifesto de implantação, que informa ao ClickOnce onde procurar atualizações do aplicativo. Esse elemento deve ser adicionado ao manifesto de implantação antes de assiná-lo. Se esse elemento for adicionado posteriormente, o manifesto de implantação deverá ser assinado novamente.
Exigir que o cliente assine o manifesto de implantação
Uma solução para esse problema de implantações não exclusivas é fazer com que o desenvolvedor assine o manifesto do aplicativo e o cliente assine o manifesto de implantação. Embora essa abordagem funcione, ela apresenta outros problemas. Como um certificado Authenticode deve permanecer um ativo protegido, o cliente não pode simplesmente fornecer o certificado ao desenvolvedor para assinar a implantação. Embora o cliente possa assinar o manifesto de implantação usando ferramentas disponíveis livremente com o SDK do .NET Framework, isso pode exigir mais conhecimento técnico do que o cliente está disposto ou capaz de fornecer. Nesses casos, o desenvolvedor geralmente cria um aplicativo, site ou outro mecanismo por meio do qual o cliente pode enviar sua versão do aplicativo para assinatura.
O impacto da assinatura do cliente na segurança do aplicativo ClickOnce
Mesmo que o desenvolvedor e o cliente concordem que o cliente deve assinar o manifesto do aplicativo, isso gera outros problemas que envolvem a identidade do aplicativo, especialmente quando ele se aplica à implantação de aplicativo confiável. (Para obter mais informações sobre esse recurso, consulte a visão geral da implantação de aplicativos confiáveis.) Digamos que a Adventure Works queira configurar seus computadores cliente para que qualquer aplicativo fornecido a eles pela Microsoft Corporation seja executado com total confiança. Se o Adventure Works assinar o manifesto de implantação, o ClickOnce usará a assinatura de segurança do Adventure Work para determinar o nível de confiança do aplicativo.
Criar implantações de cliente usando o manifesto de aplicativo para estabelecer confiança
O ClickOnce no .NET Framework 3.5 contém um novo recurso que fornece aos desenvolvedores e clientes uma nova solução para o cenário de como os manifestos devem ser assinados. O manifesto do aplicativo ClickOnce dá suporte a um novo elemento nomeado <useManifestForTrust> que permite ao desenvolvedor significar que a assinatura digital do manifesto do aplicativo é o que deve ser usado para tomar decisões de confiança. O desenvolvedor usa ferramentas de empacotamento ClickOnce, como Mage.exe, MageUI.exee Visual Studio, para incluir esse elemento no manifesto do aplicativo, bem como para inserir o nome do Publicador e o nome do aplicativo no manifesto.
Ao usar <useManifestForTrust>, o manifesto de implantação não precisa ser assinado com um certificado Authenticode emitido por uma autoridade de certificação. Em vez disso, ele pode ser assinado com o que é conhecido como um certificado autoassinado. Um certificado autoassinado é gerado pelo cliente ou pelo desenvolvedor usando as ferramentas padrão do SDK do .NET Framework e aplicado ao manifesto de implantação usando as ferramentas de implantação padrão do ClickOnce. Para obter mais informações, consulte MakeCert.
O uso de um certificado autoassinado para o manifesto de implantação apresenta várias vantagens. Ao eliminar a necessidade de o cliente obter ou criar seu próprio certificado Authenticode, <useManifestForTrust> simplifica a implantação para o cliente, permitindo que o desenvolvedor mantenha sua própria identidade visual no aplicativo. O resultado é um conjunto de implantações assinadas que são mais seguras e têm identidades de aplicativo exclusivas. Isso elimina o conflito potencial que pode ocorrer com a implantação do mesmo aplicativo em vários clientes.
Para obter informações passo a passo sobre como criar uma implantação do ClickOnce com <useManifestForTrust> habilitado, consulte Passo a passo: implantar manualmente um aplicativo ClickOnce que não requer a reentração e que preserva as informações de identidade visual.
Como o manifesto de confiança do aplicativo funciona em tempo de execução
Para obter uma melhor compreensão de como o uso do manifesto do aplicativo para estabelecer confiança funciona durante a execução, considere o exemplo a seguir. Um aplicativo ClickOnce direcionado ao .NET Framework 3.5 é criado pela Microsoft. O manifesto do aplicativo usa o <useManifestForTrust> elemento e é assinado pela Microsoft. A Adventure Works assina o manifesto de implantação usando um certificado autoassinado. Os clientes do Adventure Works são configurados para confiar em qualquer aplicativo assinado pela Microsoft.
Quando um usuário clica em um link para o manifesto de implantação, o ClickOnce instala o aplicativo no computador do usuário. As informações de certificado e implantação identificam de maneira exclusiva o aplicativo para o ClickOnce no computador do cliente. Se o usuário tentar instalar o mesmo aplicativo novamente de um local diferente, o ClickOnce poderá usar essa identidade para determinar se o aplicativo já existe no cliente.
Em seguida, o ClickOnce examina o certificado Authenticode usado para assinar o manifesto do aplicativo, que determina o nível de confiança que o ClickOnce concederá. Como a Adventure Works configurou seus clientes para confiar em qualquer aplicativo assinado pela Microsoft, este aplicativo ClickOnce recebe total confiança. Para obter mais informações, consulte a visão geral da implantação de aplicativos confiáveis.
Criar implantações para clientes para versões anteriores
E se um desenvolvedor estiver implantando aplicativos ClickOnce para clientes que estão usando versões mais antigas do .NET Framework? As seções a seguir resumem várias soluções recomendadas, juntamente com os benefícios e desvantagens de cada uma.
Assinar implantações em nome do cliente
Uma estratégia de implantação possível é que o desenvolvedor crie um mecanismo para assinar implantações em nome de seus clientes usando a própria chave privada do cliente. Isso impede que o desenvolvedor tenha que gerenciar chaves privadas ou vários pacotes de implantação. O desenvolvedor apenas fornece a mesma implantação para cada cliente. Cabe ao cliente personalizá-lo para seu ambiente usando o serviço de assinatura.
Uma desvantagem para esse método é o tempo e a despesa necessários para implementá-lo. Embora esse serviço possa ser criado usando as ferramentas fornecidas no SDK do .NET Framework, ele adicionará mais tempo de desenvolvimento ao ciclo de vida do produto.
Conforme observado anteriormente neste tópico, outra desvantagem é que a versão de cada cliente do aplicativo terá a mesma identidade de aplicativo, o que pode levar a conflitos. Se isso for uma preocupação, o desenvolvedor poderá alterar o campo Nome usado ao gerar o manifesto de implantação para dar a cada aplicativo um nome exclusivo. Isso criará uma identidade separada para cada versão do aplicativo e eliminará possíveis conflitos de identidade. Esse campo corresponde ao -Name argumento de Mage.exee ao campo Nome na guia Nome em MageUI.exe.
Por exemplo, digamos que o desenvolvedor tenha criado um aplicativo chamado Application1. Em vez de criar uma única implantação com o campo Nome definido como Application1, o desenvolvedor pode criar várias implantações com uma variação específica do cliente nesse nome, como Application1-CustomerA, Application1-CustomerB e assim por diante.
Implantar usando um pacote de instalação
Uma segunda estratégia de implantação possível é gerar um projeto de Instalação da Microsoft para executar a implantação inicial do aplicativo ClickOnce. Isso pode ser fornecido em um dos vários formatos diferentes: como uma implantação MSI, como um arquivo de instalação executável (.EXE) ou como um arquivo de gabinete (.cab) junto com um script em lote.
Usando essa técnica, o desenvolvedor fornecerá ao cliente uma implantação que inclui os arquivos de aplicativo, o manifesto do aplicativo e um manifesto de implantação que serve como um modelo. O cliente executaria o programa de instalação, o que solicitaria uma URL de implantação (o local do compartilhamento de arquivos ou servidor do qual os usuários instalarão o aplicativo ClickOnce), bem como um certificado digital. O aplicativo de instalação também pode optar por solicitar opções adicionais de configuração do ClickOnce, como o intervalo de verificação de atualização. Depois que essas informações forem coletadas, o programa de instalação gerará o manifesto de implantação real, assinará e publicará o aplicativo ClickOnce no local do servidor designado.
Há três maneiras pelas quais o cliente pode assinar o manifesto de implantação nesta situação:
O cliente pode usar um certificado válido emitido por uma AC (autoridade de certificação).
Como uma variação nessa abordagem, o cliente pode optar por assinar seu manifesto de implantação com um certificado autoassinado. A desvantagem disso é que ele fará com que o aplicativo exiba as palavras "Editor Desconhecido" quando o usuário for questionado se o instalará. No entanto, o benefício é que ele impede que clientes menores tenham que gastar o tempo e o dinheiro necessários para um certificado emitido por uma autoridade de certificação.
Por fim, o desenvolvedor pode incluir seu próprio certificado autoassinado no pacote de instalação. Isso apresenta os possíveis problemas com a identidade do aplicativo discutida anteriormente neste tópico.
A desvantagem do método de implantação via projeto é o tempo e o custo necessários para desenvolver um aplicativo de implantação personalizado.
Solicitar que o cliente gere o manifesto de implantação
Uma terceira estratégia de implantação possível é distribuir apenas os arquivos de aplicativo e o manifesto do aplicativo para o cliente. Nesse cenário, o cliente é responsável por usar o SDK do .NET Framework para gerar e assinar o manifesto de implantação.
A desvantagem desse método é que ele exige que o cliente instale as ferramentas do SDK do .NET Framework e tenha um desenvolvedor ou administrador do sistema qualificado para usá-las. Alguns clientes podem exigir uma solução que exija pouco ou nenhum esforço técnico de sua parte.