How to: Check for Application Updates Programmatically Using the ClickOnce Deployment API
ClickOnce provides two ways to update an application once it is deployed. In the first method, you can configure the ClickOnce deployment to check automatically for updates at certain intervals. In the second method, you can write code that uses theclass to check for updates based on an event, such as a user request.
The following procedures show some code for performing a programmatic update and also describe how to configure your ClickOnce deployment to enable programmatic update checks.
You can also use the technique described below to deploy your application from one location but update it from another. For more information, see.
To check for updates programmatically
Create a new Windows Forms application using your preferred command-line or visual tools.
Create whatever button, menu item, or other user interface item you want your users to select to check for updates. From that item's event handler, call the following method to check for and install updates.
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
Compile your application.
Using Mage.exe to deploy an application that checks for updates programmatically
Follow the instructions for deploying your application using Mage.exe as explained in http://www.adatum.com/MyApp, for example, your call to generate the deployment manifest might look like this:. When calling Mage.exe to generate the deployment manifest, make sure to use the command-line switch providerUrl, and to specify the URL where ClickOnce should check for updates. If your application will update from
mage -New Deployment -ToFile WindowsFormsApp1.application -Name "My App 1.0" -Version 188.8.131.52 -AppManifest 184.108.40.206\MyApp.manifest -providerUrl http://www.adatum.com/MyApp/MyApp.application
Using MageUI.exe to deploy an application that checks for updates programmatically
Follow the instructions for deploying your application using Mage.exe as explained in. On the Deployment Options tab, set the Start Location field to the application manifest ClickOnce should check for updates. On the Update Options tab, clear the This application should check for updates check box.
Your application must have full-trust permissions to use programmatic updating.