Escolha uma estratégia de atualização do ClickOnceChoose a ClickOnce update strategy

ClickOnceClickOnce pode fornecer atualizações automáticas para o aplicativo. can provide automatic application updates. Um ClickOnceClickOnce aplicativo lê periodicamente o seu arquivo de manifesto de implantação para ver se há atualizações do aplicativo estão disponíveis.A ClickOnceClickOnce application periodically reads its deployment manifest file to see whether updates to the application are available. Se disponível, a nova versão do aplicativo será baixada e executada.If available, the new version of the application is downloaded and run. Para proporcionar eficiência, somente os arquivos que foram alterados serão baixados.For efficiency, only those files that have changed are downloaded.

Ao criar um aplicativo ClickOnceClickOnce, será necessário determinar qual estratégia o aplicativo usará para verificar se há atualizações disponíveis.When designing a ClickOnceClickOnce application, you have to determine which strategy the application will use to check for available updates. 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.There are three basic strategies that you can use: checking for updates on application startup, checking for updates after application startup (running in a background thread), or providing a user interface for updates.

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.In addition, you can determine how often the application will check for updates, and you can make updates required.

Note

Atualizações de aplicativos necessitam de conectividade de rede.Application updates require network connectivity. 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.If a network connection is not present, the application will run without checking for updates, regardless of the update strategy that you choose.

Note

No .NET Framework 2.0 e no .NET Framework 3.0, sempre que seu aplicativo verificar se as atualizações, antes ou após a inicialização ou por meio de <xref:System.Deployment.Application > APIs, você deve definir deploymentProvider no manifesto de implantação.In .NET Framework 2.0 and .NET Framework 3.0, any time your application checks for updates, before or after startup, or by using the <xref:System.Deployment.Application> APIs, you must set deploymentProvider in the deployment manifest. O deploymentProvider elemento corresponde no Visual Studio para o atualizar local campo o atualizações caixa de diálogo do publicar guia. Essa regra é consentida no .NET Framework 3.5.The deploymentProvider element corresponds in Visual Studio to the Update location field on the Updates dialog box of the Publish tab. This rule is relaxed in .NET Framework 3.5. Para obter mais informações, consulte implantação de ClickOnce aplicativos para teste e servidores de produção sem Resigning.For more information, see Deploying ClickOnce Applications For Testing and Production Servers without Resigning.

Verifique se há atualizações após a inicialização do aplicativoCheck for updates after application startup

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.By using this strategy, the application will attempt to locate and read the deployment manifest file in the background while the application is running. Se uma atualização estiver disponível, na próxima vez que o usuário executar o aplicativo, o download e a instalação da atualização serão solicitados.If an update is available, the next time that the user runs the application, he will be prompted to download and install the update.

Essa estratégia funciona melhor para conexões de rede com largura da banda baixa ou aplicativos maiores que podem exigir downloads longos.This strategy works best for low-bandwidth network connections or for larger applications that might require lengthy downloads.

Para habilitar essa estratégia de atualização, clique em depois que o aplicativo é iniciado na escolha quando o aplicativo deve verificar por atualizações seção o atualizações do aplicativo caixa de diálogo.To enable this update strategy, click After the application starts in the Choose when the application should check for updates section of the Application Updates dialog box. Em seguida, especifique um intervalo de atualização na seção especifique a frequência com que o aplicativo deve verificar por atualizações.Then specify an update interval in the section Specify how frequently the application should check for updates.

Isso é o mesmo que alterar o atualização elemento na implantação de manifesto da seguinte maneira:This is the same as changing the Update element in the deployment manifest as follows:

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

Verificar se há atualizações antes da inicialização do aplicativoCheck for updates before application startup

A estratégia padrão é tentar localizar e ler o arquivo de manifesto de implantação antes do início do aplicativo.The default strategy is to try to locate and read the deployment manifest file before the application starts. 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.By using this strategy, the application will attempt to locate and read the deployment manifest file every time that the user starts the application. Se uma atualização estiver disponível, ela será baixada e iniciada. Caso contrário, a versão existente do aplicativo será iniciada.If an update is available, it will be downloaded and started; otherwise, the existing version of the application will be started.

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.This strategy works best for high-bandwidth network connections; the delay in starting the application may be unacceptably long over low-bandwidth connections.

Para habilitar essa estratégia de atualização, clique em antes de iniciar o aplicativo na escolha quando o aplicativo deve verificar por atualizações seção o atualizações do aplicativo caixa de diálogo.To enable this update strategy, click Before the application starts in the Choose when the application should check for updates section of the Application Updates dialog box.

Isso é o mesmo que alterar o atualização elemento na implantação de manifesto da seguinte maneira:This is the same as changing the Update element in the deployment manifest as follows:

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

Fazer as atualizações necessáriasMake updates required

Talvez haja ocasiões em que você deseje exigir que usuários executem uma versão atualizada de seu aplicativo.There may be occasions when you want to require users to run an updated version of your application. 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.For example, you might make a change to an external resource such as a Web service that would prevent the earlier version of your application from working correctly. Nesse caso, talvez você deseje marcar sua atualização como obrigatória e evitar que os usuários executem a versão anterior.In this case, you would want to mark your update as required and prevent users from running the earlier version.

Note

Embora você possa exigir atualizações por meio de outras estratégias de atualização, verificando antes de iniciar o aplicativo é a única maneira de garantir que uma versão mais antiga não pode ser executada.Although you can require updates by using the other update strategies, checking Before the application starts is the only way to guarantee that an older version cannot be run. Quando a atualização obrigatória for detectada na inicialização, o usuário deverá aceitar a atualização ou fechar o aplicativo.When the mandatory update is detected on startup, the user must either accept the update or close the application.

