Walkthrough: Download de Assemblies de satélite 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 implantação para a máquina do cliente, embora provavelmente exigirá um único cliente apenas um assembly satélite.

Esta explicação passo a passo demonstra como marcar seus assemblies satélites como opcionais e baixar o assembly precisa de uma máquina cliente para suas configurações de cultura atual. 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 "Próximas etapas" seção mais adiante 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 para seu aplicativo usando o Visual Studio. Para obter instruções detalhadas, consulte Demonstra Passo a passo: Localizando Windows Forms.

Para fazer o download de assemblies de satélite sob demanda

  1. Adicione o seguinte código ao seu aplicativo para habilitar o download de demanda 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 o 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 o arquivos guia.

  5. Clique o reticências botão (...) e selecione o diretório que contém todos os assemblies e arquivos, incluindo os assemblies de satélite que você gerou usando resgen. exe 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 de RFC 1766.)

  6. Clique em popular para adicionar 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ê especificaria o nome de um 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 de 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 do 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