Sdílet prostřednictvím


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í

  1. 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.
                        }
                    }
                }
            }
    
        }
    }
    
  2. Generujte satelitní sestavení pro vaší aplikaci pomocí Resgen.exe (Resource File Generator) nebo Visual Studio.

  3. 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).

  4. Klepněte na kartu Soubory.

  5. 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.)

  6. Klikněte na Naplnit pro přidání souborů k nasazení.

  7. Označte zaškrtávací políčko Volitelné pro každé satelitní sestavení.

  8. 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.

Viz také

Koncepty

Lokalizování aplikací ClickOnce