Como: verificar se há atualizações do aplicativo programaticamente usando a API de implantação de ClickOnce
ClickOnce fornece duas maneiras para atualizar um aplicativo quando ele é implantado.O primeiro método, você pode configurar a implantação de ClickOnce para verificar automaticamente as atualizações em determinados intervalos.O segundo método, você pode escrever código que usa o ApplicationDeployment classe para verificar se há atualizações com base em um evento, como, por exemplo, uma solicitação do usuário.
Os procedimentos a seguir mostram alguns códigos para executar uma atualização através de programação e também descrevem como configurar a implantação de ClickOnce para ativar as verificações de atualização através de programação.
Para atualizar um aplicativo ClickOnce programaticamente, você deve especificar um local para atualizações.Às vezes, isso é conhecido como um provedor de implantação.Para obter mais informações sobre a definição dessa propriedade, consulte Escolhendo uma estratégia de atualização de ClickOnce.
Observação |
---|
Você também pode usar a técnica descrita abaixo para implantar seu aplicativo em um único local mas atualizá-lo a partir de outro.Para obter mais informações, consulte Como: especificar um local alternativo para implantação de atualizações. |
Para verificar atualizações programaticamente
Crie um novo aplicativo do Windows Forms usando suas ferramentas de linha de comando ou visual preferenciais.
Criar qualquer botão, o item de menu ou outro item de interface de usuário você deseja que os usuários selecionem para verificar se há atualizações.A partir do manipulador de eventos do item, chame o método a seguir para verificar e instalar atualizações.
Private Sub InstallUpdateSyncWithInfo() Dim info As UpdateCheckInfo = Nothing If (ApplicationDeployment.IsNetworkDeployed) Then Dim AD As ApplicationDeployment = ApplicationDeployment.CurrentDeployment Try info = AD.CheckForDetailedUpdate() Catch dde As DeploymentDownloadException MessageBox.Show("The new version of the application cannot be downloaded at this time. " + ControlChars.Lf & ControlChars.Lf & "Please check your network connection, or try again later. Error: " + dde.Message) Return Catch ioe As InvalidOperationException MessageBox.Show("This application cannot be updated. It is likely not a ClickOnce application. Error: " & ioe.Message) Return End Try If (info.UpdateAvailable) Then Dim doUpdate As Boolean = True If (Not info.IsUpdateRequired) Then Dim dr As DialogResult = MessageBox.Show("An update is available. Would you like to update the application now?", "Update Available", MessageBoxButtons.OKCancel) If (Not System.Windows.Forms.DialogResult.OK = dr) Then doUpdate = False End If Else ' Display a message that the app MUST reboot. Display the minimum required version. MessageBox.Show("This application has detected a mandatory update from your current " & _ "version to version " & info.MinimumRequiredVersion.ToString() & _ ". The application will now install the update and restart.", _ "Update Available", MessageBoxButtons.OK, _ MessageBoxIcon.Information) End If If (doUpdate) Then Try AD.Update() MessageBox.Show("The application has been upgraded, and will now restart.") Application.Restart() Catch dde As DeploymentDownloadException MessageBox.Show("Cannot install the latest version of the application. " & ControlChars.Lf & ControlChars.Lf & "Please check your network connection, or try again later.") Return End Try End If End If End If End Sub
private void InstallUpdateSyncWithInfo() { UpdateCheckInfo info = null; if (ApplicationDeployment.IsNetworkDeployed) { ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment; try { info = ad.CheckForDetailedUpdate(); } catch (DeploymentDownloadException dde) { MessageBox.Show("The new version of the application cannot be downloaded at this time. \n\nPlease check your network connection, or try again later. Error: " + dde.Message); return; } catch (InvalidDeploymentException ide) { MessageBox.Show("Cannot check for a new version of the application. The ClickOnce deployment is corrupt. Please redeploy the application and try again. Error: " + ide.Message); return; } catch (InvalidOperationException ioe) { MessageBox.Show("This application cannot be updated. It is likely not a ClickOnce application. Error: " + ioe.Message); return; } if (info.UpdateAvailable) { Boolean doUpdate = true; if (!info.IsUpdateRequired) { DialogResult dr = MessageBox.Show("An update is available. Would you like to update the application now?", "Update Available", MessageBoxButtons.OKCancel); if (!(DialogResult.OK == dr)) { doUpdate = false; } } else { // Display a message that the app MUST reboot. Display the minimum required version. MessageBox.Show("This application has detected a mandatory update from your current " + "version to version " + info.MinimumRequiredVersion.ToString() + ". The application will now install the update and restart.", "Update Available", MessageBoxButtons.OK, MessageBoxIcon.Information); } if (doUpdate) { try { ad.Update(); MessageBox.Show("The application has been upgraded, and will now restart."); Application.Restart(); } catch (DeploymentDownloadException dde) { MessageBox.Show("Cannot install the latest version of the application. \n\nPlease check your network connection, or try again later. Error: " + dde); return; } } } } }
public: void InstallUpdateSync() { if (ApplicationDeployment::IsNetworkDeployed) { bool isUpdateAvailable = false; ApplicationDeployment^ appDeployment = ApplicationDeployment::CurrentDeployment; try { isUpdateAvailable = appDeployment->CheckForUpdate(); } catch (InvalidOperationException^ ex) { MessageBox::Show("The update check failed. Error: {0}", ex->Message); return; } if (isUpdateAvailable) { try { appDeployment->Update(); MessageBox::Show( "The application has been upgraded, and will now " + "restart."); Application::Restart(); } catch (Exception^ ex) { MessageBox::Show("The update failed. Error: {0}", ex->Message); return; } } } }
Compile seu aplicativo.
Usando o Mage para implantar um aplicativo que verifica se há atualizações programaticamente
Siga as instruções para implantar seu aplicativo usando o Mage conforme explicado na Passo a passo: Manualmente implantando um aplicativo de ClickOnce.Ao chamar Mage para gerar o manifesto de implantação, certifique-se de usar a opção de linha de comando providerUrle para especificar a URL onde ClickOnce deve verificar as atualizações.Se seu aplicativo irá atualizar a partir de http://www.adatum.com/MyApp, por exemplo, a sua chamada para gerar o manifesto de implantação pode parecer com isso:
mage -New Deployment -ToFile WindowsFormsApp1.application -Name "My App 1.0" -Version 1.0.0.0 -AppManifest 1.0.0.0\MyApp.manifest -providerUrl http://www.adatum.com/MyApp/MyApp.application
Usando o MageUI.exe para implantar um aplicativo que verifica se há atualizações programaticamente
- Siga as instruções para implantar seu aplicativo usando o Mage conforme explicado na Passo a passo: Manualmente implantando um aplicativo de ClickOnce.No Opções de implantação guia, defina a Local iniciar campo ao manifesto do aplicativo ClickOnce deve verificar as atualizações.Sobre o Opções de atualização guia, limpar o Este aplicativo deve verificar as atualizações caixa de seleção.
Segurança
Seu aplicativo deve ter permissões de confiança total para usar a atualização através de programação.
Consulte também
Tarefas
Como: especificar um local alternativo para implantação de atualizações