Como: Verificar atualizações aplicativo programaticamente usando a API de implantação do ClickOnce
ClickOnce fornece duas maneiras de atualização um aplicativo quando ele é implantado.O primeiro método, você pode configurar a implantação do ClickOnce para verificar automaticamente se há atualizações em determinados intervalos.No segundo método, você pode escrever código que usa o ApplicationDeployment classe para verificar se há atualizações com base em um evento, tal sistema autônomo uma solicitação do usuário.
Os procedimentos a seguir mostram um código para executar uma atualização através de programação e também descrevem como configurar sua implantação de ClickOnce para ativar as verificações de atualização através de programação.
Para atualização um aplicativo ClickOnce programaticamente, você deve especificar um local para atualização s.Isso às vezes é chamado sistema autônomo um provedor de implantação.Para obter mais informações sobre como definir essa propriedade, consulte Escolhendo uma estratégia de atualização do ClickOnce.
Observação: |
---|
Você também pode usar a técnica descrita abaixo para implantar seu aplicativo de um local, mas atualização-lo em outro.Para obter mais informações, consulte Como: Especifique um local alternativo para atualizações de implantação. |
Para verificar atualizações programaticamente
Crie um novo aplicativo Windows Forms usando suas ferramentas de linha de comando ou o visual preferenciais.
Criar qualquer botão, o item de menu, ou Outros item de interface do usuário que você deseja que seus usuários para selecionar para verificar se há atualizações.Do manipulador de eventos do item, chame o método seguinte 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; } } } }
compilar seu aplicativo.
Usando o Mage.exe para implantar um aplicativo que verifica se há atualizações programaticamente
Siga sistema autônomo instruções para implantar seu aplicativo usando o Mage.exe conforme explicado em Demonstra Passo a passo: Implantando um aplicativo ClickOnce manualmente. Ao chamar Mage.exe para gerar o manifesto de implantação, certifique-se de usar comutador de linha de comando providerUrle para especificar a URL onde ClickOnce deve verificar as atualizações. Se seu aplicativo será atualização de http://www.adatum.com/MyApp, por exemplo, sua telefonar 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 MageUI.exe para implantar um aplicativo que verifica se há atualizações programaticamente
- Siga sistema autônomo instruções para implantar seu aplicativo usando o Mage.exe conforme explicado em Demonstra Passo a passo: Implantando um aplicativo ClickOnce manualmente. Sobre o Opções de implantação guia, defina o Iniciar local campo para o manifesto do aplicativo ClickOnce deve verificar as atualizações.Sobre o Atualizar opções guia, desmarcar o Este aplicativo deve verificar se há atualizações a 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: Especifique um local alternativo para atualizações de implantação