ApplicationDeployment.CheckForUpdateAsync Method
Checks UpdateLocation asynchronously to determine whether a new update is available.
Assembly: System.Deployment (in System.Deployment.dll)
| Exception | Condition |
|---|---|
| InvalidOperationException | ClickOnce throws this exception immediately if you call the CheckForUpdateAsync method while an update is already in progress. |
| DeploymentDownloadException | The deployment manifest cannot be downloaded. This exception appears in the Error property of the CheckForUpdateCompleted event. |
| InvalidDeploymentException | The deployment manifest is corrupted. You will likely need to redeploy the application to fix this problem. This exception appears in the Error property of the CheckForUpdateCompleted event. |
CheckForUpdateAsync returns immediately and starts a separate thread for downloading the updated application. When the method completes or is canceled, it raises the CheckForUpdateCompleted event. You can use AsyncCompletedEventArgs in this event handler to determine whether the operation was canceled, or if an exception was raised during update.
You can cancel an asynchronous update by calling CheckForUpdateAsyncCancel.
Note: |
|---|
If CheckForUpdate discovers that an update is available, and the user chooses not to install it, ClickOnce will prompt the user that an update is available the next time the application is run. There is no way to disable this prompting. (If the application is a required update, ClickOnce will install it without prompting.) |
The following example checks for an update asynchronously, and installs the update if one exists.
Private sizeOfUpdate As Long = 0 Dim WithEvents ADUpdateAsync As ApplicationDeployment Private Sub UpdateApplication() If (ApplicationDeployment.IsNetworkDeployed) Then ADUpdateAsync = ApplicationDeployment.CurrentDeployment ADUpdateAsync.CheckForUpdateAsync() End If End Sub Private Sub ADUpdateAsync_CheckForUpdateProgressChanged(ByVal sender As Object, ByVal e As DeploymentProgressChangedEventArgs) Handles ADUpdateAsync.CheckForUpdateProgressChanged DownloadStatus.Text = [String].Format("{0:D}K of {1:D}K downloaded.", e.BytesCompleted / 1024, e.BytesTotal / 1024) End Sub Private Sub ADUpdateAsync_CheckForUpdateCompleted(ByVal sender As Object, ByVal e As CheckForUpdateCompletedEventArgs) Handles ADUpdateAsync.CheckForUpdateCompleted If (e.Error IsNot Nothing) Then MessageBox.Show(("ERROR: Could not retrieve new version of the application. Reason: " + ControlChars.Lf + e.Error.Message + ControlChars.Lf + "Please report this error to the system administrator.")) Return Else If (e.Cancelled = True) Then MessageBox.Show("The update was cancelled.") End If End If ' Ask the user if they would like to update the application now. If (e.UpdateAvailable) Then sizeOfUpdate = e.UpdateSizeBytes If (Not e.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 (System.Windows.Forms.DialogResult.OK = dr) Then BeginUpdate() End If Else MessageBox.Show("A mandatory update is available for your application. We will install the update now, after which we will save all of your in-progress data and restart your application.") BeginUpdate() End If End If End Sub Private Sub BeginUpdate() ADUpdateAsync = ApplicationDeployment.CurrentDeployment ADUpdateAsync.UpdateAsync() End Sub Private Sub ADUpdateAsync_UpdateProgressChanged(ByVal sender As Object, ByVal e As DeploymentProgressChangedEventArgs) Handles ADUpdateAsync.UpdateProgressChanged Dim progressText As String = String.Format("{0:D}K out of {1:D}K downloaded - {2:D}% complete", e.BytesCompleted / 1024, e.BytesTotal / 1024, e.ProgressPercentage) DownloadStatus.Text = progressText End Sub Private Sub ADUpdateAsync_UpdateCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs) Handles ADUpdateAsync.UpdateCompleted If (e.Cancelled) Then MessageBox.Show("The update of the application's latest version was cancelled.") Exit Sub Else If (e.Error IsNot Nothing) Then MessageBox.Show("ERROR: Could not install the latest version of the application. Reason: " + ControlChars.Lf + e.Error.Message + ControlChars.Lf + "Please report this error to the system administrator.") Exit Sub End If End If Dim dr As DialogResult = MessageBox.Show("The application has been updated. Restart? (If you do not restart now, the new version will not take effect until after you quit and launch the application again.)", "Restart Application", MessageBoxButtons.OKCancel) If (dr = System.Windows.Forms.DialogResult.OK) Then Application.Restart() End If End Sub
- PermissionSet
For full access to the local computer. Associated enumeration: PermissionState.
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Note: