You might have got a requirement to update the existing (deployed) office solution. If so, here are some key points related to signing certificates, that you need to keep in mind before doing this, which are suggested by msdn.
- Ensure that the solution is set up to provide the correct evidence for the security checks –
Use the Publish Wizard to publish the updated Office solution to the same directory as the previous version.
- If the old solution is signed with a trusted certificate, sign the updated solution with the same certificate. If the certificate has expired or cannot be reused, use a certificate that is trusted at the enterprise level.
- If the ClickOnce trust prompt was used for trust but the zone has been disabled, the solution will be disabled.
- If the signing key was changed, trust must be re-established by using the ClickOnce trust prompt, or the certificate must be trusted at the enterprise level. If the trust is pre-established, the first version will be uninstalled and the updated version will be installed.
- If the new certificate is trusted at the enterprise level, then the update takes place with no prompting.
- If the new certificate is not trusted, a trust prompt is displayed to the user, if the prompt is allowed.
The Office solution is published to a folder at the same directory level as the old solution, but with an incremented version number. The application and deployment manifests are replaced, so the user is automatically directed to the new version the next time the solution checks for updates.
Copy the solution files to the installation location, if it is different from the publish location. Keep the folders and files in the same relative positions.
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
Default update types in ClickOnce Deployment
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
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)
Catch ioe As InvalidOperationException
MessageBox.Show("This application cannot be updated. It is likely not a ClickOnce application." + _
"Error: " & ioe.Message)
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",
If (Not System.Windows.Forms.DialogResult.OK = dr) Then
doUpdate = False
' 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, _
If (doUpdate) Then
MessageBox.Show("The application has been upgraded, and will now 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.")
Now say, Ain’t this cool? 🙂
Hope this helps!