Добавление языковых пакетов в образ Windows 10 multi-session
Виртуальный рабочий стол Azure — это служба, которую пользователи могут развертывать в любое время в любом месте. Поэтому важно, чтобы пользователи могли настраивать на каком языке будет отображаться образ Windows 10 Enterprise multi-session.
Существует два способа, которыми можно обеспечить требования пользователей к языкам:
- Создать отдельные пулы узлов, образ которых будет настроен для каждого языка.
- Разместить пользователей с различными требованиями к языкам и локализации в одном пуле узлов, но настроить их образы так, чтобы обеспечить им возможность выбирать нужный язык.
Последний способ является гораздо более эффективным и экономичным. Тем не менее, вам нужно решить, какой способ лучше подходит для ваших нужд. В этой статье показано, как вам настроить языки для ваших образов.
Необходимые компоненты
Чтобы настроить образы Windows 10 Enterprise multi-session для добавления нескольких языков, необходимо обеспечить следующее:
Виртуальная машина Azure с поддерживаемой версией Windows 10 Корпоративная нескольких сеансов.
Языковой ISO, Диск 1 пакета Функции по требованию (Feature on Demand, FOD), и пакет Inbox Apps ISO той версии ОС, которую использует образ. Их можно скачать здесь:
Языковой ISO:
ISO диска 1 FOD:
Inbox Apps ISO:
Если вы используете ISO-файлы локального пакета взаимодействия (LXP) для локализации образов, вам также потребуется скачать соответствующий ISO LXP для лучшего языка. Используйте сведения о добавлении языков в Windows 10: известные проблемы , чтобы выяснить, какие из следующих isOS LXP подходит для вас:
- Windows 10 версии 2004 или более поздней версии 01C 2021 LXP ISO
- Windows 10 версии 2004 или более поздней версии 02C 2021 LXP ISO
- Windows 10 версии 2004 или более поздней версии 04B 2021 LXP ISO
- Windows 10 версии 2004 или более поздней версии 05C 2021 LXP ISO
- Windows 10 версии 2004 или более поздней версии 07C 2021 LXP ISO
- Windows 10 версии 2004 или более поздней версии 09C 2021 LXP ISO
- Windows 10 версии 2004 или более поздней версии 10C 2021 LXP ISO
- Windows 10 версии 2004 или более поздней версии 11C 2021 LXP ISO
- Windows 10 версии 2004 или более поздней версии 01C 2022 LXP ISO
- Windows 10 версии 2004 или более поздней версии 02C 2022 LXP ISO
- Windows 10 версии 2004 или более поздней версии 04C 2022 LXP ISO
- Windows 10 версии 2004 или более поздней версии 06C 2022 LXP ISO
Общая папка службы Файлы Azure или общая папка на виртуальной машине файлового сервера Windows
Примечание.
Общая папка (репозиторий) должна быть доступна из виртуальной машины Azure, которую вы планируете использовать для создания пользовательского образа.
Создание репозитория содержимого для языковых пакетов и функций по требованию
Чтобы создать репозиторий содержимого для языковых пакетов и FOD, а также репозиторий для пакетов Inbox Apps, выполните следующие действия:
На виртуальной машине Azure Скачайте многоязыковые ISO для Windows 10, пакеты FOD и Inbox Apps для образов Windows 10 Enterprise multi-session, версии 1903/1909 и 2004, используя ссылки в пункте Предварительные условия.
Откройте и подключите ISO-файлы на виртуальной машине.
Перейдите к ISO-образу языкового пакета и скопируйте содержимое из папок LocalExperiencePacks и x64\langpacks, а затем вставьте содержимое в общую папку.
Перейдите к файлу FOD ISO, скопируйте все его содержимое, а затем вставьте его в общую папку.
Перейдите в папку amd64fre на ISO пакета Inbox Apps и скопируйте содержимое в подготовленный вами репозиторий для Inbox Apps.
Примечание.
Если вы работаете с ограниченным объемом хранилища, копируйте файлы только для тех языков, которые нужны вашим пользователям. Отделить нужные файлы можно взглянув на коды языка в именах файлов. Например, файл с французским языков содержит код "fr-FR" в своем имени. Полный список кодов языков для всех имеющихся языков см. в разделе Доступные языковые пакеты для Windows.
Внимание
Для некоторых языков требуются дополнительные шрифты, содержащиеся в вспомогательных пакетах, в имена файлов этих пакетов включаются различные условные обозначения. Например, имена файлов японского шрифта включают "Jpan".
Задайте разрешения для общей папки репозитория содержимого языка, чтобы у вас был доступ на чтение с виртуальной машины, которая будет использоваться для создания пользовательского образа.
Создание пользовательского образа Windows 10 Enterprise multi-session вручную
Чтобы создать пользовательский образ Windows 10 Enterprise multi-session вручную:
Разверните виртуальную машину Azure, перейдите в Azure Gallery и выберите версию Windows 10 Enterprise multi-session, которую вы используете в настоящий момент.
После развертывания виртуальной машины подключитесь к ней, используя RDP в качестве локального администратора.
Убедитесь, что на виртуальной машине установлены все последние обновления Windows. При необходимости скачайте обновления и перезапустите виртуальную машину.
Внимание
После установки языкового пакета необходимо переустановить последнее накопительное обновление, установленное на образе. Если не переустановить последнее накопительное обновление, могут возникнуть ошибки. Если последнее накопительное обновление уже установлено, клиентский компонент Центра обновления Windows не предлагает его снова; его необходимо переустановить вручную. См. сведения о языковых тегах.
Подключитесь к репозиторию языковых пакетов, пакетов FOD и Inbox Apps и подключите его к определенному диску, указав его литеру (например, диске E).
Создание пользовательского образа Windows 10 Enterprise multi-session автоматически
Если вы предпочитаете устанавливать языки с помощью автоматизированного процесса, можно настроить такой скрипт в PowerShell. Приведенный ниже пример скрипта можно использовать для установки языковых пакетов испанского (Spain), французского (France) и китайского (PRC) языков, а также и вспомогательных пакетов к ним, на Windows 10 Enterprise multi-session, версия 2004. Данный скрипт интегрирует пакет интерфейса языка и все необходимые вспомогательные пакеты в образ. Однако этот скрипт также можно изменить и для установки других языков. Просто убедитесь, что сценарий запущен из сеанса PowerShell с повышенными привилегиями, или в противном случае он не будет работать.
########################################################
## 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
Скрипт может занять какое-то время, в зависимости от числа языков, которые необходимо установить.
После завершения работы скрипта убедитесь, что языковые пакеты установлены правильно, перейдя: Пуск>Параметры>Время и язык>Язык. Если языковые файлы находятся там, это значит все они настроены.
После добавления дополнительных языков в образ Windows также необходимо обновить Inbox Apps, для поддержки добавленных языков. Это можно сделать, обновив предварительно установленные приложения с содержимым из ISO пакета Inbox Apps. Чтобы выполнить это обновление в среде, в которой виртуальная машина не имеет доступа к Интернету, можно использовать следующий шаблон скрипта PowerShell для автоматизации процесса и обновления только установленных версий Inbox Apps.
#########################################
## 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
}
}
}
Внимание
Приложения, входящие в состав ISO пакета Inbox Apps не являются последними версиями предварительно установленных приложений Windows. Чтобы получить последнюю версию всех приложений, необходимо обновить приложения с помощью Windows Store App и, после установки дополнительных языков, выполнить поиск обновлений вручную.
Когда все будет готово, не забудьте отключить общую папку.
Завершение настройки пользовательского образа
После установки языковых пакетов можно установить любое другое программное обеспечение, которое нужно добавить в пользовательский образ.
После завершения настройки пользовательского образа необходимо запустить средство подготовки системы (Sysprep).
Чтобы запустить Sysprep:
Откройте командную строку с повышенными привилегиями и, чтобы распространить образ, выполните следующую команду:
C:\Windows\System32\Sysprep\sysprep.exe /oobe /generalize /shutdown
Остановите виртуальную машину, а затем запишите ее в управляемый образ, следуя инструкциям в статье Создание управляемого образа распространяемой виртуальной машины в Azure.
Теперь вы можете использовать настроенный образ для развертывания пула узлов Виртуальных рабочих столов Azure. Сведения о развертывании пула узлов см. в разделе Учебник: Создание пула узлов с помощью портала Azure.
Включение языков в "Параметры" Windows
Наконец, после развертывания пула узлов необходимо добавить язык в список языков каждого пользователя, чтобы он мог выбрать предпочитаемый язык в меню "Параметры".
Чтобы пользователи могли выбрать установленные языки, войдите в систему от имени пользователя, а затем выполните следующий командлет PowerShell на добавление установленных языковых пакетов в меню "Языки". Этот скрипт также можно установить как автоматизированную задачу или как скрипт входа, который активируется при входе пользователя в сеанс.
$LanguageList = Get-WinUserLanguageList
$LanguageList.Add("es-es")
$LanguageList.Add("fr-fr")
$LanguageList.Add("zh-cn")
Set-WinUserLanguageList $LanguageList -force
После того как пользователь изменит параметры языка, ему потребуется выйти из сеанса Виртуального рабочего стола Azure и снова войти, чтобы изменения вступили в силу.
Следующие шаги
Если вы хотите узнать об известных проблемах, связанных с языковыми пакетами, см. статью Добавление языковых пакетов в Windows 10, версия 1803 и более поздние версии: известные проблемы.
Если у вас есть вопросы о Windows 10 Enterprise multi-session, читайте раздел Часто задаваемые вопросы.