Para marcar uma atualização como requerido, clique em especificar uma versão mínima necessária para este aplicativo na aplicativo atualiza caixa de diálogo caixa e, em seguida, especifique a versão de publicação (principal, Secundárias, Build, revisão), que especifica o menor número de versão do aplicativo que pode ser instalado.To mark an update as required, click Specify a minimum required version for this application in the Application Updates dialog box, and then specify the publish version (Major, Minor, Build, Revision), which specifies the lowest version number of the application that can be installed.

Isso é o mesmo que definir a minimumRequiredVersion atributo da implantação elemento no manifesto de implantação; por exemplo:This is the same as setting the minimumRequiredVersion attribute of the Deployment element in the deployment manifest; for example:

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

Especifique os intervalos de atualizaçãoSpecify update intervals

Você também pode especificar a frequência com que o aplicativo verificará se há atualizações.You can also specify how often the application checks for updates. 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.To do this, specify that the application check for updates after startup as described in "Checking for Updates After Application Startup" earlier in this topic.

Para especificar o intervalo de atualização, defina as especifique a frequência com que o aplicativo deve verificar se há atualizações propriedades na atualizações de aplicativos caixa de diálogo.To specify the update interval, set the Specify how frequently the application should check for updates properties in the Application Updates dialog box.

Isso é o mesmo que definir a maximumAge e unidade atributos do atualização elemento no manifesto de implantação.This is the same as setting the maximumAge and unit attributes of the Update element in the deployment manifest.

Por exemplo, talvez você deseje verificar sempre que o aplicativo é executado, uma vez por semana ou uma vez por mês.For example, you may want to check each time the application runs, or one time a week, or one time a month. 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.If a network connection is not present at the specified time, the update check is performed the next time that the application runs.

Fornecer uma interface do usuário para atualizaçõesProvide a user interface for updates

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.When using this strategy, the application developer provides a user interface that enables the user to choose when or how often the application will check for updates. 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.For example, you might provide a "Check for Updates Now" command, or an "Update Settings" dialog box that has choices for different update intervals. O ClickOnceClickOnce APIs de implantação fornecem uma estrutura para a programação de sua própria interface de usuário de atualização.The ClickOnceClickOnce deployment APIs provide a framework for programming your own update user interface. Para obter mais informações, consulte o namespace de System.Deployment.Application.For more information, see the System.Deployment.Application namespace.

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.If your application uses deployment APIs to control its own update logic, you should block update checking as described in "Blocking Update Checking" in the following section.

Essa estratégia funciona melhor quando você necessita de estratégias de atualização diferentes para usuários diferentes.This strategy works best when you need different update strategies for different users.

Bloquear a verificação de atualizaçãoBlock update checking

Também é possível evitar que seu aplicativo verifique se há atualizações.It is also possible to prevent your application from ever checking for updates. Por exemplo, você pode ter um aplicativo simples que nunca será atualizado, mas deseje usufruir dessa facilidade de instalação fornecida pela implantação de ClickOnceClickOnce.For example, you might have a simple application that will never be updated, but you want to take advantage of the ease of installation provide by ClickOnceClickOnce deployment.

Você também deve bloquear a atualização verificando se seu aplicativo usa APIs de implantação para executar suas próprias atualizações; consulte "Fornecer uma interface do usuário para atualizações" no início deste tópico.You should also block update checking if your application uses deployment APIs to perform its own updates; see "Provide a user interface for updates" earlier in this topic.

Para bloquear a verificação de atualização, desmarque a o aplicativo deve verificar por atualizações caixa de seleção na caixa de diálogo atualizações do aplicativo.To block update checking, clear the The application should check for updates check box in the Application Updates Dialog Box.

Você também pode bloquear a verificação de atualizações ao remover a marca <Subscription> do manifesto de implantação.You can also block update checking by removing the <Subscription> tag from the deployment manifest.

Atualizações e elevação de permissõesPermission elevation and updates

Se uma nova versão de um aplicativo ClickOnceClickOnce exigir um nível mais alto de confiança para execução do que a versão anterior, ClickOnceClickOnce perguntará ao usuário se ele deseja que o aplicativo receba esse nível mais alto de confiança.If a new version of a ClickOnceClickOnce application requires a higher level of trust to run than the previous version, ClickOnceClickOnce will prompt the user, asking him if he wants the application to be granted this higher level of trust. Se o usuário recusar a concessão do nível mais alto de confiança, a atualização não será instalada.If the user declines to grant the higher trust level, the update will not install. ClickOnceClickOnce solicitará que o usuário instale o aplicativo novamente quando ele for reiniciado na próxima vez. will prompt the user to install the application again when it is next restarted. 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.If the user declines to grant the higher level of trust at this point, and the update is not marked as required, the old version of the application will run. 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.However, if the update is required, the application will not run again until the user accepts the higher trust level.

Nenhum aviso sobre níveis de confiança ocorrerá se você usar a Implantação de Aplicativo de Confiança.No prompting for trust levels will occur if you use Trusted Application Deployment. Para obter mais informações, consulte visão geral da implantação de aplicativo confiável.For more information, see Trusted application deployment overview.

Consulte tambémSee also

<XRef:System.Deployment.Application ><xref:System.Deployment.Application>
Implantação e segurança do ClickOnce ClickOnce security and deployment
Escolher uma estratégia de implantação do ClickOnce Choose a ClickOnce deployment strategy
Proteger aplicativos ClickOnce Secure ClickOnce applications
Como o ClickOnce executa atualizações de aplicativos How ClickOnce performs application updates
Como: gerenciar atualizações para um aplicativo ClickOnceHow to: Manage updates for a ClickOnce application