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:
- Uninstall App A
- Install App B
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.
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.