리소스 유틸리티

이 항목에서는 MUI 애플리케이션을 빌드하는 데 사용되는 두 가지 유틸리티에 대해 설명합니다. MUIRCT는 MUI 관련 도구이지만 MUI는 표준 Windows RC 컴파일러 유틸리티도 사용합니다. 이러한 유틸리티 사용에 대한 지침은 리소스 지역화 및 애플리케이션 빌드에 제공됩니다.

MUIRCT 유틸리티

MUIRCT(Muirct.exe)는 표준 실행 파일을 LN 파일 및 언어별(지역화 가능) 리소스 파일로 분할하기 위한 명령줄 유틸리티입니다. 결과 파일 각각에는 파일 연결에 대한 리소스 구성 데이터가 포함됩니다. MUIRCT는 Windows Vista용 Microsoft Windows SDK 포함되어 있습니다.

참고

Windows Vista부터 Win32 리소스 로더는 언어별 파일과 LN 파일에서 리소스를 로드하도록 업데이트됩니다.

 

MUIRCT 사용량

  1. rc_config 파일에 따라 이진 파일을 기본 이진 파일 및 mui 파일로 분할합니다.

    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 -c로 지정된 checksum_file 여러 언어의 리소스를 포함할 때 사용할 언어를 지정합니다. 이 스위치는 -c 스위치와 함께만 사용할 수 있습니다. 언어 식별자는 10진수 또는 16진수 형식일 수 있습니다. CHECKSUM_FILE 여러 언어의 리소스가 포함되어 있고 -b가 지정되지 않았거나 -b 스위치로 지정된 언어를 checksum_file 찾을 수 없는 경우 MUIRCT가 실패합니다.
-g LN 파일의 리소스 구성 데이터 섹션에서 최종 대체 언어로 포함할 언어 ID를 지정합니다. 리소스 로더가 스레드 기본 설정 UI 언어에서 요청된 .mui 파일을 로드하지 못하면 최종 대체 언어를 마지막 시도로 사용합니다. LangID 값은 10진수 또는 16진수 형식으로 지정할 수 있습니다. 예를 들어 영어(미국)는 -g 0x409 또는 -g 1033으로 지정할 수 있습니다.
-Q source_file rc_config 파일 레이아웃에 따라 output_LN_file 및 output_MUI_file 분할되도록 지정합니다. rc_config 파일은 .mui 파일로 추출할 리소스와 LN 파일에 남아 있는 리소스를 지정하는 XML 형식의 파일입니다. rc_config output_LN_file output_MUI_file 간에 리소스 종류와 개별 명명된 항목의 분포를 지정할 수 있습니다. source_file 단일 언어의 리소스를 포함하는 Win32 이진이어야 합니다. 그렇지 않으면 MUIRCT가 실패합니다. MUIRCT는 파일에 언어 ID 값 0만 있으면 표시되는 언어 중립적인 경우 파일을 분할하지 않습니다. output_LN_file 및 output_mui_file source_file 분할되는 언어 중립 및 .mui 파일의 이름입니다. 이러한 파일 이름은 선택 사항입니다. 지정하지 않으면 MUIRCT는 확장 .ln 및 .mui를 source_file 추가합니다. 일반적으로 파일을 배포하기 전에 ".ln" 확장을 제거해야 합니다. MUIRCT는 source_file 이름 및 파일 버전을 기반으로 체크섬을 계산하고 결과를 각 출력 파일의 리소스 구성 섹션에 삽입하여 output_LN_file 및 output_MUI_file 연결합니다. -c 스위치와 함께 사용하는 경우 -q 스위치가 우선합니다. -q 스위치와 함께 제공된 rc_config 파일에 체크섬 MUIRCT가 포함되어 있으면 -c 스위치를 무시하고 값의 체크섬 값을 삽입하고 파일을 LN 및.mui 파일에 rc_config. rc_config 체크섬 값을 찾을 수 없는 경우 MUIRCT는 -c 스위치의 동작에 따라 리소스 체크섬을 계산합니다.
-v 로깅에 대한 자세한 정보 수준을 지정합니다. 모든 기본 오류 메시지 및 작업 결과를 인쇄하려면 1을 지정합니다. .mui 파일 및 LN 파일에 포함된 리소스 정보(형식, 이름, 언어 식별자)도 포함하려면 2를 지정합니다. 기본값은 -v 1입니다.
-X MUIRCT가 .mui 파일의 리소스 섹션에 추가된 모든 리소스 유형을 표시하는 언어 ID를 지정합니다. LangID 값은 10진수 또는 16진수 형식으로 지정할 수 있습니다. 예를 들어 영어(미국)는 -x 0x409 또는 -x 1033으로 지정할 수 있습니다.
-E -c 스위치와 함께 제공되는 checksum_file 포함된 리소스 체크섬을 추출하고 지정된 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 지역화된 이진 소스 파일의 이름입니다. 와일드카드를 사용할 수 없습니다. 이 파일은 한 언어로만 리소스를 포함할 수 있습니다. 파일에 여러 언어로 된 리소스가 있는 경우 -b 스위치를 사용하지 않는 한 MUIRCT가 실패합니다. 값이 0인 언어 식별자가 있는 리소스가 파일에 포함된 경우 언어 식별자 0이 중립 언어를 나타내므로 MUIRCT는 파일을 분할하지 않습니다.
-d 스위치의 경우 source_filename 리소스 구성 데이터를 표시하기 위한 LN 파일 또는 언어별 리소스 파일입니다.
language_neutral_filename 선택 사항입니다. LN 파일의 이름입니다. 이 파일의 이름을 지정하지 않으면 언어 중립적 파일 이름으로 사용할 원본 파일 이름에 두 번째 확장명 ".ln"을 추가합니다. 일반적으로 파일을 배포하기 전에 ".ln" 확장을 제거해야 합니다. 참고: LN 파일에는 문자열이나 메뉴가 포함되어서는 안 됩니다. 수동으로 제거해야 합니다.
mui_filename 선택 사항입니다. 언어별 리소스 파일의 이름입니다. 이름을 지정하지 않으면 MUIRCT는 소스 파일 이름에 두 번째 확장명 ".mui"를 추가하여 파일 이름으로 사용합니다. 일반적으로 MUIRCT는 언어별 리소스 파일을 만듭니다. 그러나 다음 조건이 있는 경우 리소스 파일을 만들지 않습니다.
  • 원래 이진 파일에는 지역화할 수 있는 리소스가 없습니다.
  • 원래 이진 파일에 있는 유일한 리소스 언어는 중립 언어입니다.
  • 원래 이진 파일에는 중립 언어를 계산하지 않고 둘 이상의 언어에 대한 리소스가 있습니다. 이진 파일에 두 언어에 대한 리소스가 포함되어 있고 그 중 하나가 중립 언어인 경우 유틸리티는 파일을 단일 언어로 간주하고 지역화 가능한 리소스가 있는 경우 언어별 리소스 파일을 만듭니다.

 

