Tutorial: Descargar ensamblados satélite a petición con la API de implementación de ClickOnce

Actualización: noviembre 2007

Las aplicaciones de Windows Forms pueden configurarse para varias referencias culturales mediante el uso de ensamblados satélite. Un ensamblado satélite es un ensamblado que contiene recursos de aplicación para una referencia cultural distinta de la referencia cultural predeterminada de la aplicación.

Tal y como se explica en Implementación y localización de ClickOnce, puede incluir varios ensamblados satélite para varias referencias culturales dentro de la misma implementación de ClickOnce. De forma predeterminada, ClickOnce descargará todos los ensamblados satélite de la implementación en el equipo cliente, aunque es posible que un único cliente sólo requiera un ensamblado satélite.

En este tutorial se muestra cómo marcar los ensamblados satélite como opcionales y descargar únicamente el ensamblado que un equipo cliente necesite para la configuración de su referencia cultural actual. En el siguiente procedimiento se utilizan las herramientas disponibles en Kit de desarrollo de software de Windows (SDK). También puede realizar esta tarea en Visual Studio.

Nota:

El siguiente ejemplo de código, que se proporciona con propósito de prueba, establece la referencia cultural en ja-JP mediante programación. Consulte la sección "Pasos siguientes" más adelante en este tema para obtener información sobre la forma de ajustar este código para un entorno de producción.

Requisitos previos

En este tema se da por sentado que sabe agregar recursos localizados a la aplicación mediante Microsoft Visual Studio 2005. Para obtener instrucciones detalladas, vea Tutorial: Adaptar formularios Windows Forms.

Para descargar ensamblados satélite a petición

  1. Agregue el siguiente código a la aplicación para habilitar la descarga a petición de ensamblados satélite.

    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. Genere los ensamblados satélite para la aplicación utilizando Generador de archivos de recursos (Resgen.exe) o Visual Studio.

  3. Genere un manifiesto de aplicación o abra un manifiesto de aplicación existente utilizando MageUI.exe. Para obtener más información acerca de esta herramienta, vea Herramienta de generación y edición de manifiestos, cliente gráfico (MageUI.exe).

  4. Haga clic en la ficha Archivos.

  5. Haga clic en el botón de puntos suspensivos (...) y seleccione el directorio que contenga todos los ensamblados y archivos de la aplicación, incluidos los ensamblados satélite generados mediante Resgen.exe. (El nombre de un ensamblado satélite presentará la forma isoCode\ApplicationName.resources.dll, donde isoCode es el identificador de idioma en formato RFC 1766.)

  6. Haga clic en Rellenar para agregar los archivos a la implementación.

  7. Active la casilla de verificación Opcional de cada ensamblado satélite.

  8. Establezca el campo de grupo de cada ensamblado satélite en su identificador de idioma ISO. Por ejemplo, para un ensamblado satélite japonés, debe especificar el nombre de grupo de descarga ja-JP. De este modo, se habilitará el código agregado en el paso 1 para descargar el ensamblado satélite adecuado, en función del valor de la propiedad CurrentUICulture del usuario.

Pasos siguientes

En un entorno de producción, es probable que necesite quitar la línea del ejemplo de código que establece CurrentUICulture en un valor concreto, ya que los equipos cliente tendrán establecido el valor correcto de forma predeterminada. Cuando la aplicación se ejecute, por ejemplo, en un equipo cliente japonés, la propiedad CurrentUICulture será ja-JP de forma predeterminada. Es una buena idea establecer este valor mediante programación para probar los ensamblados satélite antes de implementar la aplicación.

Vea también

Conceptos

Implementación y localización de ClickOnce