Compartir a través de


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

Las aplicaciones de Windows Forms pueden configurarse para varias referencias culturales mediante 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 Localizar aplicaciones ClickOnce, se pueden incluir varios ensamblados satélite para varias referencias culturales en la misma implementación 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 solo 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 el Kit de desarrollo de software de Windows (SDK).Esta tarea también puede realizarse en Visual Studio.Para obtener más información, vea Tutorial: Descargar ensamblados satélite a petición con la API de implementación de ClickOnce mediante el diseñador y Tutorial: Descargar ensamblados satélite a petición con la API de implementación de ClickOnce mediante el diseñador y Tutorial: Descargar ensamblados satélite a petición con la API de implementación de ClickOnce mediante el diseñador y Tutorial: Descargar ensamblados satélite a petición con la API de implementación de ClickOnce mediante el diseñador.

[!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 Visual Studio.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.

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

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

  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 una ensamblado satélite tiene el formato códigoISO\nombreDeAplicación.resources.dll, donde códigoISO es un identificador de idioma en formato RFC 1766.

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

  7. Active la casilla 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

Localizar aplicaciones ClickOnce