Bootstrap winget on Windows 11 IoT Enterprise / LTSC — editions that ship without the Microsoft Store.
The official IoT docs still talk about VCLibs + UI.Xaml 2.8 only. Current
WinGet (1.29+) also needs Windows App Runtime 1.8. Missing a dependency
makes Add-AppxPackage fail silently: winget.exe never shows up under
%LOCALAPPDATA%\Microsoft\WindowsApps.
This script:
- Enables AppX sideloading (
AllowAllTrustedApps) — Store stays off - Detects OS architecture (
x64/arm64/x86) - Downloads the latest stable winget-cli release
- Installs dependencies in order: VCLibs → UI.Xaml 2.8 → Windows App Runtime
- Installs
Microsoft.DesktopAppInstallerand provisions it for all users withLicense1.xml - Registers the community source (
source.msix) - Verifies
winget --info
The msstore source is useless on IoT LTSC. The winget community source works without the Store.
- Windows 11 IoT Enterprise or LTSC (also works on 10 IoT LTSC 2021+ / Server without Store)
- Administrator PowerShell 5.1+
- Internet or an offline payload folder (
-OfflineDir) - Not Windows IoT Core (no Win32)
Administrator Windows PowerShell 5.1, copy-paste:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$f = Join-Path $env:TEMP 'Install-WinGet-IoT.ps1'
Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/Jabe/winget-iot/main/Install-WinGet-IoT.ps1' -OutFile $f -UseBasicParsing
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$f"Paste only the block above. Extra parameters go on the last line, after -File $f (for example -SkipUiXaml).
After success, open a new PowerShell:
winget --version
winget search Git.Git
winget install --id Git.Git -e --accept-source-agreements --accept-package-agreementsSet-ExecutionPolicy -Scope Process Bypass -Force
.\Install-WinGet-IoT.ps1Or double-click Install-WinGet-IoT.cmd (UAC).
.\Install-WinGet-IoT.ps1 -OfflineDir D:\payloads\wingetPut these files in that folder:
| File | From |
|---|---|
Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle |
winget-cli latest |
e53e159d00e04f729cc2180cffd1c02e_License1.xml |
same release |
DesktopAppInstaller_Dependencies.zip |
same release (VCLibs + WinAppRuntime 1.8) |
optional Microsoft.UI.Xaml.2.8.x64.appx |
UI.Xaml 2.8.6 |
optional source.msix |
https://cdn.winget.microsoft.com/cache/source.msix |
| Parameter | Meaning |
|---|---|
-OfflineDir <path> |
Use local files, no GitHub |
-SkipUiXaml |
Skip extra UI.Xaml 2.8 download (WinAppRuntime-only path) |
-SkipSource |
Do not install source.msix |
-NoProvision |
Current user only, no Add-AppxProvisionedPackage |
-WorkDir <path> |
Download/extract cache (default %TEMP%\winget-iot-bootstrap) |
If the machine can reach PSGallery, Microsoft's module can pull the same bits:
$ProgressPreference = 'SilentlyContinue'
Install-PackageProvider -Name NuGet -Force | Out-Null
Install-Module -Name Microsoft.WinGet.Client -Force -Repository PSGallery -Scope AllUsers
Repair-WinGetPackageManager -AllUsersOn locked-down IoT without Gallery, use this repo's script.
- Close and reopen PowerShell (PATH:
%LOCALAPPDATA%\Microsoft\WindowsApps) - Reboot
- Check packages:
Get-AppxPackage Microsoft.DesktopAppInstaller, Microsoft.VCLibs*, Microsoft.UI.Xaml*, Microsoft.WindowsAppRuntime*Silent failure almost always means a missing dependency.
Scripts: MIT. Downloaded Microsoft packages keep Microsoft's licenses.