Návod: Stažení satelitních sestavení na vyžádání pomocí rozhraní API nasazení ClickOnce

model Windows Forms aplikace lze nakonfigurovat pro více jazykových verzí pomocí satelitních sestavení. Satelitní sestavení je sestavení, které obsahuje prostředky aplikace pro jinou jazykovou verzi než výchozí jazykovou verzi aplikace.

Jak je popsáno v aplikacích Localize 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í clickOnce stáhne všechna satelitní sestavení v nasazení do klientského počítače, i když jeden klient bude pravděpodobně vyžadovat pouze jedno satelitní sestavení.

Tento názorný postup ukazuje, jak označit satelitní sestavení jako volitelná a stáhnout pouze sestavení, které klientský počítač potřebuje pro aktuální nastavení jazykové verze. Následující postup používá nástroje dostupné v sadě Windows Software Development Kit (SDK). Tuto úlohu můžete provést také v sadě Visual Studio. Viz také návod : Stažení satelitních sestavení na vyžádání pomocí rozhraní API pro nasazení ClickOnce pomocí Návrháře nebo Návod: Stažení satelitních sestavení na vyžádání pomocí rozhraní API pro nasazení ClickOnce pomocí Návrháře.

Poznámka:

Třída ApplicationDeployment a rozhraní API v System.Deployment.Application oboru názvů nejsou podporovány v .NET Core a .NET 5 a novějších verzích. V .NET 7 se podporuje nová metoda přístupu k vlastnostem nasazení aplikace. Další informace naleznete v tématu Access ClickOnce vlastnosti nasazení v .NET. .NET 7 nepodporuje ekvivalent metod ApplicationDeployment.

Poznámka:

Pro účely testování následující příklad kódu programově nastaví jazykovou verzi na ja-JP. Informace o tom, jak upravit tento kód pro produkční prostředí, najdete v části Další kroky dále v tomto tématu.

Požadavky

V tomto tématu se předpokládá, že víte, jak do aplikace přidat lokalizované prostředky pomocí sady Visual Studio. Podrobné pokyny najdete v tématu Návod: Lokalizace formulářů Windows.

Stažení satelitních sestavení na vyžádání

  1. Přidejte do aplikace následující kód, který povolí stahování satelitních sestavení na vyžádání.

    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. Generování satelitních sestavení pro vaši aplikaci pomocí Resgen.exe (Generátor souborů prostředků) nebo sady Visual Studio.

  3. Vygenerujte manifest aplikace nebo otevřete existující manifest aplikace pomocí MageUI.exe. Další informace o tomto nástroji najdete v tématu MageUI.exe (generování manifestu a nástroj pro úpravy, grafický klient).

  4. Klikněte na kartu Soubory .

  5. Klikněte na tlačítko se třemi tečkami (...) a vyberte adresář obsahující všechna sestavení a soubory vaší aplikace, včetně satelitních sestavení, která jste vygenerovali pomocí Resgen.exe. (Satelitní sestavení bude mít ve formuláři < název.isoCode\ApplicationName.resources.dll, kde <isoCode>> je identifikátor jazyka ve formátu RFC 1766.)

  6. Kliknutím na Naplnit přidejte soubory do nasazení.

  7. Zaškrtněte políčko Volitelné pro každé satelitní sestavení.

  8. Nastavte pole skupiny pro každé satelitní sestavení na jeho identifikátor jazyka ISO. Například pro japonské satelitní sestavení byste zadali název ja-JPskupiny stahování . Tím umožníte, aby kód, který jste přidali v kroku 1, stáhl odpovídající satelitní sestavení v závislosti na nastavení vlastnosti uživatele CurrentUICulture .

Další kroky

V produkčním prostředí budete pravděpodobně muset odebrat řádek v příkladu kódu, který nastaví CurrentUICulture konkrétní hodnotu, protože klientské počítače budou mít ve výchozím nastavení správnou hodnotu. Když se vaše aplikace spustí na japonském klientském počítači, CurrentUICultureja-JP bude například ve výchozím nastavení. Nastavení této hodnoty prostřednictvím kódu programu je dobrým způsobem, jak otestovat satelitní sestavení před nasazením aplikace.