MSIX APP ATTACH 2026 · AVD · CITRIX · HORIZON · INTUNE

MSIX App Attach
Production Engineering Guide

Packaging pipelines, strict mode enforcement, the "Pending" state fix that actually works, AppX vs MSIX decision matrix, and cross-platform delivery on AVD, Citrix CVAD, and Omnissa Horizon.

Fundamentals

MSIX vs AppX — What's the Actual Difference?

These two packaging formats cause constant confusion. Here's the ground truth for VDI environments in 2026.

PropertyAppXMSIXVDI Recommendation
File extension.appx / .appxbundle.msix / .msixbundleUse MSIX for all new packaging
IntroducedWindows 8 / 2012Windows 10 1709
Modification supportLimitedFull (modification packages)MSIX modification packages let you layer config on top of base packages
App Attach compatibleLegacy support onlyFull supportMSIX App Attach is the official name; AppX is old
Container formatZIP-basedZIP-based (same)Can rename .appx → .msix if package manifest is compatible
Signing requirementRequired for sideloadRequired (strict mode enforces)Sign with internal CA or trusted publisher cert
Intune deploymentSupported (Win32)Native MSIX app typeUse MSIX for Intune App Attach in AVD
VHD/CIM containerVHD onlyVHD, VHDX, or CIMUse CIM for AVD — faster mount, better SMB/Azure Files performance
Use CIM (Composite Image) format for MSIX App Attach on Azure Virtual Desktop. CIM mounts faster than VHDX, dramatically reduces I/O on Azure Files Premium shares, and is the recommended format as of 2024+.
Packaging

MSIX Packaging Pipeline — Production Method

The packaging workflow that consistently produces clean, deployment-ready MSIX packages across Horizon, AVD, and Citrix environments.

STEP 1
Build a Clean Packaging VM
  • Fresh Windows 11 22H2+ or Server 2022 VM
  • Match target OS version exactly — package and destination OS must match
  • No AV, no GPO, no domain join during packaging
  • Snapshot before each packaging session — revert after
  • Install MSIX Packaging Tool from Microsoft Store
Never package on a production or domain-joined machine. GPO artifacts contaminate packages and cause deployment failures.
STEP 2
Run MSIX Packaging Tool
  • Launch tool with admin rights
  • Select "Application package" → installer type
  • Set Publisher: must match signing cert CN exactly
  • Capture install — run installer, perform first-run config
  • Review exclusions list: remove HKCU keys, temp files, user-specific data
  • Generate .msix file
STEP 3
Sign the Package
Sign with internal CA cert (PowerShell)
# Sign MSIX with code signing cert SignTool.exe sign ` /fd SHA256 ` /a ` /f "C:\Certs\CodeSign.pfx" ` /p "YourPassword" ` /tr http://timestamp.digicert.com ` /td SHA256 ` "C:\Packages\App.msix" # Verify signature Get-AuthenticodeSignature "App.msix" | Select Status, SignerCertificate
STEP 4
Create VHD/CIM Container
Create CIM container (preferred for AVD)
# Create VHDX then convert to CIM New-VHD -Path "App.vhdx" -SizeBytes 500MB ` -Dynamic -BlockSizeBytes 1MB Mount-VHD -Path "App.vhdx" # Initialize, format NTFS, copy .msix to root # Unmount, then convert to CIM: cimfs.exe /create "App.cim" ` /imagepath "App.vhdx" /index 1
Store CIM/VHDX on Azure Files Premium (AVD) or SMB share (Horizon/Citrix). Use dedicated share with restricted write access.
Critical Fix

Fixing the "Pending" State — The Real Cause

The #1 complaint with MSIX App Attach. Apps stuck in "Pending" during logon. Here are the actual root causes and fixes — not the generic advice you've already tried.

Cause 1: Package Not Registered at Logon

The MSIX package container (VHD/CIM) isn't mounted before the user session starts. This is the most common cause — the App Attach service assigns packages but registration fails silently.

Fix

