Compartilhar via


Passo a passo: Fazendo o download de Assemblies satélites sob demanda com a API de implantação de ClickOnce

Aplicativos Windows Forms podem ser configurados para várias culturas através do uso de assemblies satélites.A assembly satélite é um assembly que contém recursos de aplicativo para uma cultura diferente de cultura do padrão do aplicativo.

Conforme discutido em Localização de aplicativos de ClickOnce, você pode incluir vários assemblies de satélite para várias culturas dentro do mesmo ClickOnce implantação.Por padrão, ClickOnce baixará todos os assemblies satélite na sua implementação para a máquina cliente, embora um único cliente provavelmente exigirá que assembly satélite apenas um.

Esta explicação passo a passo demonstra como marcar seus assemblies satélites como opcionais e fazer o download apenas do assembly que precisa de uma máquina cliente para suas configurações de cultura.O procedimento a seguir usa as ferramentas disponíveis na Windows Software Development Kit (SDK).Você também pode executar essa tarefa em Visual Studio.Para obter mais informações, consulte Demonstra Passo a passo: Downloading Assemblies Satellite on Demand com the Implantação ClickOnce API Using the Designer e Demonstra Passo a passo: Download de assemblies satélites sob demanda com a API usando o Designer de implantação do ClickOnce e Walkthrough: Download de Assemblies de satélite sob demanda com a API usando o Designer de implantação de ClickOnce e Passo a passo: Fazendo o download de Assemblies satélites sob demanda com a API usando o Designer de implantação de ClickOnce.

ObservaçãoObservação

Para fins de teste, o exemplo de código a seguir programaticamente define a cultura ja-JP.Consulte a seção "Próximas etapas", posteriormente 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ê saiba como adicionar recursos localizados ao seu aplicativo usando o Visual Studio.Para obter instruções detalhadas, consulte Passo a passo: Localizando Windows Forms.

Para fazer o download de assemblies satélites sob demanda

  1. Adicione o seguinte código ao seu aplicativo para permitir o download a pedido dos assemblies satélites.

    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. Gerar assemblies de satélite para seu aplicativo usando Resgen. exe (gerador do arquivo de recurso) ou Visual Studio.

  3. Gerar um manifesto de aplicativo, ou abra o manifesto do aplicativo existente, usando o MageUI.exe.For more information about this tool, see MageUI.exe (geração de manifesto e edição da ferramenta, o cliente gráfico).

  4. Clique no arquivos guia.

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

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

  7. Selecione o opcional caixa de seleção para cada assembly satélite.

  8. Defina o campo de grupo para cada assembly satélite para seu identificador de idioma ISO.Por exemplo, para um assembly satélite japonês, você deve especificar um nome de grupo de download de ja-JP.Isso permitirá que o código adicionado na etapa 1 para baixar o assembly satélite adequado, dependendo do usuário CurrentUICulture configuração da propriedade.

Próximas etapas

Em um ambiente de produção, você provavelmente precisará remover a linha no exemplo de código que define CurrentUICulture para um valor específico, como máquinas de cliente será o valor correto definidos por padrão.Quando seu aplicativo é executado em uma máquina cliente em japonês, por exemplo, CurrentUICulture será ja-JP por padrão.Definir esse valor por meio de programação é uma boa maneira de testar seus assemblies satélites antes de implantar seu aplicativo.

Consulte também

Conceitos

Localização de aplicativos de ClickOnce