„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
Das MSIX-Packaging-Tool kann aus dem Windows-Store installiert werden.
Das MSIX-Packaging-Tool kann aus dem Windows-Store installiert werden.

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

  1. Storage Account (falls nicht vorhanden)
  2. Dateifreigabe für App Attach (neuer Ordner im FSLogix-Storage)
  3. Entra Kerberos: In diesem Szenario bereits eingerichtet für FSLogix, wird daher wiederverwendet
  4. 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“

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.