Служебные программы ресурсов

В этом разделе описываются две служебные программы, используемые для создания приложений MUI. Хотя MUIRCT — это инструмент, зависящий от MUI, MUI также использует стандартную служебную программу windows RC Compiler. Инструкции по использованию этих служебных программ приведены в разделах Локализация ресурсов и Создание приложения.

Служебная программа MUIRCT

MUIRCT (Muirct.exe) — это служебная программа командной строки для разделения стандартного исполняемого файла на LN-файл и языковые (то есть локализуемые) файлы ресурсов. Каждый из результирующего файла содержит данные конфигурации ресурсов для сопоставления файлов. MUIRCT входит в Microsoft Windows SDK для Windows Vista.

Примечание

Начиная с Windows Vista загрузчик ресурсов Win32 обновляется для загрузки ресурсов из языковых и LN-файлов.

 

Использование MUIRCT

  1. Разделите двоичный файл на main двоичный файл и многоязыковый файл на основе 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. Извлеките контрольную сумму из checksum_file и вставьте ее в output_file.

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

  3. Вычислите контрольную сумму на основе checksum_file и вставьте ее в output_file.

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

  4. Дамп содержимого данных конфигурации ресурсов из input_file.

    Muirct -d input_file

Синтаксис MUIRCT

MUIRCT может принимать направление из параметров командной строки и (или) из файла конфигурации ресурсов, указанного с помощью параметра -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]

Параметры и аргументы