MUIRCT 언어 출력

MUIRCT는 다음 순서에 따라 LN 파일 리소스 구성 데이터에 삽입할 "UltimateFallbackLanguage" 특성 값을 가장 높은 우선 순위에서 가장 낮은 순서로 선택합니다.

  1. 원본 리소스 구성 파일의 "UltimateFallbackLanguage" 특성(입력으로 전달되는 경우).
  2. -g 스위치로 지정된 언어입니다.
  3. 입력 파일 언어입니다.

MUIRCT는 다음 순서에 따라 .mui 파일 리소스 구성 데이터에 삽입할 "language" 특성 값을 선택합니다.

  1. 원본 리소스 구성 파일의 "language" 특성(입력으로 전달되는 경우).
  2. -x 스위치(force language)로 지정된 언어입니다.
  3. 입력 파일 언어입니다.

MUIRCT 체크섬 처리

일반적으로 운영 체제는 리소스 구성 파일을 통해 체크섬을 지정하지 않는 한 파일의 언어별 리소스에 대한 체크섬을 계산합니다. 체크섬이 LN 파일 및 모든 연결된 언어별 리소스 파일과 LN 및 언어 종속 일치의 리소스 구성에 있는 언어 특성에 대해 동일한 경우 리소스 로더는 리소스를 성공적으로 로드할 수 있습니다.

