Eine automatische Ablösung einer Win32 App, welche mit avaiable intent auf (Benutzer-)Gruppen zugewiesen ist, ist derzeit leider nur auf Umwegen in Microsoft Intune erreichbar.

Microsoft Configuration Manager vs. Microsoft Intune

Vergebens sucht man in Intune eine vergleichbare Methode zum Konfigurationspunkt „Automatically upgrade any superseded version of this application” vom Configuration Manager. Dieser kleine Hacken ermöglicht es nämlich, eine Supersedence von Anwendungen auf den entsprechenden Geräten automatisch durchzuführen, welche zuvor per „Kiosk“ dem Benutzer zur Verfügung gestellt wurden.

ConfigMgr-Supersedence Deployment

Hintergründe: Das Verhalten von Supersedence kann hier nachgelesen werden:

Add Win32 app supersedence – | Microsoft Learn

Dynamische Guppen?

Es ist naheliegend eine Lösung auf Gruppen-Ebene zu suchen. Leider können Gruppen nur bedingt dynamisch agieren. Ein Einbinden eines PowerShell Skripts, welches auf Device-Ebene eruiert, ob eine Anwendung in einer bestimmen Version installiert ist, ist nicht möglich. Ein solches Skript ist jedoch im Bereich App Requirement möglich – mehr dazu siehe nächster Abschnitt.

App Requirements

Das Einbinden von (PowerShell-)Skripts ist in Bereich App Requirements möglich.

 

Das eröffnet folgende Möglichkeit für einen flächendeckend Rollout einer Anwendung mit definierter Supersedence:

Ablösung via App Requirements

Erstellt man zwei identische Pakete der neuen Version (inkl. Supersedence) in Intune.
-> 1st Package weiterhin assigned mit available intent auf der bestehenden Gruppe.
-> 2tes
Package (Doppel) mit required intent auf sämtlichen Devices. Dieses Paket wird nicht sichtbar sein im Company Portal da intent required und Zielgruppe Devices.

Im 2ten Paket wird nun per Requirement festgelegt, dass es nur dann installiert werden soll, wenn die alte Version installiert ist. Dies muss genau identifiziert werden können z.bsp über einen branding\maintanance key oder ähnliches.

Die Abfrage kann per Powershellskript hinterlegt werden. z.Bsp:

Teste ob alte Version installiert ist:

if(Test-Path 'HKLM:\\SOFTWARE\\myCompany\\Maintenance\\<pkgName>') {Write-Host 'The application is installed' Exit 0}

Das Paket kann nun auf „all Devices“ zugewiesen und ausgerollt werden. Es installiert nur, wenn das hinterlegte Skript ein $true liefert. Also nur dann, wenn die alte Anwendung installiert war.

Es ist und bleibt ein Workaround. Und benötigt deshalb strategische Entscheide über das Handling (cleanUp) der Doppel-Pakete im System.

Lösungsansätze

Es bleiben somit 3 Möglichkeiten für das Ablösen einer App via Supersedence, wenn diese mit available intent zur Verfügung gestellt wurde:

This Area is Widget-Ready

You can place here any widget you want!

You can also display any layout saved in Divi Library.

Let’s try with contact form: