Public/Get-MSIXDependencies.ps1
|
function Get-MSIXDependencies { <# .SYNOPSIS Lists PackageDependency entries in an MSIX manifest (TargetDeviceFamily excluded). .PARAMETER MSIXFolder Expanded MSIX package folder (contains AppxManifest.xml). .EXAMPLE Get-MSIXDependencies -MSIXFolder $pkg | Format-Table Name, MinVersion .NOTES Andreas Nick, 2026 #> [CmdletBinding()] [OutputType([PSCustomObject])] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 0)] [System.IO.DirectoryInfo] $MSIXFolder ) process { $manifestPath = Join-Path $MSIXFolder.FullName 'AppxManifest.xml' if (-not (Test-Path $manifestPath)) { Write-Error "The MSIX folder does not contain AppxManifest.xml: $($MSIXFolder.FullName)" return } $manifest = New-Object System.Xml.XmlDocument $manifest.Load($manifestPath) $nsmgr = New-Object System.Xml.XmlNamespaceManager($manifest.NameTable) $null = $nsmgr.AddNamespace('default', 'http://schemas.microsoft.com/appx/manifest/foundation/windows10') $deps = $manifest.SelectNodes('//default:Package/default:Dependencies/default:PackageDependency', $nsmgr) foreach ($dep in $deps) { Write-Verbose "Found PackageDependency '$($dep.GetAttribute('Name'))'" [PSCustomObject]@{ Name = $dep.GetAttribute('Name') MinVersion = $dep.GetAttribute('MinVersion') Publisher = $dep.GetAttribute('Publisher') MSIXFolderPath = $MSIXFolder.FullName } } } } |