MUIRCT는 리소스 구성 데이터에 적절한 체크섬을 배치하는 몇 가지 방법을 지원합니다.

  1. 코드와 리소스를 모두 포함하는 각 언어에 대한 실행 파일을 빌드합니다. 그런 다음, MUIRCT를 사용하여 이러한 각 파일을 LN 파일 및 언어별 리소스 파일로 분할합니다. MUIRCT는 여러 번 실행되어 각 언어에 대한 리소스 파일을 생성합니다. 다음과 같은 방법으로 빌드를 수행할 수 있습니다.
    1. -q 스위치를 사용하여 리소스 구성 파일에서 체크섬 값을 지정합니다. MUIRCT는 생성된 모든 LN 파일 및 언어별 리소스 파일에 이 값을 배치합니다. 이 항목의 뒷부분에서 설명한 대로 이 값을 선택하기 위한 전략을 채택해야 합니다.
    2. -c 스위치(및 필요에 따라 -b 스위치)를 사용하여 MUIRCT에서 체크섬을 추출하는 리소스가 있는 단일 언어를 선택합니다.
    3. -z 스위치를 사용하여 MUIRCT가 항상 체크섬을 추출하는 리소스가 있는 단일 언어를 선택합니다. 다른 메서드를 사용하여 파일을 빌드한 후 이 체크섬을 적용합니다.
  2. 단일 언어에 대한 코드와 리소스를 모두 포함하는 실행 파일을 빌드합니다. 그런 다음, MUIRCT를 사용하여 LN 파일과 언어별 리소스 파일 간에 리소스를 분할합니다. 마지막으로 이진 지역화 도구를 사용하여 각 언어에 대한 결과 리소스 파일을 수정합니다.

체크섬 처리에 대한 가장 일반적인 규칙은 영어(미국) 리소스에 체크섬을 기반으로 하는 것입니다. 각 LN 파일에 대해 일관성이 있는 한 다른 규칙을 자유롭게 채택할 수 있습니다. 예를 들어 모든 애플리케이션에 체크섬을 기반으로 하는 프랑스어(프랑스) 리소스가 있는 한 소프트웨어 개발 기업이 영어(미국) 리소스 대신 프랑스어(프랑스) 리소스에 빌드하는 소프트웨어에서 체크섬을 기반으로 하는 것이 완벽하게 허용됩니다. 리소스 구성 파일을 사용하여 최대 1666자리의 임의 16진수 값을 체크섬으로 할당하는 것도 허용됩니다. 이 마지막 전략은 MUIRCT의 -z, -c 및 -b 스위치의 효과적인 사용을 배제합니다. 체크섬 값을 생성하려면 GuidGen 또는 다른 도구를 사용하여 메서드를 채택해야 합니다. 또한 이 전략을 사용하려면 지역화 가능한 새 리소스를 추가할 때 값을 수정할 시기를 결정하는 정책을 설정해야 합니다.

모든 파일에 영어(미국) 체크섬을 적용하려면 위에서 설명한 체크섬 처리 방법을 사용할 수 있습니다. 예를 들어 영어(미국)용 LN 파일 및 언어별 리소스 파일을 생성한 다음, MUIRCT -d 스위치를 사용하여 결과 체크섬을 가져올 수 있습니다. 이 체크섬을 리소스 구성 파일에 복사하고 MUIRCT와 함께 -q 스위치를 사용하여 체크섬을 다른 모든 파일에 적용할 수 있습니다.

MUIRCT와 함께 리소스 구성 파일 사용

MUIRCT를 사용할 때 리소스 구성 데이터를 지정할 수 있습니다. 리소스 구성 파일을 명시적으로 제공하든 그렇지 않든 모든 언어별 리소스 파일에는 연결된 리소스 파일이 있는 모든 LN 파일과 마찬가지로 리소스 구성 데이터가 있습니다. 예를 들면 다음과 같습니다.

  • -q 스위치를 사용하여 리소스 구성 파일을 지정하지만 입력 원본 파일에 지역화할 수 있는 리소스가 없는 경우 언어별 리소스 파일이 생성되지 않고 결과 LN 파일에 리소스 구성 데이터가 포함되지 않습니다. 또한 입력 원본 파일에 다국어 리소스가 있는 경우 MUIRCT는 파일을 분할하지 않습니다.

참고

예를 들어 리소스 구성 파일의 neutralResources 요소에 resourceType 요소가 없고 localizedResources 요소에 문자열과 메뉴가 포함된 경우 현재 MUIRCT의 동작이 일치하지 않습니다. 이러한 경우 MUIRCT는 다음과 같이 리소스를 분할합니다.

  • 원래 이진 파일의 모든 리소스(문자열 및 메뉴 포함)와 MUI 리소스는 LN 파일에 배치됩니다.
  • 문자열, 메뉴 및 MUI 리소스는 적절한 언어별 리소스 파일에 배치됩니다.

 