Verify the AppAttachStaging task completed before session logon. Check Event Viewer → Application and Services → Microsoft → Windows → AppXDeployment-Server. Error 0x80073CF0 = package not staged. Check share permissions — COMPUTER ACCOUNT needs read access to the MSIX share.

Cause 2: Certificate Trust Failure

The signing certificate is not in the session host's Trusted Root or Trusted People store. Windows silently blocks registration with no visible error to the user.

Fix

Deploy signing certificate to Trusted Root Certification Authorities via GPO to all session hosts. If self-signed: also add to Trusted People store. Verify with: certmgr.msc on the session host.

Cause 3: Package Version Mismatch

The same package with a different version is already registered for this user from a previous session (common in non-persistent pools). MSIX won't register a new version over an existing one without deregistering first.

Fix

For non-persistent pools: ensure packages are fully deregistered at logoff. Check App Attach deregistration script fires on session disconnect (not just logoff). Use Get-AppxPackage -AllUsers | Where-Object Name -like "*AppName*" to inspect stale registrations.

Cause 4: Strict Mode + Unsigned Package

Strict mode rejects unsigned or untrusted-signed packages at registration time. Error code: 0x80073CF3. Often the package was signed in QA but the cert wasn't propagated to prod session hosts.

Fix

Run Get-AuthenticodeSignature "App.msix" — status must be Valid. If "NotSigned" or "UnknownError", re-sign the package. Check if cert has expired. Check cert EKU includes Code Signing (1.3.6.1.5.5.7.3.3).

Diagnostic command: On the session host: Get-AppxPackage -AllUsers | Where-Object Name -like "*<AppName>*" | Select Name,Version,PackageUserInformation — shows registration status per user. PackageUserInformation showing "Pending" confirms registration is blocked, not a display glitch.
Cross-Platform

MSIX App Attach: AVD vs Citrix vs Horizon

FeatureAzure Virtual DesktopCitrix CVADOmnissa Horizon
Native App Attach✓ Built-in (Azure Portal)Via App Layering or manualVia App Volumes 2512+
Container formatCIM (preferred), VHDX, VHDVHD, VHDXMSIX via App Volumes 2512.4
Storage backendAzure Files Premium, Azure NetApp FilesSMB shares (DFS, NetApp, Pure)SMB share, cloud storage
Strict mode enforcementPolicy: AllowAllTrustedApps = disabledVia Citrix AppLayering policyVia App Volumes ALM settings
Intune integration✓ Native (recommended)Limited (Endpoint Manager only)Not native
Per-user or machinePer-user (App Attach) or machine (Intune)Machine-level (layers)Per-user (App Volumes)
Teams / O365 support✗ NOT recommended via MSIX✗ Use native install✗ Use native install
Never package Microsoft Teams or OneDrive as MSIX for VDI delivery. Both require machine-wide installation with specific VDI optimization modes. Teams New client (2.1+) needs WebView2 and has its own VDI deployment path. Packaging these as MSIX produces broken experiences.
Security

Enabling Strict Mode on Session Hosts

Strict mode prevents unsigned or untrusted packages from registering. Essential for regulated environments and production AVD deployments.

PowerShell — enforce strict mode via registry (all session hosts)
# Enforce strict MSIX package signing policy Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Appx" ` -Name "AllowAllTrustedApps" -Value 0 -Type DWord # Disable sideloading (non-Store, non-signed packages) Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Appx" ` -Name "AllowDevelopmentWithoutDevLicense" -Value 0 -Type DWord # Verify App Attach service is running Get-Service -Name AppReadiness | Select Status # Check registered packages for current user Get-AppxPackage -AllUsers | Where-Object {$_.PackageFullName -like "*AppName*"} | Select Name, Version, @{N='Users';E={$_.PackageUserInformation}}
GPO path for strict mode enforcement
# GPO Path: # Computer Config → Admin Templates → Windows Components # → App Package Deployment "Allow all trusted apps to install" = Disabled "Allow development of Windows Store apps" = Disabled "Prevent non-admin users from installing packaged apps" = Enabled
← Back to VDI Guy Home