作者:VB.NET开发
项目:System.Deployment.Applicatio
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