Aggiungere Language Pack a un'immagine con più sessioni di Windows 10

Desktop virtuale Azure è un servizio che gli utenti possono distribuire in qualsiasi momento, ovunque. Ecco perché è importante che gli utenti siano in grado di personalizzare la lingua visualizzata dall'immagine multisessione di Windows 10 Enterprise.

È possibile soddisfare in due modi le esigenze degli utenti a livello di lingua:

  • Creare pool di host dedicati con un'immagine personalizzata per ogni lingua.
  • Raggruppare gli utenti con requisiti diversi a livello di lingua e localizzazione nello stesso pool di host, ma personalizzare le rispettive immagini per garantire che possano selezionare la lingua necessaria.

Quest'ultimo metodo è molto più efficiente e conveniente. È tuttavia possibile decidere quale metodo è più adatto alle esigenze specifiche. Questo articolo illustra come personalizzare le lingue per le immagini.

Prerequisiti

Sono necessari gli elementi seguenti per personalizzare le immagini multisessione di Windows 10 Enterprise per aggiungere più lingue:

Nota

La condivisione file (repository) deve essere accessibile dalla macchina virtuale di Azure che si prevede di usare per creare l'immagine personalizzata.

Creare un repository di contenuto per i language pack e le funzionalità su richiesta

Per creare il repository di contenuto per i language pack e i FOD e un repository per i pacchetti delle app incluse:

  1. In una macchina virtuale di Azure scaricare le immagini ISO, FOD e App di Posta in arrivo per Windows 10 Enterprise multisessione versione 1903/1909 e 2004 dai collegamenti in Prerequisiti.

  2. Aprire e montare i file ISO nella macchina virtuale.

  3. Passare al Language Pack ISO e copiare il contenuto dalle cartelle LocalExperiencePacks e x64\langpacks , quindi incollare il contenuto nella condivisione file.

  4. Passare al file ISO foD, copiarne tutto il contenuto e incollarlo nella condivisione file.

  5. Passare alla cartella amd64fre nell'ISO delle app incluse e copiare il contenuto nel repository per le app incluse preparate.

    Nota

    Se si usa una risorsa di archiviazione limitata, copiare solo i file per le lingue necessarie agli utenti. È possibile distinguere i file esaminando i codici di lingua nei relativi nomi di file. Ad esempio, il file francese ha il codice "fr-FR" nel nome. Per un elenco completo dei codici di lingua per tutte le lingue disponibili, vedere Language Pack disponibili per Windows.

    Importante

    Alcune lingue richiedono tipi di carattere aggiuntivi inclusi nei pacchetti satellite che seguono convenzioni di denominazione diverse. Ad esempio, i nomi dei file di carattere giapponesi includono "Jpan".

    An example of the Japanese language packs with the

  6. Configurare le autorizzazioni sulla condivisione del repository del contenuto relativo alla lingua in modo da avere accesso in lettura dalla macchina virtuale che verrà usata per compilare l'immagine personalizzata.

Creare manualmente un'immagine di Windows 10 Enterprise multisessione

Per creare manualmente un'immagine di Windows 10 Enterprise multisessione:

  1. Distribuire una macchina virtuale di Azure, quindi passare alla Raccolta di Azure e selezionare la versione corrente di Windows 10 Enterprise multisessione in uso.

  2. Dopo la distribuzione della macchina virtuale, connettersi alla macchina virtuale usando RDP come amministratore locale.

  3. Assicurarsi che nella macchina virtuale siano disponibili tutti gli aggiornamenti di Windows più recenti. Scaricare gli aggiornamenti e riavviare la macchina virtuale, se necessario.

    Importante

    Dopo aver installato un Language Pack, è necessario reinstallare l'aggiornamento cumulativo più recente installato nell'immagine. Se non si reinstalla l'aggiornamento cumulativo più recente, è possibile che si verifichino errori. Se l'aggiornamento cumulativo più recente è già installato, Windows Update non lo offre più; è necessario reinstallarlo manualmente. Per altre informazioni, vedere Panoramica delle lingue.

  4. Connettersi al repository della condivisione file di language pack, FOD e app incluse e montarlo in un'unità indicata da una lettera, ad esempio l'unità E.

Creare automaticamente un'immagine personalizzata di Windows 10 Enterprise multisessione

