Sdílet prostřednictvím


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

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 tématu Lokalizace 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í 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.

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říklady 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.

Označení satelitních sestavení jako volitelných

  1. Sestavte svůj projekt. Tím se vygenerují satelitní sestavení pro všechny jazykové verze, do které lokalizujete.

  2. V Průzkumník řešení klikněte pravým tlačítkem na název projektu a klikněte na Vlastnosti.

  3. Klikněte na kartu Publikovat a potom klikněte na Soubory aplikací.

  4. Chcete-li zobrazit satelitní sestavení, zaškrtněte políčko Zobrazit všechny soubory . Ve výchozím nastavení budou všechna satelitní sestavení zahrnuta do vašeho nasazení a budou viditelná v tomto dialogovém okně.

    Satelitní sestavení bude mít název ve formátu <isoCode>\ApplicationName.resources.dll, kde <isoCode> je identifikátor jazyka ve formátu RFC 1766.

  5. V seznamu Stáhnout skupinu klikněte na Tlačítko Novýpro každý identifikátor jazyka. Po zobrazení výzvy k zadání názvu skupiny stahování zadejte identifikátor jazyka. Například pro japonské satelitní sestavení byste zadali název ja-JPskupiny stahování .

  6. Zavřete dialogové okno Soubory aplikací.

Stažení satelitních sestavení na vyžádání v jazyce C#

  1. Otevřete soubor Program.cs. Pokud tento soubor v Průzkumník řešení nevidíte, vyberte projekt a v nabídce Projekt klikněte na Zobrazit všechny soubory.

  2. Ke stažení vhodného satelitního sestavení a spuštění aplikace použijte následující kód.

    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 this error to the user, because a satellite
                            // assembly may not exist if the user's culture and the application's
                            // default culture match.
                        }
                    }
                }
            }
    
        }
    }
    

Stažení satelitních sestavení na vyžádání v jazyce Visual Basic

  1. V okně Vlastnosti aplikace klikněte na kartu Aplikace .

  2. V dolní části stránky karty klikněte na Zobrazit události aplikace.

  3. Na začátek souboru ApplicationEvents.VB přidejte následující importy.

    Imports System.Deployment.Application
    Imports System.Globalization
    Imports System.Threading
    
  4. Do třídy MyApplication přidejte následující kód.

    Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
        Thread.CurrentThread.CurrentUICulture = New CultureInfo("ja-JP")
        GetSatelliteAssemblies(Thread.CurrentThread.CurrentUICulture.ToString())
    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 this error to the user, because a satellite
                    ' assembly may not exist if the user's culture and the application's
                    ' default culture match.
                End Try
            End If
        End If
    End Sub
    

Další kroky

V produkčním prostředí budete pravděpodobně muset odebrat řádek v příkladech 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í. Programové nastavení je dobrým způsobem, jak otestovat satelitní sestavení před nasazením aplikace.