Share via


Instruções passo a passo: baixando assemblies satélite por demanda com a API de implantação do ClickOnce usando o designer

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 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.

Dica

Para fins de teste, os exemplos de código a seguir definem programaticamente 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 usingVisual Studio. Para obter instruções detalhadas, consulte Instruções passo a passo: localizando Windows Forms.

Para marcar assemblies satélites como opcionais

  1. Crie o seu projeto. Isso gerará assemblies satélites para todas as culturas que para serem localizados.

  2. Clique com o botão direito no seu nome de projeto no Solution Explorer e, em seguida, clique em Propriedades.

  3. Clique no Publicar guia e, em seguida, clique em Arquivos de aplicativo.

  4. Selecione o Mostrar todos os arquivos caixa de seleção para exibir os assemblies satélites. Por padrão, todos os assemblies satélites serão incluídos na sua implantação e estarão visíveis nesta caixa de diálogo.

    Um assembly satélite terá um nome no formulário isoCode\ApplicationName.resources.dll, onde isoCode é um identificador de idioma no formato RFC 1766.

  5. Clique em novo... na Grupo de downloads a lista para cada identificador de idioma. Quando for solicitado um nome de grupo de download, insira o identificador de idioma. Por exemplo, para um assembly satélite japonês, você deve especificar o nome do grupo de download ja-JP.

  6. Fechar o Arquivos de aplicativo caixa de diálogo.

Para fazer o download de assemblies satélites sob demanda, em C#

  1. Abra o arquivo Program. cs. Se você não vir esse arquivo no Solution Explorer, selecione o seu projeto e sobre o projeto menu, clique em Mostrar todos os arquivos.

  2. Use o código a seguir para baixar o assembly satélite adequado e iniciar o aplicativo.

    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 this error to the user, because a satellite 
                            // assembly may not exist if the user's culture and the application's 
                            // default culture match.
                        }
                    }
                }
            }
    
        }
    }
    

Para fazer o download de assemblies satélites sob demanda, em Visual Basic

  1. No Propriedades janela do aplicativo, clique no aplicativo guia.

  2. Na parte inferior da página da guia, clique em View Application Events.

  3. Adicione as importações de seguintes para o início do arquivo ApplicationEvents.

    Imports System.Deployment.Application
    Imports System.Globalization
    Imports System.Threading
    
  4. Adicione o seguinte código à classe MyApplication:

    Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
        Thread.CurrentThread.CurrentUICulture = New CultureInfo("ja-JP")
        GetSatelliteAssemblies(Thread.CurrentThread.CurrentUICulture.ToString())
    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 this error to the user, because a satellite 
                    ' assembly may not exist if the user's culture and the application's 
                    ' default culture match. 
                End Try 
            End If 
        End If 
    End Sub
    

Próximas etapas

Em um ambiente de produção, você provavelmente precisará remover a linha nos exemplos 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. Defini-la por meio de programação é uma boa maneira de testar seus assemblies satélites antes de implantar seu aplicativo.

Consulte também

Tarefas

Instruções passo a passo: baixando assemblies satélite por demanda com a API de implantação do ClickOnce

Conceitos

Localização de aplicativos ClickOnce