Consider the following scenario:
- I have previously deployed the application Foo v1.0 to all of my workstations.
- A new version of Foo 2.0 comes out and I need to upgrade everybody.
In this scenario, I have to create a new application package for Foo 2.0 and deploy that.
Assuming the installer takes care of an upgade vs. a new install on its own, what is the advantage of making Foo 2.0 supersede Foo 1.0, rather than just ignoring that feature and deleting the deployment for Foo 1.0?
What benefit does this get me?
I'm using SCCM 2012 R2 if that makes a difference.
I can think of three benefits of using supercedence.
Transparent Dependencies
Suppose you have a Deployment Type for Bar 1.0 that depends on Foo 1.0. If you supercede Foo 1.0 with Foo 2.0, then any deployment of Bar 1.0 will automatically install/upgrade to Foo 2.0.
(I haven't tested this rigorously, but I think that's how supercedence and dependencies are meant to work together.)
User-Selected Applications
If Foo 1.0 was deployed as "available" (as opposed to "required") supercedence will cause Foo 2.0 to be installed only on those computers where Foo 1.0 has already been installed. That way Foo 2.0 only gets installed where users have decided they needed Foo 1.0.
Atomic Uninstall/Install
In the case where you need to uninstall Foo 1.0 before Foo 2.0 is installed, supercedence ensures that CcmExec ensures that Foo 1.0 is uninstalled only immediately prior to installing Foo 2.0. That way if a user relies on Foo, you don't risk the user going with neither Foo 1.0 nor Foo 2.0 for very long.