Localizar aplicativos ClickOnce
Localização é o processo de tornar seu aplicativo apropriado para uma cultura específica. Esse processo envolve traduzir texto da interface do usuário para um idioma específico da região, usar a formatação correta de data e moeda, ajustar o tamanho dos controles em um formulário e espelhar controles da direita para a esquerda, se necessário.
A localização do aplicativo resulta na criação de um ou mais assemblies satélites. Cada assembly contém cadeias de caracteres de interface do usuário, imagens e outros recursos específicos de uma determinada cultura. (O principal arquivo executável do aplicativo contém as cadeias de caracteres para a cultura padrão do aplicativo.)
Este tópico descreve três maneiras de implantar um aplicativo ClickOnce para outras culturas:
Inclua todos os assemblies satélites em uma só implantação.
Gere uma implantação para cada cultura, com um único assembly satélite incluído em cada uma.
Baixar assemblies satélites sob demanda.
Incluindo todos os assemblies satélites em uma implantação
Em vez de publicar várias implantações do ClickOnce, você pode publicar uma só implantação do ClickOnce que contém todos os assemblies satélites.
Esse método é o padrão no Visual Studio. Para usar esse método no Visual Studio, você não precisa fazer nenhum trabalho adicional.
Para usar esse método com MageUI.exe, você deve definir a cultura do aplicativo como neutra em MageUI.exe. Em seguida, você deve incluir manualmente todos os assemblies satélite em sua implantação. Em MageUI.exe, você pode adicionar os assemblies satélites usando o botão Preencher na guia Arquivos do manifesto do aplicativo.
O benefício dessa abordagem é que ela cria uma só implantação e simplifica a história de sua implantação localizada. Em tempo de execução, o assembly satélite apropriado será usado, dependendo da cultura padrão do sistema operacional Windows do usuário. Uma desvantagem dessa abordagem é que ela baixa todos os assemblies satélite sempre que o aplicativo é instalado ou atualizado em um computador cliente. Se o aplicativo tiver um grande número de cadeias de caracteres ou seus clientes tiverem uma conexão de rede lenta, esse processo poderá afetar o desempenho durante a atualização do aplicativo.
Observação
Essa abordagem pressupõe que seu aplicativo ajuste a altura, a largura e a posição dos controles automaticamente para acomodar diferentes tamanhos de cadeia de caracteres de texto em diferentes culturas. O Windows Forms contém uma variedade de controles e tecnologias que permitem projetar seu formulário para torná-lo facilmente localizável, incluindo os controles FlowLayoutPanel e TableLayoutPanel, bem como a propriedade AutoSize. Confira também Como dar suporte à localização nos Windows Forms usando AutoSize e o controle TableLayoutPanel.
Gerar uma implantação para cada cultura
Nessa estratégia de implantação, você gera várias implantações. Em cada implantação, você inclui apenas o assembly satélite necessário para uma cultura específica e marca a implantação como específica para essa cultura.
Para usar esse método no Visual Studio, defina a propriedade Publicar Linguagem na guia Publicar para a região desejada. O Visual Studio incluirá automaticamente o assembly satélite necessário para a região selecionada e excluirá todos os outros assemblies satélites da implantação.
Observação
No ClickOnce para .NET Core 3.1 e .NET 5 ou posterior, você define propriedades de implantação usando a ferramenta Publicar, em vez do Assistente de Publicação, e a página Publicar do Designer de Projeto. Para obter mais informações, confira Implantar um aplicativo .NET do Windows usando ClickOnce e ClickOnce para .NET.
Você pode fazer a mesma coisa usando a ferramenta MageUI.exe no SDK (Software Development Kit) do Microsoft Windows. Use o botão Preencher na guia Arquivos do manifesto do aplicativo para excluir todos os outros assemblies satélites do diretório do aplicativo e, em seguida, defina o campo Cultura na guia Nome do manifesto de implantação no MageUI.exe. Essas etapas não incluem apenas o assembly satélite correto, mas também definem o atributo language
no elemento assemblyIdentity
no manifesto de implantação para a cultura correspondente.
Depois de publicar o aplicativo, você deve repetir essa etapa para cada cultura adicional compatível com o aplicativo. Você deve se certificar de publicar em um diretório de servidor Web diferente ou diretório de compartilhamento de arquivos todas as vezes, pois cada manifesto do aplicativo fará referência a um assembly satélite diferente e cada manifesto de implantação terá um valor diferente para o atributo language
.
Baixar assemblies satélites sob demanda
Se você decidir incluir todos os assemblies satélites em uma implantação, poderá melhorar o desempenho usando o download sob demanda, o que permite marcar assemblies como opcionais. Assemblies marcados não serão baixados quando o aplicativo for instalado ou atualizado. Você pode instalar os assemblies quando precisar deles chamando o método DownloadFileGroup na classe ApplicationDeployment.
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.
Baixar assemblies satélites sob demanda difere ligeiramente do download de outros tipos de assemblies sob demanda. Para obter mais informações e exemplos de código sobre como habilitar esse cenário usando as ferramentas do SDK do Windows para o ClickOnce, consulte Passo a passo: baixando assemblies satélite sob demanda com a API de Implantação do ClickOnce.
Você também pode habilitar esse cenário no Visual Studio. Para obter mais informações, consulte Passo a passo: baixando assemblies satélites sob demanda com a API de Implantação clickOnce usando o Designer.
Testar aplicativos ClickOnce localizados antes da implantação
Um assembly satélite será usado para um aplicativo Windows Forms somente se a propriedade CurrentUICulture do thread principal do aplicativo estiver definida como a cultura do assembly satélite. Clientes em mercados locais provavelmente já estarão executando uma versão localizada do Windows com sua cultura definida como o padrão apropriado.
Você tem três opções para testar implantações localizadas antes de disponibilizar seu aplicativo aos clientes:
Você pode executar seu aplicativo ClickOnce nas versões localizadas apropriadas do Windows.
Você pode definir a propriedade CurrentUICulture programaticamente em seu aplicativo. (Essa propriedade precisa ser definida antes que você chame o método Run.)