export const intuneCoverage = { appType: 'Windows app (Win32)', publishingSteps: [ { id: 'source', title: 'Prepare source', summary: 'Place installers in Files and supporting content in SupportFiles, Assets, Config, or Strings as appropriate.' }, { id: 'commands', title: 'Program commands', summary: 'Use Invoke-AppDeployToolkit.exe for PSADT v4 packages; keep legacy Deploy-Application.exe only for v3 compatibility packages.' }, { id: 'requirements', title: 'Requirements', summary: 'Model architecture, minimum Windows version, disk needs, and 32-bit execution flags before upload.' }, { id: 'detection', title: 'Detection', summary: 'Choose MSI product code, file/version, registry, or custom PowerShell detection with clear installed/not-installed behavior.' }, { id: 'returns', title: 'Return codes', summary: 'Map PSADT and installer exit codes so Intune retries, succeeds, or requests reboot correctly.' }, { id: 'assignments', title: 'Assignments', summary: 'Publish to pilot, broad, and exclusion rings with intent and group notes.' }, { id: 'review', title: 'Review', summary: 'Confirm UI context, ServiceUI compatibility, Graph app id, logs, and package readiness.' } ], packaging: [ { area: 'Package source', guidance: 'Package the entire PSADT deployment folder with Microsoft Win32 Content Prep Tool so Invoke-AppDeployToolkit.exe sits at the content root for v4 packages.' }, { area: 'Files folder', guidance: 'Place application installers in Files; PSADT installer helpers resolve files relative to that folder.' }, { area: 'SupportFiles folder', guidance: 'Place helper scripts, transforms, configuration files, or content copied during post-install tasks in SupportFiles.' }, { area: 'Assets / Config / Strings', guidance: 'Use Assets for icons, Config for toolkit settings such as paths/UI behavior, and Strings for localized prompt text.' }, { area: 'Install command', guidance: 'PSADT v4: Invoke-AppDeployToolkit.exe -DeploymentType Install. Legacy v3 compatibility: Deploy-Application.exe -DeploymentType "Install" -DeployMode "Interactive".' }, { area: 'Uninstall command', guidance: 'PSADT v4: Invoke-AppDeployToolkit.exe -DeploymentType Uninstall. Legacy v3 compatibility: Deploy-Application.exe -DeploymentType "Uninstall" -DeployMode "Interactive".' }, { area: 'Install behavior', guidance: 'System is recommended for enterprise PSADT deployments; PSADT v4.1+ handles user-session UI without ServiceUI.' }, { area: 'Device restart behavior', guidance: 'Use return-code driven reboot behavior so PSADT can pass 3010/1703 soft reboot signals, or suppress reboot passthrough when Intune should see success.' } ], returnCodes: [ { code: 0, type: 'success', meaning: 'Success' }, { code: 1602, type: 'retry', meaning: 'User deferred/cancelled; Intune recognizes this natively.' }, { code: 1703, type: 'softReboot', meaning: 'Legacy PSADT soft reboot mapping used in some Intune deployment examples.' }, { code: 1641, type: 'softReboot', meaning: 'MSI initiated reboot.' }, { code: 3010, type: 'softReboot', meaning: 'Soft reboot required.' }, { code: 60008, type: 'failed', meaning: 'PSADT initialization failure.' }, { code: '60000-68999', type: 'reserved', meaning: 'Reserved PSADT built-in range; do not use for custom app codes.' }, { code: '69000-69999', type: 'customScript', meaning: 'Recommended custom Invoke-AppDeployToolkit.ps1 range.' }, { code: '70000-79999', type: 'extension', meaning: 'Recommended extension module range.' } ], detectionRules: [ { type: 'MSI product code', bestFor: 'Single MSI packages', notes: 'Prefer when zero-config MSI packaging is used and the product code is stable.' }, { type: 'File/version', bestFor: 'EXE installers and vendor apps', notes: 'Check a stable executable path and ProductVersion/FileVersion.' }, { type: 'Registry', bestFor: 'Apps with Add/Remove Programs entries or custom install markers', notes: 'Use HKLM uninstall keys or a package-specific marker value.' }, { type: 'Custom PowerShell', bestFor: 'Complex detection', notes: 'Return exit 0 and write output when installed; keep script fast and side-effect free.' } ], requirements: [ { key: 'Architecture', values: ['x64', 'x86', 'both'], guidance: 'Match the package architecture and the Intune requirement rule.' }, { key: 'Minimum OS', values: ['Windows 10 22H2', 'Windows 11 23H2', 'Windows 11 24H2'], guidance: 'Keep this aligned with your enterprise baseline and vendor support.' }, { key: 'Run as 32-bit', values: ['false', 'true'], guidance: 'Use only for installers or detection scripts that require 32-bit registry/file redirection.' } ], uiCompatibility: [ { mode: 'native-v4', label: 'PSADT v4 native UI', guidance: 'Preferred. PSADT v4.1+ can display user prompts from Intune SYSTEM installs without ServiceUI.' }, { mode: 'serviceui-legacy', label: 'Legacy ServiceUI bridge', guidance: 'Use only for older PSADT/v3 compatibility packages that intentionally bundle ServiceUI/Invoke-ServiceUI.' }, { mode: 'silent', label: 'Silent / non-interactive', guidance: 'Use for required background installs that should not prompt or defer.' } ], assignmentRings: [ { name: 'Pilot', intent: 'available or required', guidance: 'Small operator or IT validation group; collect PSADT logs and Intune device status.' }, { name: 'Broad', intent: 'required', guidance: 'Main production group after pilot success.' }, { name: 'Exclusion', intent: 'exclude', guidance: 'Break-glass group for blocked apps, special users, or conflicting devices.' } ], managementActions: [ { action: 'Upload package', apiStatus: 'planned', guidance: 'Future Graph integration should create/update Win32 app content versions.' }, { action: 'Create app metadata', apiStatus: 'planned', guidance: 'Map POSHManager PSADT profile metadata to Intune Win32 app display information.' }, { action: 'Configure install/uninstall commands', apiStatus: 'supported-template', guidance: 'Commands are generated today and should be used when creating Intune apps.' }, { action: 'Configure return codes', apiStatus: 'supported-template', guidance: 'Return-code table is modeled today for operator copy/automation.' }, { action: 'Configure detection rules', apiStatus: 'supported-template', guidance: 'Detection patterns are modeled today; future Graph integration can write them directly.' }, { action: 'Assign rings', apiStatus: 'planned', guidance: 'Future Graph integration should manage required/available assignments and exclusions.' }, { action: 'Monitor deployment', apiStatus: 'planned', guidance: 'Future Graph integration should pull device/user install status and correlate PSADT logs.' } ], gotchas: [ 'Do not wrap PSADT with ServiceUI.exe for Intune; PSADT v4.1+ has native user-session UI handling.', 'Use -DeferRunInterval when deferrals are enabled so Intune retry timing does not repeatedly prompt users.', 'Avoid hard-coding -DeployMode unless required; Auto is the upstream default and respects session/process/OOBE detection.', 'Map 1602 as retry/user defer, 3010 as soft reboot, and keep custom PSADT app codes out of 60000-68999.', 'Test packages as SYSTEM with the launch helper patterns before broad Intune assignment.' ] };