Share via


Tutorial: Descargar ensamblados satélite a petición con la API de implementación de ClickOnce mediante el diseñador

Actualización: noviembre 2007

Las aplicaciones de formularios Windows Forms se pueden configurar para varias referencias culturales utilizando 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.

Como se describe en Implementación y localización de ClickOnce, se pueden 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 requiera solamente un ensamblado satélite.

Este tutorial muestra cómo marcar los ensamblados satélite como opcionales y cómo descargar sólo el ensamblado que necesita un equipo cliente para la configuración de la referencia cultural actual.

Nota:

Para poder realizar pruebas, los ejemplos de código siguientes establecen 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 cómo ajustar este código para un entorno de producción.

Requisitos previos

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

Para marcar los ensamblados satélite como opcionales

  1. Genere el proyecto. Se generarán los ensamblados satélite para todas las referencias culturales a las que se está localizando.

  2. Haga clic con el botón secundario del mouse en el nombre del proyecto en el Explorador de soluciones y haga clic en Propiedades.

  3. Haga clic en la ficha Publicar y, a continuación, haga clic en Archivos de aplicación.

  4. Active la casilla Mostrar todos los archivos para mostrar los ensamblados satélite. De forma predeterminada, todos los ensamblados satélite se incluyen en la implementación y están visibles en este cuadro de diálogo.

    Un ensamblado satélite tiene un nombre en el formulario isoCode\ApplicationName.resources.dll, donde isoCode es un identificador de idioma en formato RFC 1766.

  5. Haga clic en Nuevo... en la lista Grupo de descarga de cada identificador de idioma. Cuando se le pida un nombre de grupo de descarga, escriba el identificador de idioma. Por ejemplo, para un ensamblado satélite en japonés, debería especificar el nombre de grupo de descarga ja-JP.

  6. Cierre el cuadro de diálogo Archivos de aplicación.

Para descargar los ensamblados satélite a petición en C#

  1. Abra el archivo Program.cs. Si no ve este archivo en el Explorador de soluciones, seleccione su proyecto y, en el menú Proyecto, haga clic en Mostrar todos los archivos.

  2. Utilice el siguiente código para descargar el ensamblado satélite adecuado e iniciar su aplicación.

    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 this error to the user, because a satellite
                            // assembly may not exist if the user's culture and the application's
                            // default culture match.
                        }
                    }
                }
            }
    
        }
    }
    

Para descargar los ensamblados satélite a petición en Visual Basic

  1. En la ventana Propiedades de la aplicación, haga clic en la ficha Aplicación.

  2. En la parte inferior de la página de ficha, haga clic en Ver eventos de aplicaciones.

  3. Agregue las siguientes importaciones al principio del archivo ApplicationEvents.VB.

    Imports System.Deployment.Application
    Imports System.Globalization
    Imports System.Threading
    
  4. Agregue el código siguiente a la clase MyApplication.

    Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
        Thread.CurrentThread.CurrentUICulture = New CultureInfo("ja-JP")
        GetSatelliteAssemblies(Thread.CurrentThread.CurrentUICulture.ToString())
    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 this error to the user, because a satellite
                    ' assembly may not exist if the user's culture and the application's
                    ' default culture match.
                End Try
            End If
        End If
    End Sub
    

Pasos siguientes

En un entorno de producción, es probable que necesite quitar la línea que establece CurrentUICulture en un valor específico de los ejemplos de código, porque los equipos cliente tendrán el valor correcto establecido de forma predeterminada. Si, por ejemplo, su aplicación se ejecuta en un equipo cliente japonés, CurrentUICulture será ja-JP de forma predeterminada. El establecimiento del valor mediante programación es una excelente forma de probar los ensamblados satélite antes de implementar la aplicación.

Vea también

Tareas

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

Conceptos

Implementación y localización de ClickOnce