<# .SYNOPSIS Grants VRio.App.exe package identity by registering the sparse package (pkg\AppxManifest.xml) with the exe's folder as the external location. Identity is what lets Windows Dynamic Lighting offer vRIO under Settings > Personalization > Dynamic Lighting > "Background light control", so the keyboard lamp mirror keeps working while the game has focus. Unsigned registration requires Developer Mode (Settings > System > For developers). .PARAMETER ExePath Folder containing VRio.App.exe. Defaults to the repo's Release output; for a deployed zip, pass the extracted VRio folder. .PARAMETER Unregister Remove the registration instead. #> param( [string]$ExePath = (Join-Path $PSScriptRoot '..\src\VRio.App\bin\Release\net48'), [switch]$Unregister ) $ErrorActionPreference = 'Stop' $packageName = 'VWE.vRIO' $existing = Get-AppxPackage -Name $packageName -ErrorAction SilentlyContinue if ($existing) { Write-Host "Removing existing registration $($existing.PackageFullName)..." Remove-AppxPackage -Package $existing.PackageFullName } if ($Unregister) { Write-Host 'Unregistered.' return } $exe = Join-Path $ExePath 'VRio.App.exe' if (-not (Test-Path $exe)) { throw "VRio.App.exe not found in '$ExePath'" } $manifest = Join-Path $PSScriptRoot 'AppxManifest.xml' # With AllowExternalContent the shell resolves the manifest's logo assets # against the EXTERNAL location, not the manifest's folder — the Start/taskbar # icon only shows if Assets\ and resources.pri sit next to the exe. $assetDir = New-Item -ItemType Directory -Force (Join-Path $ExePath 'Assets') Copy-Item (Join-Path $PSScriptRoot 'Assets\*') $assetDir -Force Copy-Item (Join-Path $PSScriptRoot 'resources.pri') $ExePath -Force Add-AppxPackage -Register $manifest -ExternalLocation (Resolve-Path $ExePath).Path $family = (Get-AppxPackage -Name $packageName).PackageFamilyName Write-Host "Registered $packageName with external location '$ExePath'." Write-Host '' Write-Host 'IMPORTANT: identity is granted through shell activation only. Launch vRIO' Write-Host 'from the Start menu entry ("vRIO") or via:' Write-Host " explorer shell:AppsFolder\$family!vRIO" Write-Host 'Double-clicking VRio.App.exe runs it WITHOUT identity (lamp mirror then' Write-Host 'works only while vRIO has focus).' Write-Host '' Write-Host 'Then enable the lamp mirror and pick vRIO under Settings > Personalization >' Write-Host 'Dynamic Lighting > Background light control.'