Podrobné pokyny: Stahování satelitních sestavení na požádání s ClickOnce nasazením rozhraní API
Aplikace modelu Windows Forms lze nakonfigurovat pro více jazykových verzí prostřednictvím použití satelitních sestavení. Satelitní sestavení je sestavení obsahující prostředky aplikací pro jinou jazykovou verzi než výchozí jazykovou verzi dané aplikace.
Jak je popsáno v Lokalizování aplikací ClickOnce, můžete zahrnout více satelitních sestavení pro více jazykových verzí v rámci stejného nasazení ClickOnce. Ve výchozím nastavení stáhne ClickOnce všechny satelitní sestavení v nasazení do počítače klienta, přestože tento klient bude pravděpodobně vyžadovat pouze jedno satelitní sestavení.
V temto návodu je ukázáno, jak označit Vaše satelitní sestavení jako volitelné a stáhnout pouze sestavení, které klientský počítač potřebuje pro jeho aktuální nastavení jazykové verze. Následující procedura používá nástroje dostupné v Windows Software Development Kit (SDK). Tuto úlohu lze provést také v Visual Studio. Další informace naleznete v tématu Podrobné pokyny: Stahování satelitních sestavení na vyžádání s rozhraním API nasazení ClickOnce s použitím designeru a Názorný postup: Stahování satelitní sestavení na požádání s nasazení technologie ClickOnce rozhraní API pomocí Návrháře.
Poznámka
Pro účely testování následující příklad kódu programově nastavuje jazykovou verzi na ja-JP. V oddílu "Další postup" dále v tomto tématu naleznete informace, jak upravit tento kód pro výrobní prostředí.
Požadavky
Toto téma předpokládá, že víte, jak přidat lokalizované prostředky do Vaší aplikace pomocí Visual Studia. Podrobnější instrukce získáte v tématu Walkthrough: Localizing Windows Forms.
Pro stažení satelitních sestavení na požádání
Přidejte následující kód do vaší aplikace pro povolení stahování satelitních sestavení na požádání.
Imports System.Deployment.Application Imports System.Globalization Imports System.Threading Public Class Form1 Shared Sub Main(ByVal args As String()) Application.EnableVisualStyles() Thread.CurrentThread.CurrentUICulture = New CultureInfo("ja-JP") GetSatelliteAssemblies(Thread.CurrentThread.CurrentUICulture.ToString()) Application.Run(New Form1()) End Sub Private Shared Sub GetSatelliteAssemblies(ByVal groupName As String) If (ApplicationDeployment.IsNetworkDeployed) Then Dim deploy As ApplicationDeployment = ApplicationDeployment.CurrentDeployment If (deploy.IsFirstRun) Then Try deploy.DownloadFileGroup(groupName) Catch de As DeploymentException ' Log error. Do not report error to the user, as there may not be a satellite ' assembly if the user's culture and the application's default culture match. End Try End If End If End Sub End Class
using System; using System.Collections.Generic; using System.Windows.Forms; using System.Threading; using System.Globalization; using System.Deployment.Application; using System.Reflection; namespace ClickOnce.SatelliteAssemblies { static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Thread.CurrentThread.CurrentUICulture = new CultureInfo("ja-JP"); // Call this before initializing the main form, which will cause the resource manager // to look for the appropriate satellite assembly. GetSatelliteAssemblies(Thread.CurrentThread.CurrentCulture.ToString()); Application.Run(new Form1()); } static void GetSatelliteAssemblies(string groupName) { if (ApplicationDeployment.IsNetworkDeployed) { ApplicationDeployment deploy = ApplicationDeployment.CurrentDeployment; if (deploy.IsFirstRun) { try { deploy.DownloadFileGroup(groupName); } catch (DeploymentException de) { // Log error. Do not report error to the user, as there may not be a satellite // assembly if the user's culture and the application's default culture match. } } } } } }
Generujte satelitní sestavení pro vaší aplikaci pomocí Resgen.exe (Resource File Generator) nebo Visual Studio.
Generujte manifest aplikace nebo otevřete existující manifest aplikace pomocí MageUI.exe. Další informace o tomto nástroji naleznete v tématu MageUI.exe (Manifest Generation and Editing Tool, Graphical Client).
Klepněte na kartu Soubory.
Klikněte na tlačítko tři tečky (... ) a zvolte adresář obsahující všechny sestavení aplikace a soubory, včetně satelitních sestavení, které jste generovali pomocí Resgen.exe. (Satelitní sestavení bude mít název ve formě isoCode\ApplicationName.resources.dll, kde isoCode je jazykový identifikátor v RFC 1766 formátu.)
Klikněte na Naplnit pro přidání souborů k nasazení.
Označte zaškrtávací políčko Volitelné pro každé satelitní sestavení.
Nastavte pole skupiny pro každé satelitní sestavení na jeho jazykovém identifikátoru ISO. Například pro japonské satelitní sestavení byste měli zadat název skupiny stažení ja-JP. To umožní kódu, který jste přidali v kroku 1, stáhnout odpovídající satelitní sestavení v závislosti na nastavení vlastnosti daného uživatele CurrentUICulture.
Další kroky
V provozním prostředí bude pravděpodobně nutné odebrat řádek z ukázkových příkladů kódu, který nastavuje CurrentUICulture na určitou hodnotu, protože klientské počítače budou mít správnou hodnotu ve výchozím nastavení. Při spuštění aplikace na japonském počítači klienta, například CurrentUICulture bude ve výchozím nastavení ja-JP. Nastavení této hodnoty programově představuje vhodný způsob testování vašich satelitních sestavení před nasazením aplikace.