Partilhar via


Escolher uma estratégia de atualização do ClickOnce

O ClickOnce pode fornecer atualizações automáticas para o aplicativo. Um aplicativo ClickOnce lê periodicamente seu arquivo de manifesto de implantação para verificar se há atualizações disponíveis para ele. Se disponível, a nova versão do aplicativo será baixada e executada. Para proporcionar eficiência, somente os arquivos que foram alterados serão baixados.

Ao criar um aplicativo ClickOnce, será necessário determinar qual estratégia o aplicativo usará para verificar se há atualizações disponíveis. Há três estratégias básicas que você pode usar: verificar se há atualizações na inicialização do aplicativo, verificar se há atualizações após a inicialização do aplicativo (executada em um thread em segundo plano) ou fornecer uma interface do usuário para atualizações.

Além disso, você poderá determinar a frequência com que o aplicativo verificará se há atualizações e fazer as atualizações necessárias.

Observação

Atualizações de aplicativos necessitam de conectividade de rede. Se uma conexão de rede não estiver presente, o aplicativo será executado sem verificar se há atualizações, independentemente da estratégia de atualização que você escolher.

Observação

No .NET Framework 2.0 e no .NET Framework 3.0, quando seu aplicativo verificar se há atualizações, antes ou após a inicialização, ou ao usar as APIs <xref:System.Deployment.Application>, você deverá definir deploymentProvider no manifesto de implantação. O elemento deploymentProvider corresponde no Visual Studio ao campo Localização de atualização na caixa de diálogo Atualizações da guia Publicar. Essa regra é relaxada no .NET Framework 3.5. Para obter mais informações, consulte Implantando aplicativos ClickOnce para servidores de teste e produção sem assinar novamente.

Verificar se há atualizações após a inicialização do aplicativo

Ao usar esta estratégia, o aplicativo tentará localizar e ler o arquivo de manifesto de implantação em segundo plano enquanto estiver em execução. Se uma atualização estiver disponível, na próxima vez que o usuário executar o aplicativo, será solicitado que ele faça o download e a instalação da atualização.

Essa estratégia funciona melhor para conexões de rede com largura da banda baixa ou aplicativos maiores que podem exigir downloads longos.

Para habilitar essa estratégia de atualização, clique em Depois que o aplicativo inicializar na seção Escolha quando o aplicativo deve verificar por atualizações na caixa de diálogo Atualizações do Aplicativo. Em seguida, especifique um intervalo de atualização na seção Especifique com que frequência o aplicativo deve verificar por atualizações.

Isso é o mesmo que alterar o elemento Atualizar no manifesto de implantação como:

<!-- When to check for updates -->
<subscription>
   <update>
      <expiration maximumAge="6" unit="hours" />
   </update>
</subscription>

Verificar se há atualizações antes da inicialização do aplicativo

A estratégia padrão é tentar localizar e ler o arquivo de manifesto de implantação antes do início do aplicativo. Ao usar essa estratégia, o aplicativo tentará localizar e ler o arquivo de manifesto de implantação sempre que o usuário iniciar o aplicativo. Se uma atualização não estiver disponível, a versão existente do aplicativo será iniciada. Se uma atualização necessária estiver disponível, ela será baixada e iniciada. Se uma atualização estiver disponível, mas não for necessária, o usuário deverá escolher se deseja atualizar ou iniciar a versão existente.

Essa estratégia funciona melhor para conexões de rede de alta largura da banda; o atraso para iniciar o aplicativo pode ser inaceitavelmente longo em conexões de baixa largura de banda.

Para habilitar essa estratégia de atualização, clique em Antes do aplicativo inicializar na seção Escolha quando o aplicativo deve verificar por atualizações na caixa de diálogo Atualizações do Aplicativo.

Isso é o mesmo que alterar o elemento Atualizar no manifesto de implantação como:

<!-- When to check for updates -->
<subscription>
   <update>
      <beforeApplicationStartup />
   </update>
</subscription>

Observação

Para aplicativos .NET Core 3.1 e .NET 5 e mais recentes, a verificação de atualizações antes do início do aplicativo é a única opção de atualização suportada.

Fazer atualizações necessárias

Talvez haja ocasiões em que você deseje exigir que usuários executem uma versão atualizada de seu aplicativo. Por exemplo, você pode fazer uma alteração em um recurso externo como um serviço Web que impeça o funcionamento correto da versão anterior de seu aplicativo. Nesse caso, talvez você deseje marcar sua atualização como obrigatória e evitar que os usuários executem a versão anterior.

Observação

