Utilitários de recursos

Este tópico descreve dois utilitários usados para criar aplicativos MUI. Embora MUIRCT seja uma ferramenta específica da MUI, a MUI também usa o utilitário padrão do Compilador do Windows RC. As instruções para usar esses utilitários são fornecidas em Localizando recursos e criando o aplicativo.

Utilitário MUIRCT

MUIRCT (Muirct.exe) é um utilitário de linha de comando para dividir um arquivo executável padrão em um arquivo LN e arquivos de recurso específicos de linguagem (ou seja, localizáveis). Cada um dos arquivos resultantes contém dados de configuração de recursos para associação de arquivos. MUIRCT está incluído no SDK do Microsoft Windows do Windows Vista.

Observação

A partir do Windows Vista, o carregador de recursos do Win32 é atualizado para carregar recursos de arquivos específicos do idioma, bem como de arquivos LN.

 

Usos de MUIRCT

  1. Divida binário em main arquivo binário e mui com base no arquivo rc_config.

    Muirct -q rc_config [-c checksum_file [-b LangID]] [-x LangID] [-g LangId] [-f] [-m] [-v level] source_file [output_LN_file] [output_MUI_file]

  2. Extraia a soma de verificação de checksum_file e insira-a no output_file.

    Muirct -c checksum_file [-b LangID] -e output_file

  3. Calcule a soma de verificação com base em checksum_file e insira-a no output_file.

    Muirct -c checksum_file [-b LangID] -q rc_config -z output_file

  4. Despejar conteúdo de dados de configuração de recursos de input_file.

    Muirct -d input_file

Sintaxe MUIRCT

MUIRCT pode tomar direção de comutadores de linha de comando e/ou de um arquivo de configuração de recurso, especificado usando a opção -q.