Se si preferisce installare le lingue tramite un processo automatizzato, è possibile configurare uno script in PowerShell. Puoi usare l'esempio di script seguente per installare i Language Pack spagnoli (Spagna), Francese (Francia) e Cinese (PRC) e i pacchetti satellite per Windows 10 Enterprise multisessione versione 2004. Lo script integra il Language Interface Pack e tutti i pacchetti satellite necessari nell'immagine. Tuttavia, è anche possibile modificare questo script per installare altri linguaggi. Assicurarsi di eseguire lo script da una sessione di PowerShell con privilegi elevati o che non funzioni.

########################################################
## Add Languages to running Windows Image for Capture ##
########################################################

##Disable Language Pack Cleanup##
Disable-ScheduledTask -TaskPath "\Microsoft\Windows\AppxDeploymentClient\" -TaskName "Pre-staged app cleanup"

##Set Language Pack Content Stores##
[string]$LIPContent = "E:"

##Spanish##
Add-AppProvisionedPackage -Online -PackagePath $LIPContent\es-es\LanguageExperiencePack.es-es.Neutral.appx -LicensePath $LIPContent\es-es\License.xml
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Client-Language-Pack_x64_es-es.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Basic-es-es-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Handwriting-es-es-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-OCR-es-es-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Speech-es-es-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-TextToSpeech-es-es-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-NetFx3-OnDemand-Package~31bf3856ad364e35~amd64~es-es~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-InternetExplorer-Optional-Package~31bf3856ad364e35~amd64~es-es~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-MSPaint-FoD-Package~31bf3856ad364e35~amd64~es-es~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Notepad-FoD-Package~31bf3856ad364e35~amd64~es-es~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-PowerShell-ISE-FOD-Package~31bf3856ad364e35~amd64~es-es~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Printing-WFS-FoD-Package~31bf3856ad364e35~amd64~es-es~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-StepsRecorder-Package~31bf3856ad364e35~amd64~es-es~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-WordPad-FoD-Package~31bf3856ad364e35~amd64~es-es~.cab
$LanguageList = Get-WinUserLanguageList
$LanguageList.Add("es-es")
Set-WinUserLanguageList $LanguageList -force

##French##
Add-AppProvisionedPackage -Online -PackagePath $LIPContent\fr-fr\LanguageExperiencePack.fr-fr.Neutral.appx -LicensePath $LIPContent\fr-fr\License.xml
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Client-Language-Pack_x64_fr-fr.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Basic-fr-fr-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Handwriting-fr-fr-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-OCR-fr-fr-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Speech-fr-fr-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-TextToSpeech-fr-fr-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-NetFx3-OnDemand-Package~31bf3856ad364e35~amd64~fr-fr~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-InternetExplorer-Optional-Package~31bf3856ad364e35~amd64~fr-FR~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-MSPaint-FoD-Package~31bf3856ad364e35~amd64~fr-FR~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Notepad-FoD-Package~31bf3856ad364e35~amd64~fr-FR~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-PowerShell-ISE-FOD-Package~31bf3856ad364e35~amd64~fr-FR~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Printing-WFS-FoD-Package~31bf3856ad364e35~amd64~fr-FR~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-StepsRecorder-Package~31bf3856ad364e35~amd64~fr-FR~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-WordPad-FoD-Package~31bf3856ad364e35~amd64~fr-FR~.cab
$LanguageList = Get-WinUserLanguageList
$LanguageList.Add("fr-fr")
Set-WinUserLanguageList $LanguageList -force

##Chinese(PRC)##
Add-AppProvisionedPackage -Online -PackagePath $LIPContent\zh-cn\LanguageExperiencePack.zh-cn.Neutral.appx -LicensePath $LIPContent\zh-cn\License.xml
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Client-Language-Pack_x64_zh-cn.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Basic-zh-cn-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Fonts-Hans-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Handwriting-zh-cn-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-OCR-zh-cn-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Speech-zh-cn-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-TextToSpeech-zh-cn-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-NetFx3-OnDemand-Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-InternetExplorer-Optional-Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-MSPaint-FoD-Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Notepad-FoD-Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-PowerShell-ISE-FOD-Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Printing-WFS-FoD-Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-StepsRecorder-Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-WordPad-FoD-Package~31bf3856ad364e35~amd64~zh-cn~.cab
$LanguageList = Get-WinUserLanguageList
$LanguageList.Add("zh-cn")
Set-WinUserLanguageList $LanguageList -force

