Supersedence ist eine neue Funktion von ConfigMgr 2012, die es ermöglicht, eine Application durch eine andere / neuere zu ersetzen. An sich ein sehr brauchbares und praktisches Feature. An einem praktischen Beispiel will ich aber zeigen, dass dies auch mit einer gewissen “Gefahr” verbunden ist.
Gehen wir von einer Application aus – in meinem Beispiel irfanView 4.35. Diese beinhaltet einen einzigen Deployment Type (DT) und ist auf alle meine Win7/8-Testlab-Rechner optional (available) verteilt. Auf manchen Rechnern wurde die Software bereits installiert, auf anderen nicht.
Application in der ConfigMgr Console inkl. Deployment (purpose: available):
Auf einem Testclient wurde die Application bereits installiert, wie im Software Center zu sehen:
Bis hier läuft also alles nach Plan.
Mittlerweile ist aber eine neue Version der Application erschienen. irfanView 4.37 in meinem Beispiel.
Diese wird dann in ConfigMgr angelegt (als Beispiel wieder mit einem DT, wobei die Art und Anzahl der DTs keine Rolle spielt) und eine Supersedence-Beziehung eingerichtet.
Diese Supersedence-Information ist in der Admin Console auch grafisch darstellbar:
Was passiert jetzt auf dem Client? Erst einmal nichts ungewöhnliches, nämlich nichts. Klar, denn ohne Deployment für irfanView 4.37 “weiß” der Client nicht, dass die Applikation von 4.35 auf 4.37 zu aktualisieren ist. Das macht auch Sinn, denn sonst würde man ja die Application automatisch ausrollen / aktualisieren, ohne dass Tests möglich wären.
Folgendes Szenario: auf 90% aller Clients ist irfanView 4.35 vorhanden, es laufen erste Tests für den Aktualisierung auf irfanView 4.37 (mittels eine Deployments von irfanView 4.37 auf eine Anzahl X von Testrechnern).
Jetzt wird entschieden, dass irfanView 4.37 ab sofort für alle Neuinstallationen verwendet werden soll. Also wird irfanView 4.37 zu einer OSD-Tasksequenz hinzugefügt:
Diese Task Sequence ist auf “All System” deployed (ich weiß, das sollte man nicht unbedingt tun! Für Testzwecke ist dies aber durchaus ok. Außerdem kann das beschriebene Szenario auch passieren, wenn eine andere Collection als “All Systems” im Spiel ist; nur sind dann halt weniger Rechner betroffen), aber nur für Boot-Medien und PXE verfügbar (d.h. sie wird nicht im laufenden Betriebssystem im Software Center angezeigt):
Was passiert nun, nachdem ein Client das nächste mal Policies abfragt?
Entering ExecQueryAsync for query “select * from CCM_AppDeliveryType where (AppDeliveryTypeId = “ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_4e6b2c21-dcba-471a-85b7-a49c7737fb5c” AND Revision = 3)” AppDiscovery
Performing detection of app deployment type irfanView 4.35 (exe)(ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_4e6b2c21-dcba-471a-85b7-a49c7737fb5c, revision 3) for system. AppDiscovery
+++ Discovered application [AppDT Id: ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_4e6b2c21-dcba-471a-85b7-a49c7737fb5c, Revision: 3] AppDiscovery
+++ Detected app deployment type irfanView 4.35 (exe)(ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_4e6b2c21-dcba-471a-85b7-a49c7737fb5c, revision 3) for system. AppDiscovery
Entering ExecQueryAsync for query “select * from CCM_AppDeliveryType where (AppDeliveryTypeId = “ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_9a23e8a4-8109-4360-b5d5-4b84a454008f” AND Revision = 9)” AppDiscovery
Performing detection of app deployment type irfanView 4.37(ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_9a23e8a4-8109-4360-b5d5-4b84a454008f, revision 9) for system. AppDiscovery
+++ Application not discovered. [AppDT Id: ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_9a23e8a4-8109-4360-b5d5-4b84a454008f, Revision: 9] AppDiscovery
+++ Did not detect app deployment type irfanView 4.37(ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_9a23e8a4-8109-4360-b5d5-4b84a454008f, revision 9) for system. AppDiscovery
Auf einmal taucht im Logfile irfanView zum ersten Mal irfanView 4.37 auf. Und das ist der Moment, der für die Überraschung sorgt. Denn läuft nun der “Application Deployment Evaluation Cycle” (Evaluationszyklus für die Anwendungsbereitstellung – der per default alle 7 Tage automatisch läuft), dann wird tatsächlich irfanView 4.35 entfernt und durch irfanView 4.37 ersetzt:
+++ Starting Uninstall enforcement for App DT “irfanView 4.35 (exe)” ApplicationDeliveryType – ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_4e6b2c21-dcba-471a-85b7-a49c7737fb5c, Revision – 3, ContentPath – C:\WINDOWS\ccmcache\r, Execution Context – System AppEnforce
A user is logged on to the system. AppEnforce
Performing detection of app deployment type irfanView 4.35 (exe)(ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_4e6b2c21-dcba-471a-85b7-a49c7737fb5c, revision 3) for system. AppEnforce
+++ Discovered application [AppDT Id: ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_4e6b2c21-dcba-471a-85b7-a49c7737fb5c, Revision: 3] AppEnforce
[… hier passiert die Deinstallation von irfanView 4.35 …]
Performing detection of app deployment type irfanView 4.35 (exe)(ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_4e6b2c21-dcba-471a-85b7-a49c7737fb5c, revision 3) for system. AppEnforce
+++ Application not discovered. [AppDT Id: ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_4e6b2c21-dcba-471a-85b7-a49c7737fb5c, Revision: 3] AppEnforce
++++++ App enforcement completed (0 seconds) for App DT “irfanView 4.35 (exe)” [ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_4e6b2c21-dcba-471a-85b7-a49c7737fb5c], Revision: 3, User SID: ] ++++++ AppEnforce
+++ Starting Install enforcement for App DT “irfanView 4.37” ApplicationDeliveryType – ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_9a23e8a4-8109-4360-b5d5-4b84a454008f, Revision – 9, ContentPath – C:\WINDOWS\ccmcache\1, Execution Context – System AppEnforce
A user is logged on to the system. AppEnforce
Performing detection of app deployment type irfanView 4.37(ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_9a23e8a4-8109-4360-b5d5-4b84a454008f, revision 9) for system. AppEnforce
+++ Application not discovered. [AppDT Id: ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_9a23e8a4-8109-4360-b5d5-4b84a454008f, Revision: 9] AppEnforce
[… hier passiert die Installation von irfanView 4.37 …]
Performing detection of app deployment type irfanView 4.37(ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_9a23e8a4-8109-4360-b5d5-4b84a454008f, revision 9) for system. AppEnforce
+++ Discovered application [AppDT Id: ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_9a23e8a4-8109-4360-b5d5-4b84a454008f, Revision: 9] AppEnforce
++++++ App enforcement completed (2 seconds) for App DT “irfanView 4.37” [ScopeId_9CF7DEB9-6D21-4D41-B660-CC4E9ED87B1D/DeploymentType_9a23e8a4-8109-4360-b5d5-4b84a454008f], Revision: 9, User SID: ] ++++++ AppEnforce
Eigentlich ist dabei alles logisch. Allerdings muss man sich dessen erst einmal bewusst sein. Falls es also zu ungewünschten Effekten bei der Softwareverteilung kommt, so könnte eine OSD Task Sequenz in Verbindung mit Supersedence die Erklärung sein. Die neue Applikation taucht dann übrigens nicht mehr im Software Center auf.
“Disable this task sequence on computers where it is deployed” –> habe ich nicht getestet.
Hallo Torsten,
Wie sieht es aus wenn man die Option “Disable this task sequence on computers where it is deployed” aktiviert hat?
Läuft man dann auch in die von dir geschriebene Problematik?
Grüsse,
Simon
Der Eval-Cycle alleine ist auch nicht ausschlaggebend, denn ohne die “Kenntnis” (=Policy) die durch die TS kommt und irfanView 4.37 beinhaltet, würde hier nichts passieren.
Logisch ist das Verhalten in Bezug auf die OSD Tasksequenz absolut nicht. Der Rechner kennt die Aktualisierung der Tasksequenz nicht und sie würde ihn auch nicht interessieren, da er sie nicht ausführen muss und die in der Tasksequenz angekündigten Applikationen nichts mit den generellen Deployments zu tun haben. Hier ist alleine der Evaluationszyklus der Auslöser für das Update.