Freigeben über


Exemplarische Vorgehensweise: Herunterladen von Satellitenassemblys bei Bedarf mit der API für die ClickOnce-Bereitstellung

Windows Forms-Anwendungen können mit Satellitenassemblys für mehrere Kulturen konfiguriert werden.Eine Satellitenassembly ist eine Assembly, die Anwendungsressourcen für eine Kultur enthält, bei der es sich nicht um die Standardkultur der Anwendung handelt.

Wie unter Lokalisieren von ClickOnce-Anwendungen erläutert, können Sie in ein und dieselbe ClickOnce-Bereitstellung mehrere Satellitenassemblys für mehrere Kulturen aufnehmen.Standardmäßig lädt ClickOnce alle Satellitenassemblys in Ihrer Bereitstellung auf den Clientcomputer herunter, auch wenn ein einzelner Client wahrscheinlich nur eine Satellitenassembly benötigt.

In dieser exemplarischen Vorgehensweise wird veranschaulicht, wie Sie Ihre Satellitenassemblys als optional kennzeichnen und nur die Assembly herunterladen, die ein Clientcomputer für die eigenen aktuellen Kultureinstellungen benötigt.Im folgenden Verfahren werden die in Windows Software Development Kit (SDK) verfügbaren Tools verwendet.Sie können diese Aufgabe auch in Visual Studio ausführen.Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Bedarfsgerechtes Downloaden von Satellitenassemblys mit der API für die ClickOnce-Bereitstellung unter Verwendung des Designers und Exemplarische Vorgehensweise: Bedarfsgerechtes Herunterladen von Satellitenassemblys mit der API für die ClickOnce-Bereitstellung unter Verwendung des Designers und Exemplarische Vorgehensweise: Bedarfsgerechtes Herunterladen von Satellitenassemblys mit der API für die ClickOnce-Bereitstellung unter Verwendung des Designers und Exemplarische Vorgehensweise: Bedarfsgerechtes Herunterladen von Satellitenassemblys mit der API für die ClickOnce-Bereitstellung unter Verwendung des Designers.

HinweisHinweis

Das folgende Codebeispiel legt die Kultur zu Testzwecken programmgesteuert auf ja-JP fest.Wie Sie diesen Code für eine Produktionsumgebung anpassen, erfahren Sie im Abschnitt "Nächste Schritte" weiter unten in diesem Thema.

Vorbereitungsmaßnahmen

In diesem Thema wird davon ausgegangen, dass Sie wissen, wie der Anwendung mit Visual Studio lokalisierte Ressourcen hinzugefügt werden.Ausführliche Anweisungen dazu finden Sie unter Exemplarische Vorgehensweise: Lokalisieren von Windows Forms.

So laden Sie Satellitenassemblys bei Bedarf herunter

  1. Fügen Sie den folgenden Code der Anwendung hinzu, um das bedarfsabhängige Herunterladen von Satellitenassemblys zu aktivieren.

    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. Generieren Sie mit Resgen.exe (Resource File Generator) oder Visual Studio Satellitenassemblys für Ihre Anwendung.

  3. Generieren Sie ein Anwendungsmanifest, oder öffnen Sie das vorhandene Anwendungsmanifest, indem Sie MageUI.exe verwenden.Weitere Informationen zu diesem Tool finden Sie unter MageUI.exe (Tool zum Generieren und Bearbeiten von Manifesten, grafischer Client).

  4. Klicken Sie auf die Registerkarte Dateien.

  5. Klicken Sie auf die Schaltfläche mit den Auslassungszeichen (...), und wählen Sie das Verzeichnis aus, das alle Assemblys und Dateien der Anwendung enthält, einschließlich der Satellitenassemblys, die Sie mit Resgen.exe generiert haben.(Der Name einer Satellitenassembly hat folgendes Format: ISO-Code\Anwendungsname.resources.dll. Dabei entspricht ISO-Code einem Sprachbezeichner im Format RFC 1766.)

  6. Klicken Sie auf Auffüllen, um die Dateien zu Ihrer Bereitstellung hinzuzufügen.

  7. Aktivieren Sie für jede Satellitenassembly das Kontrollkästchen Optional.

  8. Legen Sie für das Gruppenfeld jeder Satellitenassembly ihren ISO-Sprachbezeichner fest.Für eine japanische Satellitenassembly würden Sie beispielsweise den Downloadgruppennamen ja-JP angeben.Damit kann der Code, den Sie in Schritt 1 hinzugefügt haben, je nach der Einstellung der CurrentUICulture-Benutzereigenschaft die entsprechende Satellitenassembly herunterladen.

Nächste Schritte

In einer Produktionsumgebung müssen Sie im Codebeispiel wahrscheinlich die Zeile entfernen, die für CurrentUICulture einen bestimmten Wert festlegt, denn auf Clientcomputern ist standardmäßig der richtige Wert festgelegt.Wenn z. B. Ihre Anwendung auf einem japanischen Clientcomputer ausgeführt wird, ist CurrentUICulture standardmäßig ja-JP.Diesen Wert programmgesteuert festzulegen bietet eine gute Möglichkeit zum Testen Ihrer Satellitenassemblys, bevor Sie Ihre Anwendung bereitstellen.

Siehe auch

Konzepte

Lokalisieren von ClickOnce-Anwendungen