Przewodnik: pobieranie zestawów satelickich na żądanie przy użyciu interfejsu API wdrażania ClickOnce

Aplikacje Windows Forms można skonfigurować dla wielu kultur za pomocą zestawów satelickich. Zestaw satelitarny to zestaw zawierający zasoby aplikacji dla kultury innej niż domyślna kultura aplikacji.

Zgodnie z opisem w temacie Lokalizowanie aplikacji ClickOnce można uwzględnić wiele zestawów satelitarnych dla wielu kultur w ramach tego samego wdrożenia Technologii ClickOnce. Domyślnie funkcja ClickOnce pobierze wszystkie zestawy satelitarne we wdrożeniu na maszynę kliencką, chociaż jeden klient prawdopodobnie będzie wymagał tylko jednego zestawu satelitarnego.

W tym przewodniku pokazano, jak oznaczyć zestawy satelitarne jako opcjonalne i pobrać tylko zestaw, który maszyna kliencka potrzebuje dla bieżących ustawień kultury. Poniższa procedura używa narzędzi dostępnych w zestawie Sdk (Software Development Kit) systemu Windows. To zadanie można również wykonać w programie Visual Studio. Zobacz również Przewodnik: pobieranie zestawów satelickich na żądanie przy użyciu interfejsu API wdrażania Technologii ClickOnce przy użyciu Projektant lub Przewodnik: pobieranie zestawów satelickich na żądanie przy użyciu interfejsu API wdrażania ClickOnce przy użyciu Projektant.

Uwaga

Klasy ApplicationDeployment i interfejsy API w System.Deployment.Application przestrzeni nazw nie są obsługiwane w wersjach .NET Core i .NET 5 i nowszych. W programie .NET 7 jest obsługiwana nowa metoda uzyskiwania dostępu do właściwości wdrażania aplikacji. Aby uzyskać więcej informacji, zobacz Access ClickOnce deployment properties in .NET (Uzyskiwanie dostępu do właściwości wdrożenia ClickOnce na platformie .NET). Platforma .NET 7 nie obsługuje odpowiedników metod ApplicationDeployment.

Uwaga

W celach testowych poniższy przykład kodu programowo ustawia kulturę na ja-JPwartość . Zobacz sekcję "Następne kroki" w dalszej części tego tematu, aby uzyskać informacje na temat dostosowywania tego kodu dla środowiska produkcyjnego.

Wymagania wstępne

W tym temacie założono, że wiesz, jak dodać zlokalizowane zasoby do aplikacji przy użyciu programu Visual Studio. Aby uzyskać szczegółowe instrukcje, zobacz Przewodnik: lokalizowanie formularzy systemu Windows.

Aby pobrać zestawy satelitarne na żądanie

  1. Dodaj następujący kod do aplikacji, aby umożliwić pobieranie zestawów satelickich na żądanie.

    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. Generuj zestawy satelitarne dla aplikacji przy użyciu Resgen.exe (Generator plików zasobów) lub Visual Studio.

  3. Wygeneruj manifest aplikacji lub otwórz istniejący manifest aplikacji przy użyciu MageUI.exe. Aby uzyskać więcej informacji na temat tego narzędzia, zobacz MageUI.exe (Narzędzie tworzenia i edycji manifestów, klient graficzny).

  4. Kliknij kartę Pliki .

  5. Kliknij przycisk wielokropka (...) i wybierz katalog zawierający wszystkie zestawy i pliki aplikacji, w tym zestawy satelitarne wygenerowane przy użyciu Resgen.exe. (Zestaw satelitarny będzie miał nazwę w postaci <isoCode\ApplicationName.resources.dll, gdzie <isoCode>> jest identyfikatorem języka w formacie RFC 1766).

  6. Kliknij przycisk Wypełnij , aby dodać pliki do wdrożenia.

  7. Zaznacz pole wyboru Opcjonalne dla każdego zestawu satelitarnego.

  8. Ustaw pole grupy dla każdego zestawu satelitarnego na identyfikator języka ISO. Na przykład w przypadku japońskiego zestawu satelitarnego należy określić nazwę grupy pobierania .ja-JP Spowoduje to włączenie kodu dodanego w kroku 1 w celu pobrania odpowiedniego zestawu satelitarnego, w zależności od ustawienia właściwości użytkownika CurrentUICulture .

Następne kroki

W środowisku produkcyjnym prawdopodobnie trzeba będzie usunąć wiersz w przykładzie kodu, który ustawia CurrentUICulture wartość na określoną wartość, ponieważ maszyny klienckie będą domyślnie miały prawidłową wartość. Gdy aplikacja działa na japońskiej maszynie klienckiej, na przykład będzie CurrentUICultureja-JP domyślnie. Ustawienie tej wartości programowo jest dobrym sposobem na przetestowanie zestawów satelickich przed wdrożeniem aplikacji.