Michael Steiner

von Michael Steiner

Windows 10 & die neuen Sprachpakete (Local Experience Packs)

Microsoft entwickelt kontinuierlich sein aktuelles Windows 10 Betriebssystem, wie auch die zugehörigen Sprachpakete, weiter.
Mit Windows 10 1809 hat Microsoft begonnen die bisherigen Sprachpakete im CAB Format abzulösen und die neuen „Local Experience Packs“ (LXP) einzuführen. Diese lassen sich bei Bedarf auch direkt über den Microsoft Store als Appx-Pakete beziehen.
Es besteht nun die Anforderung auch die neuen LXP-Sprachpakete automatisiert per Softwareverteilung an Windows 10 Clients zu verteilen.
Die bis Windows 10 1803 typische Variante per „lpksetup.exe“ oder per DISM war recht einfach: Man lade sich die „lp.cab“ Dateien der jeweiligen Sprache runter und installiert diese mit den altbekannten Befehlen:

        lpksetup /i de-DE /r /s /p D:\langpacks\de-de\lp.cab

        dism.exe /online /add-package /packagepath:D:\langpacks\de-de\lp.cab

Ab Windows 10 1809 ändert sich die klassische Installation der Sprachpakete etwas, da man nun auch die zusätzlichen LXP-Sprachpakete im Appx-Format mit installieren muss, welche die traditionellen Language Interface Packs (LIPs) ablösen.
Im Detail heißt das nun:

  • Download der entsprechenden Windows Language Pack ISO von der „Windows Volume Licensing“ Website oder „MSDN“ Website:

 

 

  • Installation der Language Pack CAB Dateien auf dem entsprechenden Windows 10 System (z.B. “Microsoft-Windows-Client-Language-Pack_x64_de-de.cab”)

  • Installation des zugehörigen LXP Sprachpakets im Appx-Format (z.B. “LanguageExperiencePack.de-DE.Neutral.appx”)

  • Hinzufügen der Sprache zu den bevorzugten Sprachen pro User.

 

Um diese Tätigkeiten etwas zu vereinfachen haben wir ein kleines PowerShell-Skript (Install-Win10LanguagePackLXP.ps1) geschrieben, welches die Sprachen automatisch installiert. Dazu liegt das entsprechende PowerShell Skript in einem Ordner ab, welches zugleich auch die nötigen Sprachdateien enthält:

Das PowerShell Skript installiert alle Sprachen, welche es in den Unterordnern vorfindet. Anzupassen sind lediglich die Variablen für OS-Architektur ($architecture) und Gebietsschema ($SystemLocale).

 

 

#=============================================================

# Windows 10 - Install language pack (LXP)

# Version 1.00 (17.11.2019)

# Created by Michael Steiner

# www.modernx.de

# History

# Version 1.00 - Release

#=============================================================

<#

.SYNOPSIS

Windows 10 - Install language pack (LXP)

Microsoft changed Language Pack Format from lp.cab to LXP files (APPX)

.EXAMPLE

.MISSING"

Windows 10 - Install language pack (LXP)

.LINK

www.modernx.de

#>

#=============================================================

#region Preparations

 

#LanguagePacks: \\Install-Win10LanguagePackLXP\LanguagePacks

#LXP: \\Install-Win10LanguagePackLXP\LXP

#Script: \\Install-Win10LanguagePackLXP\Install-Win10LanguagePackLXP.ps1

#The cab and appx files needs to be installed as Admin

 

#Current Path

$currentExecutingPath = $MyInvocation.MyCommand.Definition.Replace($MyInvocation.MyCommand.Name, "")

 

#endregion

#=============================================================

#region Variables

 

$architecture = "x64"

$SystemLocale = "de-DE"

 

#endregion

#=============================================================

#region Main Function

 

Write-Host "Start install language packs..." -ForegroundColor Green

 

$installed_lp = New-Object System.Collections.ArrayList

 

foreach ($language in Get-ChildItem -Path "$currentExecutingPath\LXP") {

 

Write-Host "Installing $language" -ForegroundColor Green

$AppXFile = $currentExecutingPath + "\LXP\" + $language.Name + "\LanguageExperiencePack." + $language.Name + ".Neutral.appx"

$LicFile = $currentExecutingPath + "\LXP\" + $language.Name + "\License.xml"

$CabFile = $currentExecutingPath + "\LanguagePacks\Microsoft-Windows-Client-Language-Pack_" + $architecture + "_" + $language.Name + ".cab"

 

Write-Host "Installing $CabFile"

Start-Process -FilePath "dism.exe" -WorkingDirectory "C:\Windows\System32" -ArgumentList "/online /Add-Package /PackagePath=$CabFile /NoRestart" -Wait

 

Write-Host "Installing $AppXFile"

Start-Process -FilePath "dism.exe" -WorkingDirectory "C:\Windows\System32" -ArgumentList "/online /Add-ProvisionedAppxPackage /PackagePath=$AppXFile /LicensePath=$LicFile /NoRestart" -Wait

 

Write-Host "Add to prefered languages"

$prefered_list = Get-WinUserLanguageList

$prefered_list.Add($language.Name)

Set-WinUserLanguageList($prefered_list) -Force

 

$installed_lp.Add($language.Name)

}

 

Write-Host "Setting the system locale: $SystemLocale" -ForegroundColor Green

Set-WinSystemLocale -SystemLocale $SystemLocale

 

#endregion

#=============================================================

 

Ausführung des PowerShell-Skripts:

Nun sind die Sprachen installiert und die Region ist auf Deutschland gesetzt. Jedoch fehlt, wie aus dem nachfolgenden Screenshot ersichtlich, die Auswahl der Windows-Anzeigesprache. Trotz installierten Sprachpaketen.

Das Hinzufügen der Auswahl an Windows-Anzeigesprachen erfolgt pro Anwender und kann z.B. durch ein kleines Login-Skript erfolgen. Inhaltlich könnte dies wie folgt aussehen:

 

#PowerShell Script for users or as a login script

$prefered_list = Get-WinUserLanguageList

$prefered_list.Add("cs-cz")

$prefered_list.Add("de-de")

$prefered_list.Add("pl-pl")

$prefered_list.Add("sk-sk")

$prefered_list.Add("zh-cn")

Set-WinUserLanguageList($prefered_list) -Force

 

 

Abschließend stehen dann auch im Dropdown-Menü der Windows-Anzeigesprachen alle Sprachen zur Auswahl:

Beratung anfordern

Lassen Sie uns gemeinsam Ihre IT neu denken

Prüfen Sie jetzt Ihr Potenzial zur IT-Kosteneinsparung oder buchen Sie direkt Ihren ersten Beratungstermin (kostenlos).

Vereinbaren Sie ein persönliches Beratungsgespräch oder fragen Sie ein konkretes Angebot an.