Параметр Цель
-h или -? Экран справки.
-c Указывает входной checksum_file, из которого извлекается или вычисляется контрольная сумма ресурса. Checksum_file должен быть двоичным файлом Win32, содержащим локализуемые ресурсы. Если checksum_file содержит ресурсы для нескольких языков, необходимо использовать параметр -b, чтобы указать, какие из них следует использовать, иначе MUIRCT завершается ошибкой.
-b Указывает язык, используемый, если checksum_file, указанный с параметром -c, содержит ресурсы на нескольких языках. Этот параметр можно использовать только в сочетании с параметром -c. Идентификатор языка может иметь десятичный или шестнадцатеричный формат. MuIRCT завершается ошибкой, если checksum_file содержит ресурсы на нескольких языках, а параметр -b не указан или если язык, указанный параметром -b, не найден в checksum_file.
-g Указывает идентификатор языка, который будет включен в качестве конечного резервного языка в разделе данных конфигурации ресурсов LN-файла. Если загрузчику ресурсов не удается загрузить запрошенный MUI-файл из предпочитаемых для потока языков пользовательского интерфейса, он использует конечный резервный язык в качестве последней попытки. Значение LangID можно указать в десятичном или шестнадцатеричном формате. Например, английский (США) можно указать с помощью параметра -g 0x409 или -g 1033.
-Q Указывает, что source_file следует разделить на output_LN_file и output_MUI_file в соответствии с макетом файла rc_config. Файл rc_config — это XML-файл в формате , который указывает, какие ресурсы будут извлечены в MUI-файл, а какие останутся в файле LN. В rc_config можно указать распределение типов ресурсов и отдельных именованных элементов между output_LN_file и output_MUI_file. Source_file должен быть двоичным файлом Win32, который содержит ресурсы на одном языке, в противном случае MUIRCT завершается ошибкой. MUIRCT не разделяет файл, если он не зависит от языка, о чем свидетельствует только значение идентификатора языка 0 в файле. Output_LN_file и output_mui_file — это имена нейтральных языков и MUI-файлов, на которые разделяется source_file. Эти имена файлов являются необязательными. Если они не указаны, MUIRCT добавляет расширения .ln и .mui к source_file. Как правило, перед развертыванием файла следует удалить расширение .ln. MUIRCT связывает output_LN_file и output_MUI_file, вычисляя контрольную сумму на основе имени source_file и версии файла и вставляя результат в раздел конфигурации ресурсов каждого выходного файла. При использовании в сочетании с параметром -c параметр -q имеет приоритет. Если файл rc_config, предоставленный с параметром -q, содержит контрольную сумму, MUIRCT игнорирует параметр -c и вставляет значение контрольной суммы из значения , rc_config файл в файлы LN и MUI. Если в rc_config не найдено значение контрольной суммы, MUIRCT вычисляет контрольную сумму ресурса на основе поведения параметра -c.
-v Указывает уровень детализации для ведения журнала. Укажите значение 1, чтобы вывести все основные сообщения об ошибках и результаты операций. Укажите значение 2, чтобы также включить сведения о ресурсе (тип, имя, идентификатор языка), включенные в MUI-файл и LN-файл. Значение по умолчанию — -v 1.
-X Указывает идентификатор языка, с помощью которого MUIRCT помечает все типы ресурсов, добавленные в раздел ресурсов MUI-файла. Значение LangID можно указать в десятичном или шестнадцатеричном формате. Например, английский (США) можно указать с помощью -x 0x409 или -x 1033.
-E Извлекает контрольную сумму ресурса, содержащуюся в checksum_file с параметром -c, и вставляет ее в указанный output_file. Если задан параметр -e, MUIRCT игнорирует все параметры, отличные от параметра -c. В этом случае checksum_file должен быть двоичным файлом Win32, который содержит раздел данных конфигурации ресурса со значением контрольной суммы. Output_file должен быть существующим файлом LN или MUI-файлом.
-Z Вычисляет и вставляет данные контрольной суммы ресурсов в указанный выходной файл. MUIRCT основывает вычисление контрольной суммы на входных данных, предоставляемых с параметром -c и необязательным параметром -b. Если указать для параметра -z выходной файл, который не существует, MUIRCT завершает работу со сбоем.
Пример. Вычисляет контрольную сумму на основе локализуемых ресурсов в Notepad.exe и вставляет контрольную сумму в выходной файл Notepad2.exe.
muirct -c notepad.exe -q myprog.rcconfig -z notepad2.exe
-f Позволяет создать MUI-файл с ресурсом версии, который является единственным локализуемым ресурсом. По умолчанию MUIRCT не разрешает это.
-d Находит и отображает внедренные данные конфигурации ресурсов в исходном файле. При указании этого параметра MUIRCT игнорирует все остальные параметры командной строки.
-M Указывает номер версии, используемый при вычислении контрольной суммы для связывания output_LN_file и output_MUI_file.
source_filename Имя локализованного двоичного исходного файла; Подстановочные знаки нельзя использовать. Этот файл может содержать ресурсы только на одном языке. Если в файле есть ресурсы на нескольких языках, muIRCT завершается ошибкой, если не используется параметр -b. Если файл содержит ресурсы с идентификаторами языка, имеющими только значение 0, MUIRCT не разделяет файл, так как идентификатор языка 0 указывает на нейтральный язык.
Для параметра -d source_filename является файлом LN или файлом ресурсов для конкретного языка, для которого MUIRCT будет отображать данные конфигурации ресурсов.
language_neutral_filename Необязательный элемент. Имя LN-файла. Если имя этого файла не указано, MUIRCT добавит второе расширение ".ln" к имени исходного файла, чтобы использовать его в качестве имени файла, не зависящий от языка. Как правило, перед развертыванием файла следует удалить расширение .ln. Примечание: LN-файл не должен содержать строки или меню. Их следует удалить вручную.
mui_filename Необязательный элемент. Имя файла ресурсов для конкретного языка. Если имя не указано, MUIRCT добавляет второе расширение .mui к имени исходного файла для использования в качестве имени файла. Как правило, MUIRCT создает файл ресурсов для конкретного языка. Однако он не создает файл ресурсов, если существует какое-либо из следующих условий:
  • В исходном двоичном файле нет локализуемых ресурсов.
  • Единственный язык ресурсов, найденный в исходном двоичном файле, — это нейтральный язык.
  • Исходный двоичный файл содержит ресурсы для нескольких языков, не считая нейтрального языка. Если двоичный файл содержит ресурсы для двух языков и один из них является нейтральным языком, программа считает файл одноязычным и создает файл ресурсов для конкретного языка при наличии локализуемых ресурсов.

 

