Home Knowledge Base Change Windows version and language with DISM
Windows 10/11 CMD PowerShell DISM In-place upgrade

Change Windows version and language with DISM and in-place upgrade

A collection of commands and tools to add, list and remove language packs in Windows 10/11 single language with DISM, perform an in-place upgrade to switch editions (Home → Pro, Pro → LTSC IoT, etc.) without losing files or settings, and repair AppX packages after the upgrade.

SystemWindows 10 / 11 (x64)
PrivilegesAdministrator
Typical useMigrate to LTSC IoT (support until 2031)
1 · Download the language pack (.cab)

Windows single language doesn't let you change languages from Settings. You need to download the .cab for the desired language with a GUI helper. W10_11LangPack is the easiest: it detects your build and downloads the correct package from Microsoft's servers.

Original source Password protected

Unzip and run W10_11LangPack.ps1 in PowerShell (right-click → Run with PowerShell). If execution policy blocks it, run Set-ExecutionPolicy -Scope Process Bypass first.

2 · Install the language with DISM
CMD / PowerShell as Administrator — replace the path with the .cab path
dism /Online /Add-Package /PackagePath:C:\path\to\langpack.cab
3 · List all installed packages

Use this to find the exact Package Identity for the language you want to remove (e.g. Spanish if you're going to leave only en-US for an in-place upgrade to LTSC IoT).

dism /Online /Get-Packages
Output of dism /Online /Get-Packages showing installed language packs, with the Microsoft-Windows-Client-LanguagePack-Package en-US row highlighted
Typical output: copy the Package Identity of the language you want to remove (highlighted row).
4 · Remove a language pack
Paste the exact Package Identity you copied above
dism /Online /Remove-Package /PackageName:Microsoft-Windows-Client-LanguagePack-Package~31bf3856ad364e35~x86~es-ES~10.0.14393.0
5 · Force in-place upgrade to LTSC IoT

The LTSC IoT installer only accepts an upgrade if the system already reports itself as IoTEnterpriseS. This temporary registry patch tricks the installer into offering "Keep files, apps and settings".

CMD / PowerShell as Administrator — before running setup.exe from the ISO
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID /d IoTEnterpriseS /f
The system language must match the ISO (LTSC IoT only ships in en-US). That's why you install en-US first with steps 1–2 and remove the original language with step 4.
6 · Helper scripts for the in-place upgrade

If you'd rather not touch the registry by hand, use one of these scripts that automate edition detection and switching:

Option A — In-Place_Upgrade_Helper.bat (local script, mounted ISO required)
Password protected

Run as Administrator with the LTSC IoT ISO already mounted. The script detects the current edition, adjusts EditionID and launches setup.exe with the correct arguments to upgrade while keeping files and apps.

Option B — MAS (Microsoft Activation Scripts) from massgrave.dev
irm https://get.activated.win | iex

MAS also offers ESU bypass to extend Windows 10 until 2027 if you'd rather not switch editions. See massgrave.dev.

7 · Repair AppX packages after the upgrade

After an in-place upgrade some Microsoft Store apps usually break (Start menu missing icons, Calculator not opening, etc.). This one-liner reinstalls them from the existing manifests.

PowerShell as Administrator
Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppxManifest.xml"}
Credits and sources
Administrator required · back up data before the in-place upgrade
Read the case study