Compartilhar via


Passo a passo: como baixar os assemblies satélites sob demanda com a API de implantação do ClickOnce

Os aplicativos do Windows Forms Windows Forms podem ser configurados para várias culturas por meio do uso de assemblies satélites. Um assembly satélite é um assembly que contém recursos de aplicativo para uma cultura diferente da cultura padrão do aplicativo.

Conforme abordado Localizar aplicativos do ClickOnce, você pode incluir vários assemblies satélites para várias culturas na mesma implantação do ClickOnce. Por padrão, o ClickOnce baixará todos os assemblies satélites em sua implantação no computador cliente, apesar de um único cliente exigir apenas um assembly satélite.

Essas instruções mostram como marcar seus assemblies satélites como opcionais e baixar somente o assembly que o computador cliente precisa para suas configurações de cultura. O procedimento a seguir usa as ferramentas disponíveis no SDK (Software Development Kit) do Windows. Também é possível executar essa tarefa no Visual Studio. Consulte também Passo a passo: como baixar assemblies satélite sob demanda com a API de implantação do ClickOnce usando o Designer ou Passo a passo: como baixar assemblies satélite sob demanda com a API de implantação do ClickOnce usando o Designer.

Observação

A classe ApplicationDeployment e as APIs no namespace System.Deployment.Application não têm suporte no .NET Core e no .NET 5 e versões posteriores. No .NET 7, há suporte para um novo método de acesso às propriedades de implantação de aplicativos. Para obter mais informações, consulte Acessar propriedades de implantação do ClickOnce no .NET. O .NET 7 não oferece suporte ao equivalente aos métodos ApplicationDeployment.

Observação

Para fins de teste, o exemplo de código a seguir define programaticamente a cultura como ja-JP. Consulte a seção "Próximas Etapas" neste tópico para obter informações sobre como ajustar esse código para um ambiente de produção.

Pré-requisitos

Este tópico pressupõe que você sabe como adicionar recursos localizados ao seu aplicativo usando o Visual Studio. Para obter instruções detalhadas, consulte Passo a passo: localizar formulários do Windows.

Baixar assemblies satélites sob demanda

  1. Adicione o código a seguir ao aplicativo para habilitar o download sob demanda de assemblies satélites.

    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. Gere assemblies satélites para seu aplicativo usando Resgen.exe (Gerador de Arquivos de Recurso) ou Visual Studio.

  3. Gere um manifesto do aplicativo ou abra o manifesto do aplicativo existente usando MageUI.exe. Para obter mais informações, consulte MageUI.exe (Manifest Generation and Editing Tool, Cliente Gráfico).

  4. Clique na guia Arquivos.

  5. Clique no botão reticências (...) e selecione o diretório que contém todos os assemblies e arquivos do aplicativo, incluindo os assemblies satélite gerados usando Resgen.exe. (Um assembly satélite terá um nome no formulário <isoCode>\ApplicationName.resources.dll, em que <isoCode> é um identificador de idioma no formato RFC 1766.)

  6. Clique em Preencher para adicionar os arquivos à sua implantação.

  7. Marque a caixa de seleção Opcional para cada assembly satélite.

  8. Defina o campo de grupo para cada assembly satélite como seu identificador de linguagem ISO. Por exemplo, para um assembly satélite japonês, você especificaria um nome de grupo de download de ja-JP. Dessa forma, permite que o código adicionado na etapa 1 baixe o assembly satélite apropriado, dependendo da configuração da propriedade CurrentUICulture do usuário.

Próximas etapas

Em um ambiente de produção, você provavelmente precisa remover a linha no exemplo de código que define CurrentUICulture como um valor específico, pois os computadores cliente terão o valor correto definido por padrão. Quando o aplicativo for executado em um computador cliente japonês, por exemplo, CurrentUICulture será ja-JP por padrão. A definição desse valor programaticamente é uma boa forma de testar seus assemblies satélites antes de implantar seu aplicativo.