Выходные данные языка MUIRCT

MUIRCT выбирает значение атрибута UltimateFallbackLanguage для вставки в данные конфигурации ресурсов LN-файла в соответствии со следующим порядком от самого высокого приоритета до самого низкого:

  1. Атрибут UltimateFallbackLanguage в файле конфигурации исходного ресурса, если он передается в качестве входных данных.
  2. Язык, указанный параметром -g.
  3. Язык входных файлов.

MUIRCT выбирает значение атрибута language для вставки в данные конфигурации ресурса MUI-файла в соответствии со следующим порядком:

  1. Атрибут language в файле конфигурации исходного ресурса, если он передается в качестве входных данных.
  2. Язык, заданный параметром -x (принудительный язык).
  3. Язык входных файлов.

Обработка контрольной суммы MUIRCT

Операционная система обычно вычисляет контрольную сумму по языковым ресурсам в файле, если она не указана в файле конфигурации ресурсов. Если контрольная сумма одинакова для LN-файла и всех связанных файлов ресурсов для конкретного языка, а также атрибут языка в конфигурации ресурса в сопоставлении LN и языка, загрузчик ресурсов может успешно загружать ресурсы.

MUIRCT поддерживает несколько методов размещения соответствующих контрольных сумм в данных конфигурации ресурсов:

  1. Создайте исполняемый файл для каждого языка, содержащий как код, так и ресурсы. После этого используйте MUIRCT, чтобы разделить каждый из этих файлов на LN-файл и файл ресурсов для конкретного языка. MUIRCT выполняется несколько раз, один раз для создания файла ресурсов для каждого языка. Сборку можно выполнить следующими способами:
    1. Используйте параметр -q, чтобы указать значение контрольной суммы в файле конфигурации ресурса. MUIRCT помещает это значение во все LN-файлы и файлы ресурсов для конкретного языка. Необходимо принять стратегию выбора этого значения, как описано далее в этом разделе.
    2. Используйте параметр -c (и, при необходимости, параметр -b), чтобы выбрать один язык с ресурсами, из которого MUIRCT извлекает контрольную сумму.
    3. Используйте параметр -z, чтобы выбрать один язык с ресурсами, из которого MUIRCT всегда извлекает контрольную сумму. Примените эту контрольную сумму после сборки файлов с помощью других методов.
  2. Создайте исполняемый файл, содержащий как код, так и ресурсы для одного языка. После этого используйте MUIRCT, чтобы разделить ресурсы между LN-файлом и файлом ресурсов для конкретного языка. Наконец, используйте средство двоичной локализации для изменения результирующего файла ресурсов для каждого языка.

Наиболее распространенным соглашением для обработки контрольной суммы является основание контрольной суммы на основе ресурсов на английском языке (США). Вы можете использовать разные соглашения, если они согласованы для каждого LN-файла. Например, для предприятия по разработке программного обеспечения вполне приемлемо основывать свои контрольные суммы на программном обеспечении, которое оно строит на французских (Франция) ресурсах, а не на английском (США) ресурсах, если все приложения имеют французские (Франция) ресурсы, на которых будут основываться контрольные суммы. Также допустимо использовать файл конфигурации ресурсов для назначения произвольного шестнадцатеричного значения до 16 шестнадцатеричных цифр в качестве контрольной суммы. Последняя стратегия исключает эффективное использование переключателей -z, -c и -b MUIRCT. Для создания значений контрольной суммы требуется внедрение метода с использованием GuidGen или другого средства. Эта стратегия также требует настройки политики для определения того, когда следует изменять значение при добавлении новых локализуемых ресурсов.

