ConfigMgr Application Update with Restart in between

When updating Applications to a newer Version in ConfigMgr, you often need to deal with Restarts after a successful Installation. This is mostly handled completely automatically by the Installer terminating with a common exit code (e.g. 3010), which is telling the ConfigMgr Client to prompt for a Restart.

A few days ago, I needed to update an Application to a newer Version, however with a mandatory Restart after the Uninstallation of the old Application. The complete Update Process was as followed:

  1. Uninstall App A
  2. Restart
  3. Install App B
  4. Restart

For the sake of this blog post, I created two Dummy Applications, which are called App A and App B. Both Applications have an Installer and an Uninstaller, that terminates with an exit code 3010. This pretty much reflects the real Situation that I had.

Important: This will only work if the Deployment Purpose for both Apps are set to Required and not Available!

So, let’s have a look at the Deployment Type of both Applications

Additionally, on App B there is a Supersedence configured, that forces an Uninstallation of App A.

Now, let’s see what happens on a PC where App A is already installed and App B is being deployed.  While monitoring AppEnforce.log, we can see the following:

App A was successfully uninstalled and terminated with an exit code 3010. However, the ConfigMgr Client ignores the PendingSoftReboot here and just continues with the Installation of App B. The Installer of App B also terminates with an Exit Code 3010, which finally triggers a Restart Notification in Software Center.

Kudos to my Lab, this all happened within one second 🙂

So, the expected result here wasn’t really what I thought it would be. To get our additional Restart in the Update Process, we need to Modify the Return Code Table of App A.

Below you see the unmodified Return Codes table that you get when creating a new Deployment Type. As we saw in AppEnforce.log, the common exit code 3010 means Soft Reboot.

For this to work, we need to change the Code type from Soft Reboot to Hard Reboot.

With this configured, we can run the same Test again as above.

Now, the Update Process will stop after the Uninstallation of App A with a PendingHardReboot instead of a PendingSoftReboot. Software Center will now prompt the User to perform a Reboot.

Additionally, Software Center will now show the Status “Waiting for restart before completing changes”.

After the Restart, the ConfigMgr Client will continue with the Installation of App B.

The Installer of App B will now terminate with a PendingSoftReboot as before, which will trigger again a Restart Notification in Software Center.

5/5 - (1 vote)

8 Comments

  1. dj3094 27. March 2019
  2. Bill 15. April 2019
  3. Basti 8. August 2022
  4. Sebastian 9. August 2022
    • mm Simon Dettling 16. August 2022
  5. Oleg 13. December 2022
  6. mm Simon Dettling 21. December 2022
  7. Thomas 21. March 2023

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.