muirct [-h|-?] [ -c checksum_file] [-b langid]  ]
     [-g langid] [-q resource configuration file<RCF>] [-v level] [-x langid]
     [-e output_file]  [-z output_file] [-f] [-d MUI'ized file] [-m file_version]

source_filename [language_neutral_filename] [mui_filename]

Opções e argumentos

Opção Finalidade
-h ou -? Mostra a tela de ajuda.
-c Especifica a checksum_file de entrada da qual extrair ou calcular a soma de verificação do recurso. Checksum_file deve ser um arquivo binário Win32 contendo recursos localizáveis. Se checksum_file contiver recursos para mais de um idioma, a opção -b deverá ser usada para especificar qual delas deve ser usada caso contrário, o MUIRCT falhará.
-b Especifica o idioma a ser usado quando o checksum_file especificado com -c contém recursos em vários idiomas. Essa opção só pode ser usada em conjunto com a opção -c. O identificador de linguagem pode estar no formato decimal ou hexadecimal. O MUIRCT falhará se o checksum_file contiver recursos em vários idiomas e -b não for especificado ou se o idioma especificado pela opção -b não puder ser encontrado no checksum_file.
-g Especifica a ID do idioma a ser incluída como a linguagem de fallback final na seção de dados de configuração de recursos do arquivo LN. Se o carregador de recursos não carregar um arquivo .mui solicitado dos idiomas de interface do usuário preferenciais do thread, ele usará a linguagem de fallback final como sua última tentativa. O valor LangID pode ser especificado no formato decimal ou hexadecimal. Por exemplo, o inglês (Estados Unidos) pode ser especificado por -g 0x409 ou -g 1033.
-Q Especifica que o source_file deve ser dividido no output_LN_file e no output_MUI_file de acordo com o layout do arquivo rc_config. O arquivo rc_config é um arquivo formatado em XML que especifica quais recursos serão extraídos para o arquivo .mui e que serão deixados no arquivo LN. O rc_config pode especificar a distribuição de tipos de recursos e itens nomeados individuais entre o output_LN_file e output_MUI_file. O source_file deve ser um binário Win32 que contenha recursos em um único idioma, caso contrário, o MUIRCT falhará. MUIRCT não dividirá o arquivo se ele for neutro em idioma, o que é indicado por ter apenas o valor de ID de idioma 0 no arquivo. Os output_LN_file e output_mui_file são os nomes do arquivo .mui e neutro da linguagem no qual o source_file é dividido. Esses nomes de arquivo são opcionais. Se eles não forem especificados, MUIRCT acrescentará as extensões .ln e .mui a source_file. Normalmente, você deve remover a extensão ".ln" antes de implantar o arquivo. O MUIRCT associa o output_LN_file e output_MUI_file calculando uma soma de verificação com base no nome source_file e na versão do arquivo e inserindo o resultado na seção de configuração de recursos de cada arquivo de saída. Quando usado em conjunto com a opção -c, a opção -q tem precedência. Se o arquivo rc_config fornecido com a opção -q contiver uma soma de verificação MUIRCT ignorará a opção -c e inserirá o valor de soma de verificação do valor, rc_config arquivo nos arquivos LN e.mui. Se nenhum valor de soma de verificação for encontrado no rc_config, MUIRCT calculará a soma de verificação do recurso com base no comportamento da opção -c.
-v Especifica o nível de detalhamento para registro em log. Especifique 1 para imprimir todas as mensagens de erro básicas e os resultados da operação. Especifique 2 para incluir também as informações de recurso (tipo, nome, identificador de idioma) incluídas no arquivo .mui e no arquivo LN. O padrão é -v 1
-X Especifica a ID do idioma com a qual MUIRCT marca todos os tipos de recursos adicionados à seção de recursos do arquivo .mui. O valor LangID pode ser especificado no formato decimal ou hexadecimal. Por exemplo, o inglês (Estados Unidos) pode ser especificado por -x 0x409 ou -x 1033.
-E Extrai a soma de verificação de recursos contida no checksum_file fornecido com a opção -c e a insere no output_file especificado. Quando -e é especificado, MUIRCT ignora todos os comutadores diferentes da opção -c. Nesse caso, o checksum_file deve ser um arquivo binário Win32 que contém uma seção de dados de configuração de recurso com um valor de soma de verificação. O output_file deve ser um arquivo LN existente ou um arquivo .mui.
-Z Calcula e insere dados de soma de verificação de recursos no arquivo de saída especificado. O MUIRCT baseia o cálculo de soma de verificação na entrada fornecida com a opção -c e a opção -b opcional. Se você especificar um arquivo de saída para a opção -z que não existe, MUIRCT sairá com uma falha.
Exemplo: calcula a soma de verificação com base em recursos localizáveis no Notepad.exe e insere a soma de verificação no arquivo de saída Notepad2.exe.
muirct -c notepad.exe -q myprog.rcconfig -z notepad2.exe
-f Habilita a criação de um arquivo .mui com o recurso de versão sendo o único recurso localizável. Por padrão, MUIRCT não permite isso.
-d Localiza e exibe dados de configuração de recursos inseridos no arquivo de origem. Quando você especifica essa opção, MUIRCT ignora todas as outras opções de linha de comando.
-M Especifica o número de versão a ser usado ao calcular a soma de verificação para associar o output_LN_file e output_MUI_file.
source_filename Nome do arquivo de origem binário localizado; curingas não podem ser usados. Esse arquivo só pode conter recursos em um idioma. Se houver recursos em vários idiomas no arquivo, o MUIRCT falhará, a menos que a opção -b seja usada. Se o arquivo contiver recursos com identificadores de linguagem com apenas o valor 0, MUIRCT não dividirá o arquivo porque um identificador de idioma de 0 indica uma linguagem neutra.
Para a opção -d, source_filename é um arquivo LN ou um arquivo de recurso específico da linguagem para o qual MUIRCT deve exibir dados de configuração de recursos.
language_neutral_filename Opcional. Nome do arquivo LN. Se você não especificar o nome desse arquivo, MUIRCT acrescentará uma segunda extensão ".ln" ao nome do arquivo de origem a ser usado como o nome do arquivo neutro do idioma. Normalmente, você deve remover a extensão ".ln" antes de implantar o arquivo. Nota: O arquivo LN não deve conter cadeias de caracteres ou menus. Você deve removê-los manualmente.
mui_filename Opcional. Nome do arquivo de recurso específico do idioma. Se você não especificar um nome, MUIRCT acrescentará uma segunda extensão ".mui" ao nome do arquivo de origem a ser usado como o nome do arquivo. Normalmente, o MUIRCT cria um arquivo de recurso específico do idioma. No entanto, ele não criará um arquivo de recurso se alguma das seguintes condições existir:
  • Nenhum recurso localizável está no arquivo binário original.
  • A única linguagem de recurso encontrada no arquivo binário original é a linguagem neutra.
  • O arquivo binário original tem recursos para mais de um idioma, sem contar a linguagem neutra. Se o arquivo binário contiver recursos para dois idiomas e um deles for o idioma neutro, o utilitário considerará o arquivo monolíngue e criará um arquivo de recurso específico do idioma se houver recursos localizáveis.

 

Saída da linguagem MUIRCT

MUIRCT escolhe o valor do atributo "UltimateFallbackLanguage" a ser inserido nos dados de configuração de recurso de arquivo LN com base na seguinte ordem, da prioridade mais alta para a mais baixa:

  1. Atributo "UltimateFallbackLanguage" no arquivo de configuração de recurso de origem, se um for passado como entrada.
  2. O idioma especificado com a opção -g.
  3. Idioma do arquivo de entrada.

O MUIRCT escolhe o valor do atributo "language" a ser inserido nos dados de configuração de recurso do arquivo .mui com base na seguinte ordem:

  1. Atributo "language" no arquivo de configuração de recurso de origem, se um for passado como entrada.
  2. O idioma especificado pela opção -x (force language).
  3. Idioma do arquivo de entrada.

Tratamento de soma de verificação muirct

O sistema operacional normalmente calcula a soma de verificação sobre os recursos específicos do idioma em um arquivo, a menos que você especifique a soma de verificação por meio de um arquivo de configuração de recurso. Desde que a soma de verificação seja a mesma para o arquivo LN e todos os arquivos de recurso específicos do idioma associados, e o atributo de idioma na configuração de recursos no LN e na correspondência dependente de idioma, o carregador de recursos pode carregar recursos com êxito.

O MUIRCT dá suporte a vários métodos para colocar somas de verificação apropriadas nos dados de configuração de recursos:

  1. Crie um executável para cada idioma, contendo código e recursos. Depois disso, use MUIRCT para dividir cada um desses arquivos em um arquivo LN e um arquivo de recurso específico do idioma. O MUIRCT é executado várias vezes, uma vez para gerar um arquivo de recurso para cada idioma. Você pode executar o build das seguintes maneiras:
    1. Use a opção -q para especificar um valor de soma de verificação no arquivo de configuração de recurso. MUIRCT coloca esse valor em todos os arquivos LN e arquivos de recurso específicos de linguagem produzidos. Você precisa adotar uma estratégia para escolher esse valor, conforme descrito mais adiante neste tópico.
    2. Use a opção -c (e, opcionalmente, a opção -b) para escolher um único idioma com recursos dos quais o MUIRCT extrai a soma de verificação.
    3. Use a opção -z para escolher um único idioma com recursos dos quais o MUIRCT sempre extrai a soma de verificação. Aplique essa soma de verificação depois que os arquivos tiverem sido criados usando outros métodos.
  2. Crie um executável que contenha código e recursos para um único idioma. Depois disso, use MUIRCT para dividir os recursos entre o arquivo LN e o arquivo de recurso específico do idioma. Por fim, use uma ferramenta de localização binária para modificar o arquivo de recurso resultante para cada idioma.

A convenção mais comum para tratamento de soma de verificação é basear a soma de verificação nos recursos em inglês (Estados Unidos). Você está livre para adotar uma convenção diferente, desde que ela seja consistente para cada arquivo LN. Por exemplo, é perfeitamente aceitável que uma empresa de desenvolvimento de software baseie suas somas de verificação no software criado em recursos franceses (França) em vez de recursos em inglês (Estados Unidos), desde que todos os aplicativos tenham recursos franceses (França) nos quais basear as somas de verificação. Também é aceitável usar o arquivo de configuração de recurso para atribuir um valor hexadecimal arbitrário de até 16 dígitos hexadecimais como uma soma de verificação. Essa última estratégia impede o uso efetivo das opções -z, -c e -b do MUIRCT. Ele requer a adoção de um método usando GuidGen ou alguma outra ferramenta para gerar valores de soma de verificação. Essa estratégia também exige que você configure uma política para determinar quando modificar o valor ao adicionar novos recursos localizáveis.

Para aplicar a soma de verificação em inglês (Estados Unidos) a todos os arquivos, você pode usar qualquer um dos métodos de tratamento de soma de verificação descritos acima. Por exemplo, você pode gerar o arquivo LN e o arquivo de recurso específico do idioma para inglês (Estados Unidos) e, em seguida, usar a opção MUIRCT -d para obter a soma de verificação resultante. Você pode copiar essa soma de verificação para o arquivo de configuração de recurso e usar a opção -q com MUIRCT para aplicar a soma de verificação a todos os outros arquivos.

Uso de um arquivo de configuração de recurso com MUIRCT

Você pode especificar dados de configuração de recursos ao usar MUIRCT. Se você fornece ou não explicitamente um arquivo de configuração de recurso, cada arquivo de recurso específico do idioma tem dados de configuração de recurso, assim como qualquer arquivo LN com um arquivo de recurso associado. Por exemplo:

  • Se você usar a opção -q para especificar um arquivo de configuração de recurso, mas não houver recursos localizáveis no arquivo de origem de entrada, nenhum arquivo de recurso específico do idioma será gerado e o arquivo LN resultante não conterá dados de configuração de recurso. Além disso, se o arquivo de origem de entrada tiver recursos multilíngues, o MUIRCT não dividirá o arquivo.

Observação

Atualmente, o comportamento de MUIRCT é inconsistente quando o elemento neutralResources do arquivo de configuração de recurso não contém elementos resourceType e o elemento localizedResources contém cadeias de caracteres e menus, por exemplo. Nesse caso, o MUIRCT divide os recursos da seguinte maneira:

  • Todos os recursos no binário original (incluindo cadeias de caracteres e menus), além dos recursos mui, são colocados no arquivo LN.
  • Cadeias de caracteres, menus e recursos MUI são colocados no arquivo de recurso específico do idioma apropriado.

 

Exemplos de uso de MUIRCT

Exemplos de uso padrão

muirct -q mui.MMF bar.exe barnew.exe barnew.exe.mui

muirct -d myprog.exe.mui

Exemplo de saída de arquivo LN usando a opção -d

Aqui está um exemplo da saída de dados de configuração de recursos de um arquivo LN, Shell32.dll, usando a opção -d com MUIRCT:

Signature          -    fecdfecd
Length             -    148
RC Config Version  -    10000
FileType           -    11
SystemAttributes   -    100
UltimateFallback location    -  external
Service Checksum   -    14f44a8d86bef14af26d9a885964c935
Checksum           -    f5b3b7ab330439d6fcc07582c3afb613
MainNameTypes      -    AVI FTR ORDERSTREAM TYPELIB UIFILE XML MUI
MainIDTypes        -    1 2 3 12 14 16 24
MuiNameTypes       -    MUI
MuiIDTypes         -    2 3 4 5 6 9 14 16
UltimateFallbackLanguage   -   en-US

Exemplo de Language-Specific saída de arquivo de recurso usando a opção -d

Aqui está um exemplo da saída de dados de configuração de recurso de um arquivo .mui, Shell32.dll.mui, usando a opção -d para MUIRCT:

Signature          -    fecdfecd
Length             -     c8
RC Config Version  -    10000
FileType           -    12
SystemAttributes   -    100
Service Checksum   -    14f44a8d86bef14af26d9a885964c935
Checksum           -    f5b3b7ab330439d6fcc07582c3afb613
MainNameTypes      -    MUI
MainIDTypes        -    2 3 4 5 6 9 14 16
Language           -    en-US

Utilitário do compilador RC

O compilador RC (Rc.exe) é um utilitário de linha de comando para compilar um arquivo de script de definição de recurso (extensão .rc) em arquivos de recurso (extensão .res). O compilador RC está incluído no SDK do Windows. Este documento explica apenas o uso do compilador RC com recursos relacionados à MUI do carregador de recursos. Para obter informações completas sobre o compilador, consulte Sobre arquivos de recurso.

O Compilador RC permite que você crie, de um único conjunto de fontes, um arquivo LN e um arquivo de recurso específico de linguagem separado. Quanto ao MUIRCT, os arquivos são associados por dados de configuração de recursos.

Sintaxe do compilador RC como usada para recursos MUI

As opções do compilador RC são definidas detalhadamente em Usando RC. Esta seção define apenas as opções usadas para criar recursos MUI. Lembre-se de que cada comutador não diferencia maiúsculas de minúsculas. Os tipos de recursos são considerados neutros em idioma, a menos que indicado de outra forma.

rc [-h|-?] -fm mui_res_name [-q rc_config_file_name] [-g langid] [-g1 ] [-g2 version]

Opções e argumentos

Opção Função
-h ou -? Mostra a tela de ajuda.
-Fm Usa o arquivo de recurso especificado para recursos específicos do idioma. Normalmente, o compilador de recursos cria um arquivo de recurso específico da linguagem. No entanto, ele não criará o arquivo se alguma das seguintes condições existir:
  • Não há recursos localizáveis no arquivo .rc.
  • A única linguagem de recurso encontrada no arquivo .rc é a linguagem neutra.
  • O arquivo .rc tem recursos para mais de um idioma, sem contar a linguagem neutra. Se o arquivo .rc contiver recursos para dois idiomas e um deles for a linguagem neutra, o compilador considerará o arquivo monolíngue. Se houver recursos localizáveis, o compilador criará um arquivo de recurso específico da linguagem.
-Q Usa o arquivo de configuração de recurso especificado para obter os tipos de recursos a serem colocados no arquivo de recurso específico do idioma e no arquivo LN. Para obter mais informações, consulte Preparando um arquivo de configuração de recurso. Como alternativa a essa opção, você pode usar as opções -j e -k, mas é preferível usar um arquivo de configuração de recurso.
Usando a opção -q com um arquivo de configuração de recurso, você pode implementar uma divisão baseada em item e fornecer atributos que acabarão com a configuração de recurso binário no LN e no arquivo de recurso específico do idioma. Essa divisão não é possível usando as opções -j e -k. Nota: O processo de divisão do compilador RC não funcionará corretamente se você armazenar recursos e informações de versão em arquivos de configuração de recursos diferentes. Nesse caso, o Compilador RC não divide as informações de versão. Portanto, ocorre um erro de vinculador durante a vinculação do arquivo de recurso específico do idioma porque o arquivo não tem recursos de versão.
-g Especifica o identificador de linguagem de fallback final em hexadecimal.
-g1 Cria um arquivo .res mui mesmo que o recurso VERSION seja o único conteúdo localizável. Por padrão, o Compilador RC não produzirá um arquivo .res se VERSION for o único recurso localizável.
-g2 Especifica o número de versão personalizado a ser usado ao calcular a soma de verificação.
mui_res_name Arquivo de recurso para recursos específicos do idioma.
rc_config_file_name Arquivo de configuração de recurso.
langid Identificador de idioma.
version Número de versão personalizado, em um formato como "6.2.0.0".

 

Exemplo para usar o compilador RC para criar recursos mui

Para ilustrar a operação do compilador RC com recursos MUI, vamos examinar a seguinte linha de comando para o arquivo de recurso Myfile.rc:

rc -fm myfile_res.res -q myfile.rcconfig myfile.rc

Essa linha de comando faz com que o Compilador RC faça o seguinte:

  • Crie o arquivo de recurso específico do idioma Myfile_res.res e um arquivo de recurso com neutralidade de linguagem que usa como padrão Myfile.res, com base no nome do arquivo .rc.
  • Adicione o 2 (item 5 6 7 8 9 10 11 12), 4, 5, 6, 9, 11, 16, 23, 240, 1024 MY_TYPE tipos de recursos ao arquivo .res específico do idioma se eles estiverem no arquivo .rc.
  • Adicione o tipo de recurso 16, juntamente com qualquer outro tipo de recurso descrito no arquivo de recurso ao arquivo .res neutro de linguagem e ao arquivo .res específico do idioma. Observe que, neste exemplo, o tipo de recurso 16 está sendo adicionado em dois locais.
  • Escolha o valor do atributo "UltimateFallbackLanguage" para inserir nos dados de configuração de recurso de arquivo LN com base nos seguintes critérios, ordenados da prioridade mais alta para a mais baixa:
    • Atributo "UltimateFallbackLanguage" no arquivo de configuração de recurso se um for passado como entrada.
    • Valor do atributo de linguagem a ser inserido nos dados de configuração de recurso com base na ordem da linguagem do compilador RC (linguagem neutra e linguagem específica do idioma). As considerações incluem idioma no arquivo .rc, valor do idioma do comutador -gl e 0x0409 de identificador para inglês (Estados Unidos).

Comentários

Se você incluir qualquer tipo de recurso ICON(3), DIALOG(5), STRING(6) ou VERSION(16) no elemento neutralResources, será necessário duplicar essa entrada no elemento localizedResources no arquivo de configuração de recurso.

Referência de interface do usuário multilíngue

Gerenciamento de Recursos mui

Localizando recursos e criando o aplicativo