„MSIX App Attach“ und „App Attach“ sind Technologien, welche in Azure Virtual Desktop ein dynamisches Bereitstellen von Anwendungen ermöglichen, ohne dass diese Apps direkt auf den Sitzungshosts installiert sein müssen. Stattdessen werden die vorab in Form von VHDs- oder Containern (CIM) paketierten Anwendungen erst beim Anmelden eines Benutzers an seiner Desktop-Sitzung von einer dafür vorgesehenen Dateifreigabe – diese kann von einem Azure-VM basierten Windows Scaleout Fileserver, einem lokalen Fileserver oder optimalerweise eines Azure-Files-Dateifreigabe bereitgestellt sein – dynamisch an dessen Sitzung angefügt.
Es gibt aber Unterschiede zwischen „MSIX App Attach“ und „App Attach“, welche Letzteres zur bevorzugten Lösung machen. Zudem zeigen ich in einem kurzen „Quick-Dirty-Workshop“, wie Sie App Attach bereitstellen.
MSIX App Attach wurde bereits 2020 eingeführt und ist seit April 2021 allgemein verfügbar (GA). Es basiert wie der Name schon vermuten lässt auf dem MSIX-Paketformat und ermöglicht das dynamische Anfügen von Anwendungen an Benutzersitzungen in Azure Virtual Desktop (AVD), ohne dass die Apps im Basis-Image installiert werden müssen.
Die neue Variante von „App Attach“ (oft auch als „App Attach (Preview)“ bezeichnet) wurde erst jüngst eingeführt und befindet sich derzeit noch in der Vorschau (Preview). Sie bringt jedoch ergebliche Verbesserungen gegenüber MSIX App Attach, insbesondere:
-
- Granularere Zuweisung von Anwendungen pro Benutzer und pro App.
- Mehrere Versionen derselben App können gleichzeitig auf einem Sitzungshost laufen.
- Kein Wartungsfenster für Updates notwendig.
- Bessere Telemetrie über Azure Log Analytics.
- Ein App-Paket für mehrere Hostpools verwendbar.
- Unterstützung mehrere PPaket-Formate, neben MSIX auch MSIXBundle, Appx, AppxBundle, App-V
Folgende Tabelle kann zur Orientierung dienen:
| Funktion | MSIX App Attach (etabliert) | App Attach (Preview / neu | ||||||
| App-Zuweisung | Pro Anwendungsgruppe – alle Benutzer sehen alle Apps | Granulare Zuweisung pro Benutzer und App | ||||||
| Hostpool-Nutzung | Ein App-Paket ist an einen Hostpool gebunden | Ein App-Paket kann in mehreren Hostpools verwendet werden | ||||||
| App-Updates | App muss entfernt und neu erstellt werden (Wartungsfenster nötig) | Neue Versionen können ohne Downtime bereitgestellt werden | ||||||
| Mehrere App-Versionen | Nur eine Version pro Sitzungshost möglich | Mehrere Versionen gleichzeitig auf demselben Host möglich | ||||||
| Telemetry & Monitoring | Keine integrierte Telemetrie | Integration mit Azure Log Analytics für detailliertes Monitoring | ||||||
| Unterstützte Paketformate | MSIX | MSIX, MSIXBundle, Appx, AppxBundle, App-V | ||||||
| Verfügbarkeit | Allgemein verfügbar (GA seit April 2021) | In der Vorschau (Preview) | ||||||
| Verwaltung & Automatisierung | Verwaltung über PowerShell und REST APIs | Verbesserte Verwaltung, neue APIs und Portal-Integration | ||||||
VHD versus CIM
Die speicher-seitige Bereitstellung der „containerisierten“ Apps (der eigentliche Container, welcher die App mit ihren Abhängigkeiten bündelt ist das MSIX- oder App-V-Paket) kann bei MSIX App Attach und Attach in Form einer VHD-Datei oder im CIM-Format (Composite Image) erfolgen. Letzteres bietet gegenüber VHD/VHDX bei der Nutzung von MSIX App Attach in Azure Virtual Desktop (AVD) einige klare Vorteile, welche folgende Tabelle zusammenfasst und ist auch die vom Microsoft empfohlene Methode.
Der Hauptvorteil ist aber aus meiner Sicht, dass Sie bei der Auswahl der CPU zum Bereitstellen der Azure-VM, die Sie als „Paketbau“-Maschine nutzen möchten nicht drauf achten müssen, dass der CPU-Typ „Nested Virtualization“ unterstützt, z. B. „Standard_D2s_v5“, denn gerade bei einem Client-OS wie „Windows 11 Multi Session“ ist VHD nicht die bevorzugte Methode, da CIM effizienter ist. Wer trotzdem mit einer VHD als Ziel-Plattform arbeiten möchte, muss in der „Packager“-VM dann Hyper-V aktivieren, z. B. mit:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-A
Zudem bietet CIM bessere Performance, schnellere Mount-/Unmount-Zeiten, und hat einen geringerer Ressourcenverbrauch. Auch ist die Erstellung an sich einfacher, weil der zugehörige Prozess mit dem Tool msixmgr.exe deutlich effizienter ist. CIM ist auch zukunftssicher, weil Microsoft CIM als bevorzugtes Format für App Attach empfiehlt. Hier noch mal alle Vorteile/Unterschiede in tabellarischer Form:
| Kriterium | VHD/VHDX | CIM (Composite Image Format) |
| Dateiformat | Einzelne Datei (VHD oder VHDX) | Mehrere Dateien in einem Ordner (Containerstruktur) |
| Performance (Mount) | Langsameres Mounting (z. B. 356 ms bei 500 Dateien) | Schnelleres Mounting (z. B. 255 ms bei 500 Dateien) |
| Unmount-Zeit | Langsam (z. B. 1615 ms) | Sehr schnell (z. B. 36 ms) |
| CPU-Auslastung | Höher, mit Lastspitzen | Gering, keine signifikanten Lastspitzen |
| RAM-Verbrauch | Höher (z. B. 6 % von 8 GB) | Geringer (z. B. 2 % von 8 GB) |
| Kompatibilität | Breite Unterstützung, auch für ältere Systeme | Muss auf gleichem oder älterem Windows erstellt werden als Zielsystem |
| Erstellung | Aufwändiger: VHD manuell erstellen, mounten, MSIX extrahieren, dismounten | Einfacher: MSIXMGR automatisiert den Prozess |
| Nested Virtualization nötig? | **Ja**, wenn du VHD/VHDX lokal erstellen willst (z. B. in einer Azure-VM) | **Nein**, da CIM keine gemountete virtuelle Festplatte benötigt |
| Empfehlung Microsoft | VHD **nicht empfohlen**, VHDX als Alternative | **CIM empfohlen**, besonders für Windows 11 und moderne AVD-Umgebungen |
CIM-Workshop
Im Folgenden zeige ich den gesamten Workflow in sehr komprimierter Form, sozusagen „Quick & Dirty“. Für mein Beispiel verwende ich ein Identitätsszenario mit hybriden Benutzerkonten (ADDS + Entra ID), Entra ID – ge-join-ten Session-Hosts mit Windows 11 Multisession sowie einem Azure Speicherkonto mit Dateifreigaben und identitätsbasierter Authentifizierung mittels Entra Kerberos. Dieses ist bereits soweit konfiguriert, weil es ebenfalls als Speicherlösung für Benutzerprofile mittels FSLogix dient. Die zugehörige Konfiguration hier noch einmal aufzurollen, sprengt den Rahmen des Beitrages und wurde zudem bereits hier im Blog besprochen. Die folgenden Schritte umfassen Maßnahmen am „Packer-Host“, am Session-Host, an der AVD Control Plane sowie am Storage Account.
Voraussetzungen
- Azure Subscription mit AVD und Entra ID
- Session Hosts: Windows 10/11 Multisession, Entra-Joined
- FSLogix mit Azure Files und Entra Kerberos bereits eingerichtet
- Intune verfügbar zur Geräteverwaltung
- MSIX Packaging Tool und MSIXMGR heruntergeladen
Teil 1: Paketierung der Anwendung
Packager-VM vorbereiten
- Azure VM mit Windows 11 Multisession erstellen
- MSIX Packaging Tool aus dem Microsoft Store installieren
- Ziel-App (z. B. XML Notepad) herunterladen und in einen temporären Ordner legen
- Zertifikat erstellen und exportierenNew-SelfSignedCertificate -Type Custom -KeyUsage DigitalSignature `
-CertStoreLocation „Cert:\CurrentUser\My“ `
-Subject „CN=AppAttachTest“ `
-FriendlyName „AppAttach Test Cert“
Achtung: Selbstsigniertes Zertifikat ist für Tests geeignet, aber:
- Muss auf jedem Session Host manuell oder automatisiert als vertrauenswürdig installiert werden
- Für produktive Nutzung wird ein Zertifikat von einer vertrauenswürdigen CA empfohlen
Das Zertifikat muss dann als PFX-Datei exportiert werden, um es a) im folgenden Schritt im Verlauf der Paketierung im MSIX Packaging Tool signieren zu können und um es b) auf den Ziel-Session-Hosts installieren zu können.
Export-PfxCertificate -Cert „Cert:\CurrentUser\My\<Thumbprint>“ `
-FilePath „C:\AppAttachCert.pfx“ `
-Password (ConvertTo-SecureString „YourPassword“ -AsPlainText -Force)
MSIX-Paket erstellen
- MSIX Packaging Tool starten
- App installieren und Paket erstellen
- Paket mit dem Zertifikat signieren
- Paket in Arbeitsordner kopieren

CIM-Paket generieren
Wurde das Tool „msixmgr.exe“ von Microsoft heruntergeladen starten Sie als als Administrator in einer Eingabeaufforderung (CMD)
msixmgr.exe -Unpack -packagePath „C:\Pfad\zur\App.msix“ `
-destination „C:\Pfad\zur\CIM-Ausgabe“ `
-applyACLs -create -fileType cim -rootDirectory apps
Ergebnis: Ordner mit mehreren Dateien ( .cim, objectid_…, region_.), der als CIM-Paket bezeichnet wird.
Teil 2: Zertifikat auf Session Hosts verteilen
Option 1: Manuell (für Tests): Manuell per PS
Import-PfxCertificate -CertStoreLocation „Cert:\LocalMachine\TrustedPeople“ `
-FilePath „C:\AppAttachCert.pfx“ `
-Password (ConvertTo-SecureString „YourPassword“ -AsPlainText -Force)
Option 2: Automatisiert
Mit Intune (empfohlen)
- Trusted Certificate Profil erstellen
- Ziel: Gerätegruppe mit Session Hosts
- Zertifikat im .cer Format hochladen [learn.microsoft.com]
Mit PowerShell (Remote)
- Skript via Intune oder Remote-Session ausführen
- Alternativ: Deployment via GPO oder DSC
Teil 3: Azure Ressourcen vorbereiten
- Storage Account (falls nicht vorhanden)
- Dateifreigabe für App Attach (neuer Ordner im FSLogix-Storage)
- Entra Kerberos: In diesem Szenario bereits eingerichtet für FSLogix, wird daher wiederverwendet
- RBAC:
- Reader und Storage File Data SMB Share Elevated Contributor für Session Hosts
- Admin Consent für Dienstprinzipal des Storage Accounts
Teil 4: App Attach im Azure Control Plane
4.1 App Attach Paket registrieren
- Azure Portal → Azure Virtual Desktop → App Attach → + Create
- Speicherort: Storage Account + Dateifreigabe
- Paket: .cim Datei auswählen
- Registrierungstyp: On-demand oder Logon
- Status: Active
4.2 App zuweisen
- Host Pool auswählen
- Benutzer oder Gruppen zuweisen (Hybrid-Identitäten empfohlen)
4.3 App in Anwendungsgruppe einfügen
- RemoteApp-Gruppe → + Add Application
- Quelle: App Attach
- App auswählen, Icon konfigurieren
- Workspace zuweisen
Zertifikate verteilen
Falls Sie ein selbstsigniertes Zertifikat erstellt haben, exportieren Sie es als .CER:
$cert = Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object { $_.Subject -like „*AppAttachTest*“ }
Export-Certificate -Cert $cert -FilePath „C:\AppAttachCert.cer“