Lo script potrebbe richiedere del tempo a seconda del numero di lingue che è necessario installare.

Al termine dell'esecuzione dello script, verificare che i Language Pack siano installati correttamente passando a Start> Impostazioni> Time & Language Language.> Se i file di lingua sono presenti, tutti sono impostati.

Dopo aver aggiunto altre lingue all'immagine di Windows, è necessario aggiornare anche le app posta in arrivo per supportare le lingue aggiunte. Questa operazione può essere eseguita aggiornando le app preinstallate con il contenuto delle app in arrivo ISO. Per eseguire questo aggiornamento in un ambiente in cui la macchina virtuale non ha accesso a Internet, è possibile usare il modello di script di PowerShell seguente per automatizzare il processo e aggiornare solo le versioni installate delle app posta in arrivo.

#########################################
## Update Inbox Apps for Multi Language##
#########################################
##Set Inbox App Package Content Stores##
[string] $AppsContent = "F:\"

##Update installed Inbox Store Apps##
foreach ($App in (Get-AppxProvisionedPackage -Online)) {
	$AppPath = $AppsContent + $App.DisplayName + '_' + $App.PublisherId
	Write-Host "Handling $AppPath"
	$licFile = Get-Item $AppPath*.xml
	if ($licFile.Count) {
		$lic = $true
		$licFilePath = $licFile.FullName
	} else {
		$lic = $false
	}
	$appxFile = Get-Item $AppPath*.appx*
	if ($appxFile.Count) {
		$appxFilePath = $appxFile.FullName
		if ($lic) {
			Add-AppxProvisionedPackage -Online -PackagePath $appxFilePath -LicensePath $licFilePath 
		} else {
			Add-AppxProvisionedPackage -Online -PackagePath $appxFilePath -skiplicense
		}
	}
}

Importante

Le app posta in arrivo incluse nell'ISO non sono le versioni più recenti delle app di Windows preinstallate. Per ottenere la versione più recente di tutte le app, devi aggiornare le app usando l'app di Windows Store ed eseguire una ricerca manuale degli aggiornamenti dopo aver installato le lingue aggiuntive.

Al termine, assicurarsi di disconnettere la condivisione.

Completare la personalizzazione dell'immagine

Dopo avere installato i language pack, è possibile installare qualsiasi altro software da aggiungere all'immagine personalizzata.

Al termine della personalizzazione dell'immagine, sarà necessario eseguire lo strumento di preparazione del sistema (sysprep).

Per eseguire sysprep:

  1. Aprire un prompt dei comandi con privilegi elevati ed eseguire questo comando per generalizzare l'immagine:

    C:\Windows\System32\Sysprep\sysprep.exe /oobe /generalize /shutdown
    
  2. Arrestare la macchina virtuale e quindi acquisire la macchina virtuale in un'immagine gestita seguendo le istruzioni riportate in Creare un'immagine gestita di una macchina virtuale generalizzata in Azure.

  3. È ora possibile usare l'immagine personalizzata per distribuire un pool di host di Desktop virtuale Azure. Per informazioni su come distribuire un pool di host, vedere Esercitazione: Creare un pool di host con il portale di Azure.

Abilitare le lingue nell'app Impostazioni di Windows

Dopo avere distribuito il pool di host, sarà infine necessario aggiungere la lingua all'elenco di lingue di ogni utente, in modo che possano selezionare la lingua preferita nel menu Impostazioni.

Per assicurarsi che gli utenti possano selezionare le lingue installate, accedere come l'utente, quindi eseguire questo cmdlet di PowerShell per aggiungere i language pack installati al menu Lingue. È anche possibile configurare questo script come attività automatica o script di accesso che si attiva quando l'utente accede alla sessione.

$LanguageList = Get-WinUserLanguageList
$LanguageList.Add("es-es")
$LanguageList.Add("fr-fr")
$LanguageList.Add("zh-cn")
Set-WinUserLanguageList $LanguageList -force

Quando un utente completa la modifica delle impostazioni per la lingua, dovrà disconnettersi dalla sessione di Desktop virtuale Azure e accedere di nuovo per rendere effettive le modifiche.

Passaggi successivi

Per informazioni sui problemi noti per i Language Pack, vedere Aggiunta di Language Pack in Windows 10, versione 1803 e versioni successive: Problemi noti.

Per altre domande su Windows 10 Enterprise multisessione, vedere le domande frequenti.