Embora você possa exigir atualizações ao usar as outras estratégias de atualização, selecionar Antes do aplicativo inicializar é a única maneira de garantir que uma versão mais antiga não possa ser executada. Quando a atualização obrigatória for detectada na inicialização, o usuário deverá aceitar a atualização ou fechar o aplicativo.

Para marcar uma atualização como obrigatória, clique em Especifique a versão mínima necessária para este aplicativo na caixa de diálogo Atualizações do Aplicativo e especifique a versão de publicação (Principal, Secundária, Build, Revisão) que especifica o número de versão mais antigo do aplicativo que pode ser instalado.

Isso é o mesmo que definir o atributo minimumRequiredVersion do elemento Deployment no manifesto de implantação; por exemplo:

<deployment install="true" minimumRequiredVersion="1.0.0.0">

Especificar intervalos de atualização

Você também pode especificar a frequência com que o aplicativo verificará se há atualizações. Para fazer isso, especifique a verificação de atualizações pelo aplicativo após a inicialização como descrito em "Verificando se há atualizações após a inicialização do aplicativo" anteriormente neste tópico.

Para especificar o intervalo de atualização, defina as propriedades de Especifique com que frequência o aplicativo deve verificar por atualizações na caixa de diálogo Atualizações do Aplicativo.

Isso é o mesmo que definir os atributos maximumAge e unit do elemento Update no manifesto de implantação.

Por exemplo, talvez você deseje verificar sempre que o aplicativo é executado, uma vez por semana ou uma vez por mês. Se uma conexão de rede não estiver presente na hora especificada, a verificação de atualização será executada na próxima vez que o aplicativo for executado.

Observação

No ClickOnce para .NET Core e .NET 5 ou posterior, esse recurso não tem suporte. Para obter mais informações, consulte ClickOnce para .NET.

Fornecer uma interface do usuário para atualizações

Ao usar esta estratégia, o desenvolvedor de aplicativos fornece uma interface que permite ao usuário escolher quando ou com que frequência o aplicativo verificará se há atualizações. Por exemplo, você pode fornecer um comando "Verificar se Há Atualizações" ou uma caixa de diálogo "Configurações de Atualização" que contenha escolhas para intervalos de atualização diferentes. As APIs de implantação do ClickOnce fornecem uma estrutura para programar a sua própria interface do usuário de atualização. Para obter mais informações, consulte o namespace de System.Deployment.Application.

Observação

A classe ApplicationDeployment e as APIs no namespace System.Deployment.Application não têm suporte no .NET Core e no .NET 5 e versões posteriores. No .NET 7, há suporte para um novo método de acesso às propriedades de implantação de aplicativos. Para obter mais informações, consulte Acessar propriedades de implantação do ClickOnce no .NET. O .NET 7 não oferece suporte ao equivalente aos métodos ApplicationDeployment.

Se seu aplicativo usar APIs de implantação para controlar sua própria lógica de atualização, você deverá bloquear a verificação de atualização como descrito em "Bloqueando verificação de atualizações" na seção a seguir.

Essa estratégia funciona melhor quando você necessita de estratégias de atualização diferentes para usuários diferentes.

Bloquear verificação de atualização

Também é possível evitar que seu aplicativo verifique se há atualizações. Por exemplo, você pode ter um aplicativo simples que nunca será atualizado, mas quer usufruir dessa facilidade de instalação fornecida pela implantação do ClickOnce.

Você também deverá bloquear a verificação de atualização se seu aplicativo usar APIs de implantação para executar suas próprias atualizações; consulte "Fornecendo uma interface do usuário para atualizações" anteriormente neste tópico.

Para bloquear a verificação de atualizações, desmarque a caixa de seleção O aplicativo deve verificar por atualizações na caixa de diálogo Atualizações do Aplicativo.

Você também pode bloquear a verificação de atualizações ao remover a marca <Subscription> do manifesto de implantação.

Elevação de permissões e atualizações

Se uma nova versão de um aplicativo ClickOnce exigir um nível mais alto de confiança para ser executado do que a versão anterior, o ClickOnce perguntará ao usuário se ele deseja conceder ao aplicativo esse nível mais alto de confiança. Se o usuário recusar a concessão do nível mais alto de confiança, a atualização não será instalada. O ClickOnce solicitará que o usuário instale o aplicativo novamente quando ele for reiniciado na próxima vez. Se o usuário recusar conceder o nível mais alto de confiança neste momento, e a atualização não estiver marcada como o necessário, a versão antiga do aplicativo será executada. No entanto, se a atualização for necessária, o aplicativo não será executado novamente até que o usuário aceite o nível mais alto de confiança.

Nenhum aviso sobre níveis de confiança ocorrerá se você usar a Implantação de Aplicativo de Confiança. Para saber mais, consulte Visão geral da implantação de aplicativos confiáveis.