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

Aktualisiert: November 2007

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 in ClickOnce-Bereitstellung und Lokalisierung erläutert, können Sie in ein und dieselbe ClickOnce-Bereitstellung mehrere Satellitenassemblys für mehrere Kulturen aufnehmen. Standardmäßig downloadet ClickOnce alle Satellitenassemblys in Ihrer Bereitstellung auf den Clientcomputer, 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 downloaden, 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.

Hinweis:

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 Microsoft Visual Studio 2005 lokalisierte Ressourcen hinzugefügt werden. Detaillierte Anweisungen dazu finden Sie unter Exemplarische Vorgehensweise: Lokalisieren von Windows Forms.

So downloaden Sie Satellitenassemblys bei Bedarf

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

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

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

  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 Ihrer Anwendung enthält, auch die Satellitenassemblys, die Sie mit Resgen.exe generiert haben. (Eine Satellitenassembly hat einen Namen im Format isoCode\ApplicationName.resources.dll, wobei isoCode für einen Sprachbezeichner im Format von RFC 1766 steht.)

  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 downloaden.

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

ClickOnce-Bereitstellung und Lokalisierung