MUIRCT 사용에 대한 예제

표준 사용 예제

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

muirct -d myprog.exe.mui

-d 스위치를 사용하는 LN 파일 출력의 예

다음은 MUIRCT와 함께 -d 스위치를 사용하는 LN 파일 Shell32.dll 리소스 구성 데이터 출력의 예입니다.

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

-d 스위치를 사용하여 Language-Specific 리소스 파일 출력의 예

다음은 MUIRCT용 -d 스위치를 사용하여 .mui 파일 Shell32.dll.mui에서 출력되는 리소스 구성 데이터의 예입니다.

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 컴파일러(Rc.exe)는 리소스 정의 스크립트 파일(.rc 확장명)을 리소스 파일(.res 확장명)로 컴파일하기 위한 명령줄 유틸리티입니다. RC 컴파일러는 Windows SDK에 포함되어 있습니다. 이 문서에서는 리소스 로더의 MUI 관련 기능과 함께 RC 컴파일러를 사용하는 것만 설명합니다. 컴파일러에 대한 자세한 내용은 리소스 파일 정보를 참조하세요.

RC 컴파일러를 사용하면 단일 원본 집합, LN 파일 및 별도의 언어별 리소스 파일을 빌드할 수 있습니다. MUIRCT의 경우 파일은 리소스 구성 데이터에 의해 연결됩니다.

MUI 리소스에 사용되는 RC 컴파일러 구문

RC 컴파일러 스위치는 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 스위치를 사용할 수 없습니다. 참고: 리소스 및 버전 정보를 다른 리소스 구성 파일에 저장하는 경우 RC 컴파일러 분할 프로세스가 제대로 작동하지 않습니다. 이 경우 RC 컴파일러는 버전 정보를 분할하지 않습니다. 따라서 파일에 버전 리소스가 없기 때문에 언어별 리소스 파일을 연결하는 동안 링커 오류가 발생합니다.
-g 최종 대체 언어 식별자를 16진수로 지정합니다.
-g1 VERSION 리소스가 유일한 지역화 가능한 콘텐츠인 경우에도 MUI .res 파일을 만듭니다. VERSION이 지역화 가능한 유일한 리소스인 경우 기본적으로 RC 컴파일러는 .res 파일을 생성하지 않습니다.
-g2 체크섬을 계산할 때 사용할 사용자 지정 버전 번호를 지정합니다.
mui_res_name 언어별 리소스에 대한 리소스 파일입니다.
rc_config_file_name 리소스 구성 파일.
langid 언어 식별자입니다.
버전 "6.2.0.0"과 같은 형식의 사용자 지정 버전 번호입니다.

 

RC 컴파일러를 사용하여 MUI 리소스 빌드 예제

MUI 리소스를 사용하는 RC 컴파일러 작업을 설명하기 위해 리소스 파일 Myfile.rc에 대해 다음 명령줄을 살펴보겠습니다.

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

이 명령줄을 사용하면 RC 컴파일러에서 다음을 수행합니다.

  • .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 파일에 추가합니다.
  • 리소스 파일에 설명된 다른 리소스 종류와 함께 리소스 종류 16을 언어 중립적 .res 파일 및 언어별 .res 파일에 추가합니다. 이 예제에서는 리소스 종류 16이 두 위치에 추가됩니다.
  • 다음 기준에 따라 LN 파일 리소스 구성 데이터에 삽입할 "UltimateFallbackLanguage" 특성 값을 선택하고 우선 순위가 가장 높은 값에서 가장 낮은 값으로 정렬합니다.
    • 입력으로 전달되는 경우 리소스 구성 파일의 "UltimateFallbackLanguage" 특성입니다.
    • RC 컴파일러 언어 순서(언어 중립적 및 언어별 리소스 파일 언어)에 따라 리소스 구성 데이터에 삽입할 언어 특성 값입니다. 고려 사항에는 .rc 파일의 언어, -gl 스위치의 언어 값 및 영어(미국)에 대한 식별자 0x0409 포함됩니다.

설명

neutralResources 요소에 ICON(3), DIALOG(5), STRING(6) 또는 VERSION(16) 리소스 형식을 포함하는 경우 리소스 구성 파일의 localizedResources 요소에서 해당 항목을 복제해야 합니다.

다국어 사용자 인터페이스 참조

MUI 리소스 관리

리소스 지역화 및 애플리케이션 빌드