Compartir a través de


Guía paso a paso: Descarga de ensamblados satélite a petición con la API de implementación ClickOnce

Las aplicaciones de Windows Forms se pueden configurar para varias culturas 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.

Como se describe en Localizar aplicaciones ClickOnce, puede incluir varios ensamblados satélite para varias culturas dentro de la misma implementación de ClickOnce. De forma predeterminada, ClickOnce descargará todos los ensamblados satélite de la implementación en la máquina cliente, aunque probablemente un solo cliente necesitará solo un ensamblado satélite.

En este tutorial se muestra cómo marcar los ensamblados satélite como opcionales y descargar solo el ensamblado que necesita una máquina cliente para su configuración 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 en Visual Studio. Consulte también Tutorial: Descarga de ensamblados satélite a petición con la API de implementación clickOnce mediante el Diseñador o tutorial: Descargar ensamblados satélite a petición con la API de implementación ClickOnce mediante el Diseñador.

Nota:

La ApplicationDeployment clase y las API del System.Deployment.Application espacio de nombres no se admiten en .NET Core y .NET 5 ni en 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 Access ClickOnce deployment properties in .NET (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 ejemplo de código siguiente establece mediante programación la referencia cultural en ja-JP. 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.

Prerrequisitos

En este tema se supone que sabe cómo agregar recursos localizados a la aplicación mediante Visual Studio. Para obtener instrucciones detalladas, consulte Tutorial: Localizar formularios Windows Forms.

Para descargar ensamblados satélite a petición

  1. Agregue el código siguiente 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 ensamblados satélite para la aplicación mediante 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 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 pestaña Archivos .

  5. Haga clic en el botón de elipse (...) y seleccione el directorio que contiene todos los ensamblados y archivos de la aplicación, incluidos los ensamblados satélite que generó mediante Resgen.exe. (Un ensamblado satélite tendrá un nombre en el formato <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 para cada ensamblado satélite.

  8. Establezca el campo de grupo de cada ensamblaje satélite a su identificador de idioma ISO. Por ejemplo, para un ensamblado satélite japonés, especificaría un nombre de grupo de descarga de ja-JP. Esto permitirá que el código que añadió en el paso 1 descargue el ensamblado satélite adecuado en función de la configuración de la propiedad del usuario CurrentUICulture.

Pasos siguientes

En un entorno de producción, es probable que tenga que quitar la línea del ejemplo de código que establece CurrentUICulture en un valor específico, ya que las máquinas cliente tendrán el valor correcto establecido 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.