By default, ClickOnce provides two ways to update the application after installed in the client.
- Check everytime when the customization runs
- Check at regular intevals
With the above, the user has to wait till it completes checking for the updates every time when the customization is loaded or at some time interval. It will be a waste of time for the users if application does not update builds frequently.
How it would be if we provide a button for checking for updates when the user wish to do?
Hmm… Do you think that this is a headache process and hard to implement?
Here are the quick and simple steps to do this.
- Create a Windows Forms Application
- Place a button and call the following code. (It will check for updates and install them for you when the button is clicked)
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
Now say, Ain’t this cool? 🙂
Hope this helps!