통합 모듈 Directory 테이블 작성
통합 모듈을 .msi 파일에 적용하여 설치에 디렉터리를 추가할 수 있지만 기존 디렉터리를 바꾸거나 제거할 수는 없습니다. Directory 테이블은 통합 모듈이 대상 설치에 제공하는 디렉터리의 레이아웃을 지정합니다. Directory 테이블은 모든 통합 모듈에 필요합니다.
통합 모듈에서 Directory 테이블을 작성할 때는 다음 지침을 사용합니다. 자세한 내용은 Directory 테이블 및 Directory 테이블 사용을 참조하세요.
통합 모듈에서 추가한 디렉터리 구조에는 단일 루트 디렉터리가 있어야 합니다. 루트 이름은 TARGETDIR이어야 합니다. 사용자는 통합 중에 TARGETDIR 값을 변경하여 모듈의 디렉터리 구조를 대상의 디렉터리 트리에 연결할 위치를 지정할 수 있습니다.
Directory 테이블 이외의 통합 모듈 테이블은 디렉터리 위치를 TARGETDIR에 직접 참조해서는 안 됩니다. 사용자가 TARGETDIR 값을 변경하면 이러한 참조의 위치가 변경됩니다.
통합 모듈의 테이블은 TARGETDIR의 자식 디렉터리 위치 또는 통합 모듈 트리의 다른 디렉터리 위치를 참조해야 합니다. 다음을 수행하여 통합 모듈에서 TARGETDIR을 디렉터리의 부모로 지정합니다. Directory 열에 디렉터리를 입력하고 Directory_Parent 열에 TARGETDIR을 입력합니다. DefaultDir 열에서 "." 표기법을 사용하여 이 디렉터리가 하위 디렉터리가 없는 TARGETDIR에 있음을 나타냅니다. 자세한 내용은 Directory 테이블 사용을 참조하세요.
통합 모듈에서 추가한 디렉터리의 이름은 통합 모듈 데이터베이스에서 기본 키 이름 지정에 설명된 명명 규칙을 사용해야 합니다. 여기에는 SystemFolder 속성 및 ProgramFilesFolder 속성과 같은 속성을 통해 미리 정의된 디렉터리가 포함됩니다.
Directory 테이블의 모든 항목에 GUID를 추가합니다(TARGETDIR 제외). 여기에는 Windows Installer SystemFolder 속성을 지정하는 Directory 테이블 항목이 포함됩니다(예: SystemFolder.00000000_0000_0000_0000_000000000000). 라이브러리 Mergemod.dll은 사용자 지정 작업을 추가하여 SystemFolder 속성을 설정합니다.
미리 정의된 디렉터리가 통합 모듈에 포함되면 통합 도구는 자동으로 사용자 지정 작업 유형 51을 대상 데이터베이스에 추가합니다. 통합 모듈 작성자는 CustomAction 테이블도 포함되어 있는지 확인해야 합니다. CustomAction 테이블이 비어 있을 수 있지만, 이 테이블은 대상 데이터베이스에 있어야 하며 수정된 미리 정의된 디렉터리를 올바른 위치에 쓰도록 보장합니다. 예를 들어 시스템 디렉터리가 통합 모듈에 포함된 경우 통합 모듈 작성자는 사용자 지정 작업 테이블이 있는지 확인해야 합니다.
이러한 유형 51 사용자 지정 작업의 생성에 대한 일치 알고리즘은 디렉터리 이름이 미리 정의된 SystemFolder 속성 중 하나로 시작하는지 여부만 확인합니다. 디렉터리 이름이 디렉터리 속성과 정확히 같은지 확인하지는 않습니다. 이러한 표준 폴더 이름 중 하나로 시작하는 디렉터리는 나머지 이름이 GUID가 아니더라도 유형 51 사용자 지정 작업을 가져옵니다. 작성자는 SystemFolder 속성 중 하나로 시작하는 파생 기본 키에서 가양성 일치 및 의도하지 않은 사용자 지정 작업을 생성하지 않도록 주의해야 합니다.
다음은 통합 모듈의 Directory 테이블과 예상되는 확인된 디렉터리의 예입니다.
디렉터리 | Directory_Parent | DefaultDir |
---|---|---|
TARGETDIR | SourceDir | |
Dir00.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | TARGETDIR | .:MMM_Prog |
SystemFolder.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | TARGETDIR | MMM_Sys |
Dir02.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | Dir00.BC82E350_ C7FC_11d1_ A848_006097ABDE17 | MFC_OCX |
위의 Directory 테이블을 사용하는 통합 모듈은 다음 디렉터리 구조를 생성해야 합니다.
디렉터리 | 대상 | 원본 |
---|---|---|
Dir00.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | [통합 모듈의 설치 지점]\ | [통합 모듈의 원본 지점]\MMM_Prog |
SystemFolder.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | [SystemFolder]\ | [통합 모듈의 원본 지점]\MMM_Sys |
Dir02.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | [통합 모듈의 설치 지점]\MFC_OCX | [통합 모듈의 원본 지점]\MMM_Prog\MFC_OCX |