Compartir a través de


Tutorial: Descarga de 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 utilizando ensamblados satélite. Un ensamblado satélite es un ensamblado que contiene los recursos de aplicación para una referencia cultural que no sea la referencia cultural predeterminada de la aplicación.

Tal y como se describe en Localización de aplicaciones ClickOnce, puede incluir varios ensamblados satélite para varias referencias culturales en la misma implementación de ClickOnce. De forma predeterminada, ClickOnce descargará todos los ensamblados satélite en su implementación en el equipo cliente, aunque un cliente individual probablemente solo requiera un único ensamblado satélite.

En este tutorial se demuestra cómo marcar los ensamblados satélite como opcionales y descargar únicamente el ensamblado que necesite un equipo cliente para la configuración de su referencia cultural actual. En el procedimiento siguiente se usan las herramientas disponibles en el kit de desarrollo de software (SDK) de Windows. También puede realizar esta tarea mediante Visual Studio. Consulte también Tutorial: Descarga de ensamblados satélite a petición con la API de implementación de ClickOnce mediante el diseñador o Tutorial: Descarga de ensamblados satélite a petición con la API de implementación de ClickOnce mediante el diseñador.

Nota

La clase ApplicationDeployment y las API del espacio de nombres System.Deployment.Application no se admiten en .NET Core y .NET 5 y versiones posteriores. En .NET 7 se admite un nuevo método de acceso a las propiedades de implementación de aplicaciones. Para obtener más información, consulte Acceso a las propiedades de implementación de ClickOnce en .NET. .NET 7 no admite el equivalente de los métodos ApplicationDeployment.

Nota:

Con fines de prueba, el siguiente ejemplo de código establece la referencia cultural en ja-JPmediante programación. Vea 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 da por sentado que sabe agregar recursos localizados a la aplicación mediante Visual Studio. Para obtener instrucciones detalladas, vea Tutorial: Localización de 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 de la aplicación mediante Resgen.exe (el generador de archivos de recursos) o Visual Studio.

  3. Genere un manifiesto de aplicación o abra el manifiesto de aplicación existente mediante MageUI.exe. Para obtener más información sobre esta herramienta, consulte 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 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 los ensamblados satélite tiene la siguiente forma: <isoCode>\ApplicationName.resources.dll, donde <isoCode> 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, probablemente tenga que quitar la línea en el ejemplo de código que establece CurrentUICulture en un valor específico porque los equipos cliente tendrán establecido el valor correcto de forma predeterminada. Cuando la aplicación se ejecute en un equipo cliente japonés, por ejemplo, CurrentUICulture será ja-JP de forma predeterminada. Establecer este valor mediante programación es una buena manera de probar los ensamblados satélite antes de implementar la aplicación.