레지스트리 테이블

Registry 테이블에는 애플리케이션이 시스템 레지스트리에서 설정해야 하는 레지스트리 정보가 들어 있습니다.

Registry 테이블에는 다음과 같은 열이 있습니다.

Column 형식 Nullable
레지스트리 식별자 Y N
Root 정수 N N
RegPath N N
속성 Formatted N Y
Formatted N Y
Component_ 식별자 N N

 

Registry

레지스트리 레코드를 식별하는 데 사용되는 기본 키입니다.

Root

레지스트리 값에 대해 미리 정의된 루트 키입니다. 이 필드에 -1 값을 입력하여 루트 키가 설치 유형에 종속되도록 합니다. 다음 표의 다른 값 중 하나를 입력하여 레지스트리 값을 특정 루트 키 아래에 쓰도록 합니다.

상수 16진수 Decimal 루트 키
(없음) - 0x001 -1 사용자별 설치인 경우 레지스트리 값은 HKEY_CURRENT_USER 아래에 기록됩니다. 컴퓨터별 설치인 경우 레지스트리 값은 HKEY_LOCAL_MACHINE 아래에 기록됩니다. 컴퓨터별 설치는 ALLUSERS 속성을 1로 설정하여 지정됩니다.
msidbRegistryRootClassesRoot 0x000 0 HKEY_CLASSES_ROOT설치 관리자는 사용자별 설치 컨텍스트에서 설치하는 동안 HKCU\Software\Classes 하이브에 값을 기록하거나 값을 제거합니다.
설치 관리자는 컴퓨터별 설치 중에 HKLM\Software\Classes 하이브에 값을 기록하거나 값을 제거합니다.
msidbRegistryRootCurrentUser 0x001 1 HKEY_CURRENT_USER
msidbRegistryRootLocalMachine 0x002 2 HKEY_LOCAL_MACHINE
msidbRegistryRootUsers 0x003 3 HKEY_USERS

 

HKCU 하이브에 기록된 레지스트리 항목은 Component 테이블의 Attributes 열에 RegistryKeyPath 비트가 설정된 구성 요소를 참조하는 것이 좋습니다. 이렇게 하면 설치 관리자가 동일한 컴퓨터에 여러 사용자가 있을 때 필요한 레지스트리 항목을 기록합니다.

Key

레지스트리 값에 대한 지역화 가능한 키입니다.

Name

이 열에는 레지스트리 값 이름(지역화 가능)이 포함됩니다. Null이면 값 열에 입력된 데이터가 기본 레지스트리 키에 기록됩니다.

값 열이 Null이면 Name 열의 다음 표에 표시된 문자열은 특별한 의미를 갖습니다.

String 의미
+ 키가 없으면 구성 요소가 설치될 때 생성됩니다.
- 키가 있으면 구성 요소가 제거될 때 모든 값 및 하위 키와 함께 삭제됩니다.
* 키가 없으면 구성 요소가 설치될 때 생성됩니다. 또한 키가 있으면 구성 요소가 제거될 때 모든 값 및 하위 키와 함께 삭제됩니다.

 

구성 요소가 설치될 때 해당 값과 하위 키와 함께 설치된 레지스트리 키를 삭제하려면 RemoveRegistry 테이블을 사용해야 합니다.

Value

이 열은 지역화 가능한 레지스트리 값입니다. 필드는 Formatted입니다. 값이 다음 접두사(예: #%value) 중 하나에 연결된 경우 값은 표에 설명된 대로 해석됩니다. 각 접두사는 숫자 기호(#)로 시작합니다. 값이 두 개 이상의 연속 숫자 기호(#)로 시작하는 경우 첫 번째 #은 무시되고 값이 해석되고 문자열로 저장됩니다.

접두사 의미
#x 값이 16진수 값(REG_BINARY)으로 해석 및 저장됩니다.
#% 값이 확장 가능한 문자열(REG_EXPAND_SZ)로 해석 및 저장됩니다.
# 값이 정수(REG_DWORD)로 해석 및 저장됩니다.

 

  • 값에 시퀀스 물결표 [~]가 포함된 경우 값은 Null로 구분된 문자열 목록(REG_MULTI_SZ)으로 해석됩니다. 예를 들어 3개의 문자열 a, b 및 c가 포함된 목록을 지정하려면 "a[~]b[~]c"를 사용합니다.
  • 값 내의 시퀀스 [~]는 개별 문자열을 구분하고 Null 문자로 해석 및 저장됩니다.
  • 문자열 목록 앞에 [~]가 있으면 문자열은 기존 레지스트리 값 문자열에 추가됩니다. 추가 문자열이 레지스트리 값에 이미 있는 경우 문자열의 원래 항목이 제거됩니다.
  • 문자열 목록 끝 다음에 [~]가 있으면 문자열은 기존 레지스트리 값 문자열 앞에 추가됩니다. 앞에 추가하는 문자열이 레지스트리 값에 이미 있는 경우 문자열의 원래 항목이 제거됩니다.
  • [~]이 시작과 끝 둘 다에 있거나 문자열 목록의 시작과 끝에 있지 않은 경우 문자열은 기존 레지스트리 값 문자열을 대체합니다.
  • 그렇지 않으면 값이 문자열(REG_SZ)로 해석 및 저장됩니다.

Component_

레지스트리 값의 설치를 제어하는 구성 요소를 참조하는 Component 테이블의 첫 번째 열에 대한 외부 키입니다.

설명

시퀀스 테이블WriteRegistryValuesRemoveRegistryValues 작업은 이 테이블의 정보를 처리합니다. 시퀀스 테이블 사용에 대한 자세한 내용은 시퀀스 테이블 사용을 참조하세요.

레지스트리 정보는 해당 구성 요소가 로컬로 설치되거나 원본에서 실행되도록 선택된 경우 시스템 레지스트리에 기록됩니다.

설치 관리자는 키 아래의 마지막 값 또는 하위 키를 제거한 후 레지스트리 키를 제거합니다. 설치를 제거할 때 빈 레지스트리 키가 제거되지 않도록 하려면 유지해야 하는 키 아래에 더미 값을 쓰고 Name 열에 +를 입력합니다. *가 Name 열에 있으면 구성 요소가 제거될 때 모든 값과 하위 키와 함께 키가 삭제됩니다.

사용자 지정 작업을 사용하여 트랜잭션을 설치, 제거 또는 복구하는 동안 Registry 테이블에 행을 추가할 수 있습니다. 이러한 행은 Registry 테이블에 유지되지 않으며 정보는 현재 트랜잭션 중에만 사용할 수 있습니다. 따라서 사용자 지정 작업은 이러한 추가 행의 정보가 필요한 모든 설치, 제거 또는 복구 트랜잭션에서 실행되어야 합니다. 사용자 지정 작업은 작업 시퀀스에서 RemoveRegistryValuesWriteRegistryValues 작업 앞에 와야 합니다.

레지스트리 키를 보호하는 방법에 대한 자세한 내용은 MsiLockPermissionsEx 테이블LockPermissions 테이블을 참조하세요.

유효성 검사

ICE02
ICE03
ICE06
ICE32
ICE38
ICE43
ICE46
ICE49
ICE53
ICE55
ICE57
ICE70
ICE80