Чтобы применить контрольную сумму на английском языке (США) ко всем файлам, можно использовать любой из описанных выше методов обработки контрольной суммы. Например, можно создать файл LN и файл ресурсов для конкретного языка для английского языка (США), а затем использовать параметр MUIRCT -d для получения итоговой контрольной суммы. Вы можете скопировать эту контрольную сумму в файл конфигурации ресурсов и использовать параметр -q с MUIRCT, чтобы применить контрольную сумму ко всем остальным файлам.

Использование файла конфигурации ресурсов с MUIRCT

При использовании MUIRCT можно указать данные конфигурации ресурсов. Независимо от того, предоставляете ли вы явно файл конфигурации ресурсов, каждый файл ресурсов для конкретного языка содержит данные конфигурации ресурсов, как и любой LN-файл со связанным файлом ресурсов. Пример:

  • Если параметр -q используется для указания файла конфигурации ресурсов, но во входном исходном файле нет локализуемых ресурсов, файл ресурсов для конкретного языка не создается, а полученный LN-файл не содержит данных конфигурации ресурсов. Кроме того, если входной исходный файл содержит многоязычные ресурсы, MUIRCT не будет разделять файл.

Примечание

В настоящее время поведение MUIRCT является несогласованным, если элемент neutralResources файла конфигурации ресурсов не содержит элементов resourceType, а элемент localizedResources содержит строки и меню, например. В этом случае MUIRCT разделяет ресурсы следующим образом:

  • Все ресурсы в исходном двоичном файле (включая строки и меню), а также ресурсы MUI помещаются в LN-файл.
  • Строки, меню и ресурсы MUI помещаются в соответствующий файл ресурсов для конкретного языка.

 

Примеры использования MUIRCT

Примеры стандартного использования

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

muirct -d myprog.exe.mui

Пример вывода LN-файла с помощью параметра -d

Ниже приведен пример выходных данных конфигурации ресурсов из LN-файла, Shell32.dll с помощью параметра -d с 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

Пример вывода файла ресурсов Language-Specific с помощью параметра -d

Ниже приведен пример выходных данных конфигурации ресурсов из MUI-файла Shell32.dll.mui с помощью параметра -d для 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

Служебная программа компилятора RC

Компилятор-кандидат (Rc.exe) — это служебная программа командной строки для компиляции файла скрипта определения ресурса (расширение RC) в файлы ресурсов (расширение RES). Компилятор-кандидат входит в пакет WINDOWS SDK. В этом документе объясняется только использование компилятора-кандидата с возможностями загрузчика ресурсов, связанными с MUI. Полные сведения о компиляторе см. в разделе Сведения о файлах ресурсов.

Компилятор-кандидат позволяет создавать из одного набора источников LN-файл и отдельный файл ресурсов для конкретного языка. Что касается MUIRCT, файлы связаны с данными конфигурации ресурсов.

Синтаксис компилятора RC, используемый для ресурсов MUI

Параметры компилятора-кандидата подробно описаны в разделе Использование версии-кандидата. В этом разделе определяются только параметры, используемые для создания ресурсов многоязыкового интерфейса пользователя. Помните, что каждый параметр не учитывает регистр. Предполагается, что типы ресурсов являются нейтральными для языка, если не указано иное.

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

Параметры и аргументы

Параметр Функция
-h или -? Экран справки.
-Fm Использует указанный файл ресурсов для ресурсов, относящихся к конкретному языку. Обычно компилятор ресурсов создает файл ресурсов для конкретного языка. Однако он не создает файл, если существует какое-либо из следующих условий:
  • В RC-файле нет локализуемых ресурсов.
  • Единственным языком ресурсов, найденным в RC-файле, является нейтральный язык.
  • RC-файл содержит ресурсы для нескольких языков, не считая нейтрального языка. Если RC-файл содержит ресурсы для двух языков и один из них является нейтральным языком, компилятор считает файл одноязычным. При наличии локализуемых ресурсов компилятор создает файл ресурсов для конкретного языка.
