共用方式為


將語言套件新增至 Windows 10 多重會話映像

Azure 虛擬桌面是您的用戶隨時隨地都可以部署的服務。 這就是為什麼您的用戶必須能夠自定義其 Windows 10 企業版 多重會話影像顯示的語言。

有兩種方式可滿足用戶的語言需求:

  • 使用每個語言的自定義映像建置專用主機集區。
  • 讓使用者在相同的主機集區中具有不同的語言和當地語系化需求,但自定義其影像以確保他們可以選取所需的語言。

後者是更有效率且符合成本效益的方法。 不過,您必須決定哪一種方法最符合您的需求。 本文將說明如何自定義影像的語言。

必要條件

您需要下列項目來自定義 Windows 10 企業版 多重工作階段映像,以新增多種語言:

注意事項

檔案共享 (存放庫) 必須可從您打算用來建立自定義映像的 Azure VM 存取。

視需要建立語言套件和功能的內容存放庫

若要建立語言套件和 FOD 的內容存放庫,以及 Inbox Apps 套件的存放庫:

  1. 在 Azure VM 上,從必要條件中的鏈接下載 Windows 10 多語言 ISO、FOD 和 Inbox Apps for Windows 10 企業版 多重會話版本 1903/1909 和 2004 映射。

  2. 在 VM 上開啟並掛接 ISO 檔案。

  3. 移至語言套件 ISO,並從 LocalExperiencePacksx64\langpacks 資料夾複製內容,然後將內容貼到檔案共用中。

  4. 移至 FOD ISO 檔案,複製其所有內容,然後貼到檔案共用中。

  5. 移至 [收件匣應用程式] ISO 上的 amd64fre 資料夾,並針對您已備妥的收件匣應用程式,複製存放庫中的內容。

    注意事項

    如果您使用有限的記憶體,請只複製您知道使用者所需語言的檔案。 您可以查看檔案檔名中的語言代碼,以分辨檔案。 例如,法文檔案的名稱中有程序代碼 「fr-FR」。 如需所有可用語言的語言代碼完整清單,請參閱 適用於 Windows 的可用語言套件

    重要事項

    某些語言需要遵循不同命名慣例的附屬套件中包含其他字型。 例如,日文字型檔名包含 「Jpan」。

    日文語言套件的範例,其檔名中有 「Jpan」 語言標記。

  6. 設定語言內容存放庫共用的許可權,讓您可以從將用來建置自定義映像的 VM 取得讀取許可權。

手動建立自定義 Windows 10 企業版 多重會話映像

若要手動建立自訂 Windows 10 企業版 多重工作階段映射:

  1. 部署 Azure VM,然後移至 Azure 資源庫,然後選取您使用的 Windows 10 企業版 多重會話的目前版本。

  2. 部署 VM 之後,請以本機系統管理員身分使用 RDP 連線到 VM。

  3. 請確定您的 VM 具有所有最新的 Windows 匯報。 視需要下載更新並重新啟動 VM。

    重要事項

    安裝語言套件之後,您必須重新安裝映像上安裝的最新累積更新。 如果您未重新安裝最新的累積更新,您可能會遇到錯誤。 如果已安裝最新的累積更新,Windows Update 不會再次提供它;您必須手動重新安裝它。 如需詳細資訊,請參閱 語言概觀

  4. 線上到語言套件、FOD 和 Inbox Apps 檔案共用存放庫,並將它掛接至字母磁碟驅動器 (例如,磁碟驅動器 E) 。

自動建立自定義 Windows 10 企業版 多重會話映像

如果您想要透過自動化程式安裝語言,您可以在PowerShell中設定腳本。 您可以使用下列腳本範例來安裝西班牙文 (西班牙) 、法文 (法國) ,以及適用於 Windows 10 企業版 多重會話版本 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 映射之後,也需要更新收件匣應用程式以支援新增的語言。 您可以使用收件匣應用程式 ISO 中的內容來重新整理預安裝的應用程式,以完成此動作。 若要在 VM 無法存取因特網的環境中執行此重新整理,您可以使用下列 PowerShell 腳本範本範本將程式自動化,並僅更新已安裝的收件匣應用程式版本。

#########################################
## 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 中包含的收件匣應用程式不是預安裝 Windows 應用程式的最新版本。 若要取得所有應用程式的最新版本,您必須使用 Windows 市集應用程式更新應用程式,並在安裝其他語言之後,執行手動搜尋更新。

當您完成時,請務必中斷共享的連線。

完成自定義映像

安裝語言套件之後,您可以安裝任何其他您想要新增至自定義映像的軟體。

完成自定義映像之後,您必須執行系統準備工具 (sysprep) 。

若要執行 sysprep:

  1. 開啟提升權限的命令提示字元,然後執行下列命令將映像一般化:

    C:\Windows\System32\Sysprep\sysprep.exe /oobe /generalize /shutdown
    
  2. 停止 VM,然後依照在 Azure 中建立一般化 VM 的受控映像中的指示,將其擷取到受控映射中。

  3. 您現在可以使用自定義映像來部署 Azure 虛擬桌面主機集區。 若要瞭解如何部署主機集區,請參閱教學課程:使用 Azure 入口網站 建立主機集區

在 Windows 設定應用程式中啟用語言

最後,在部署主機集區之後,您必須將語言新增至每個使用者的語言清單,讓他們可以在 [設定] 功能表中選取他們慣用的語言。

若要確保您的使用者可以選取您安裝的語言,請以使用者身分登入,然後執行下列 PowerShell Cmdlet,將已安裝的語言套件新增至 [語言] 功能表。 您也可以將此文稿設定為在使用者登入其工作階段時啟動的自動化工作或登入腳本。

$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 企業版 多重會話的任何其他問題,請參閱我們的常見問題