Udostępnij za pośrednictwem


Instruktaż: Pobieranie zestawami satelity na żądanie z wdrażania ClickOnce API

Windows Forms aplikacji można skonfigurować wiele kultur, korzystając z zestawami satelity.A zestawu satelickiego jest to zespół, który zawiera zasoby aplikacji dla kultury, inne niż aplikacja domyślną kulturę.

Jak już wspomniano w Lokalizowanie ClickOnce aplikacji, może zawierać wiele zestawów satelitarnych dla wielu kultur, w tym samym ClickOnce wdrażania.Domyślnie ClickOnce pobierze wszystkie zestawy wdrożono do komputera klienckiego, mimo że pojedynczego klienta będzie prawdopodobnie wymagają zestawu satelickiego tylko jeden.

W tym instruktażu demonstruje, jak znak swoje zestawy jako opcjonalne i pobrać Zgromadzenia, komputer kliencki musi na jego bieżące ustawienia kultury.W poniższej procedurze użyto narzędzia dostępne w Windows Software Development Kit (SDK).Można również wykonać to zadanie, w Visual Studio.Aby uzyskać więcej informacji, zobacz Instruktaż: Pobieranie zestawami satelity na żądanie z wdrażania ClickOnce API za pomocą projektanta.

[!UWAGA]

Do celów testowych w poniższym przykładzie kodu programowo ustawia kultury ja-JP.Zobacz sekcję "Następne kroki" w dalszej części tego tematu, aby uzyskać informacje o sposobach dostosowywania tego kodu do środowiska produkcyjnego.

Wymagania wstępne

W tym temacie założono, że wiesz, jak dodać zlokalizowanych zasobów do aplikacji przy użyciu programu Visual Studio.Aby uzyskać szczegółowe instrukcje, zobacz Instruktaż: Lokalizowanie Windows Forms.

Aby pobrać zestawy na żądanie

  1. Dodaj następujący kod do aplikacji, aby umożliwić pobieranie zestawami satelity na żądanie.

    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. Wygenerować zestawy aplikacji za pomocą ResGen.exe (Generator pliku zasobów) lub Visual Studio.

  3. Generowanie manifest aplikacji lub Otwórz istniejący manifest aplikacji, za pomocą MageUI.exe.Aby uzyskać więcej informacji na temat tego narzędzia, zobacz MageUI.exe (manifestu generacji i edycji narzędzia graficzne klienta).

  4. Kliknij przycisk pliki kartę.

  5. Kliknij przycisk wielokropka przycisku (...) i wybierz katalog zawierający wszystkie zespoły i pliki, łącznie z zestawami satelity wygenerowanego Resgen.exe aplikacji.(Zestawu satelickiego będzie mieć nazwę w postaci isoCode\ApplicationName.resources.dll, gdzie isoCode to identyfikator języka w formacie RFC 1766.)

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

  7. Wybierz Opcjonalnie pole wyboru dla każdego zestawu satelickiego.

  8. Ustawienie pola Grupa dla każdego zestawu satelickiego jego identyfikator języka ISO.Na przykład dla zestawu japońskiego satelitarnej, to określić nazwę grupy pobierania z ja-JP.Umożliwi to kod zostanie dodany w kroku 1, aby pobrać zestawu satelickiego właściwe, w zależności od użytkownika CurrentUICulture ustawienie właściwości.

Następne kroki

W środowisku produkcyjnym, prawdopodobnie trzeba będzie usunąć linię w przykładzie kodu, który ustawia CurrentUICulture do określonej wartości, ponieważ klient maszyny będzie poprawna wartość ustawiono domyślnie.Gdy aplikacja działa na komputerze klienckim japońskich, na przykład, CurrentUICulture będzie ja-JP domyślnie.Ustawienie tej wartości programowo jest dobrym sposobem sprawdzenia zestawów sieci satelitarnych, przed wdrożeniem aplikacji.

Zobacz też

Koncepcje

Lokalizowanie ClickOnce aplikacji