-Q Использует указанный файл конфигурации ресурсов для получения типов ресурсов, которые будут размещаться в файле ресурсов для конкретного языка и файле LN. Дополнительные сведения см. в разделе Подготовка файла конфигурации ресурсов. В качестве альтернативы этому параметру можно использовать параметры -j и -k, но предпочтительнее использовать файл конфигурации ресурсов.
С помощью параметра -q с файлом конфигурации ресурсов можно реализовать разделение на основе элементов и предоставить атрибуты, которые будут содержать конфигурацию двоичного ресурса в файле ресурсов LN и языка. Это разделение невозможно с помощью параметров -j и -k. Примечание: Процесс разделения компилятора-кандидата работает неправильно, если ресурсы и сведения о версии хранятся в разных файлах конфигурации ресурсов. В этом случае компилятор-кандидат не разделяет сведения о версии. Поэтому при связывании файла ресурсов для конкретного языка возникает ошибка компоновщика, так как файл не содержит ресурсов версии.
-g Указывает конечный идентификатор резервного языка в шестнадцатеричном формате.
-g1 Создает RES-файл MUI, даже если ресурс VERSION является единственным локализуемым содержимым. По умолчанию компилятор-кандидат не создает RES-файл, если единственным локализуемым ресурсом является VERSION.
-g2 Указывает пользовательский номер версии, используемый при вычислении контрольной суммы.
mui_res_name Файл ресурсов для языковых ресурсов.
rc_config_file_name Файл конфигурации ресурсов.
langid Идентификатор языка.
version Пользовательский номер версии в таком формате, как "6.2.0.0".

 

Пример использования компилятора-кандидата для создания ресурсов MUI

Чтобы проиллюстрировать операцию компилятора-кандидата с ресурсами MUI, давайте рассмотрим следующую командную строку для файла ресурсов Myfile.rc:

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

Эта командная строка приводит к тому, что компилятор-кандидат выполняет следующие действия:

  • Создайте файл ресурсов для конкретного языка Myfile_res.res и файл ресурсов, не зависящий от языка, который по умолчанию имеет значение Myfile.res на основе имени RC-файла.
  • Добавьте типы ресурсов 2 (элемент 5 6 7 8 9 10 11 12), 4, 5, 6, 9, 11, 16, 23, 240, 1024 MY_TYPE в RES-файл для конкретного языка, если они находятся в RC-файле.
  • Добавьте тип ресурса 16 вместе с другими типами ресурсов, описанными в файле ресурсов, в RES-файл, не зависящий от языка, и в RES-файл для конкретного языка. Обратите внимание, что в этом примере тип ресурса 16 добавляется в двух местах.
  • Выберите значение атрибута UltimateFallbackLanguage для вставки в данные конфигурации ресурсов LN-файла на основе следующих критериев, упорядоченных от самого высокого к самому низкому:
    • Атрибут UltimateFallbackLanguage в файле конфигурации ресурсов, если он передается в качестве входных данных.
    • Значение атрибута языка для вставки в данные конфигурации ресурсов на основе порядка языка компилятора-кандидата (не зависящий от языка язык и язык файла ресурсов для конкретного языка). Рекомендации включают язык в RC-файле, значение языка параметра -gl и 0x0409 идентификатора для английского языка (США).

Комментарии

Если в элемент neutralResources включен любой тип ресурса ICON(3), DIALOG(5), STRING(6) или VERSION(16), необходимо дублировать эту запись в элементе localizedResources в файле конфигурации ресурсов.

Справочник по многоязычным пользовательским интерфейсам

Управление ресурсами MUI

Локализация ресурсов и создание приложения