다음을 통해 공유


ICEM09

ICEM09는 통합 모듈이 미리 정의된 디렉터리를 안전하게 처리하는지 확인합니다. 모듈의 구성 요소가 "ProgramFilesFolder" 또는 "StartMenuFolder"와 같은 미리 정의된 시스템 디렉터리에 디렉터리를 설치하지 않는지 확인하여 이 작업을 수행합니다. 대신 모듈은 고유한 이름(통합 모듈 명명 규칙을 사용하여 생성됨)을 가진 디렉터리를 사용해야 하며 사용자 지정 작업을 사용하여 적절한 대상 디렉터리를 대상으로 지정해야 합니다. 이 방법을 사용하면 모듈이 최종 데이터베이스의 기존 디렉터리 구조와 충돌하지 않습니다. ICEM09는 이 기술이 작동하는 데 필요한 사용자 지정 작업이 존재하지 않거나(통합 도구에서 생성할 수 있도록), 올바른 형식으로 존재하는지(예상대로 작동하도록) 확인합니다.

ICEM09에서 보고한 경고 또는 오류를 수정하지 못하면 통합 모듈의 클라이언트에 문제가 발생할 수 있습니다. ProgramFilesFolder와 같은 기본 키가 있는 Directory 테이블 행이 데이터베이스에 있는 경우가 많습니다. 따라서 모듈의 구성 요소가 ProgramFilesFolder와 같은 미리 정의된 디렉터리에 직접 설치되는 경우 모듈의 디렉터리 항목이 이미 존재하는 행과 충돌할 수 있습니다. 이런 상황에서는 모듈 사용자가 기존 원본 디렉터리에 맞게 모듈에서 원본 파일을 분할해야 합니다.

결과

ICEM09는 모듈 구성 요소가 미리 정의된 시스템 디렉터리에 디렉터리를 설치하여 기존 디렉터리 구조와 이름이 충돌할 가능성이 있는 경우 오류 또는 경고를 보고합니다.

ICEM09가 표시된 데이터베이스 항목이 포함된 모듈에 대해 다음 경고를 게시합니다.

Warning: The component 'Component1.<GUID>' installs directly into the pre-defined 
directory 'ProgramFilesFolder'. It is recommended that merge modules alias 
all such directories to unique names.

Windows Installer 속성과 일치하지 않으므로 고유하도록 통합 모듈 디렉터리의 이름을 바꿉니다. 그런 다음, 동일한 이름의 속성을 Windows Installer 디렉터리 값으로 설정합니다. 디렉터리 확인이 수행되면 디렉터리에 동일한 이름의 속성이 있으므로 디렉터리의 설치 위치가 해당 속성의 값입니다. 파일은 고유한 원본 위치에서 동일한 대상 위치로 이동합니다. 이 프로세스에서는 통합 충돌을 완전히 제거해야 합니다.

Warning: The 'ModuleInstallExecuteSequence' table contains a type 51 action 
(StartMenuFolder.<GUID>) for a pre-defined directory, but this action 
does not have sequence number '1'

작업에 시퀀스 번호 1이 없으면 시퀀스에서 충분히 효과적으로 작동할 수 있을 만큼 초기에 대상 데이터베이스에 통합되지 않을 수 있습니다.

이 경고를 해결하려면 시퀀스 번호를 1로 설정합니다. 대부분의 최신 통합 도구(일부 이전 버전이 아님)는 통합 시 이러한 사용자 지정 작업을 생성하므로 항상 통합 모듈에 작업을 명시적으로 작성할 필요가 없습니다.

Warning: The 'CustomAction' table contains a type 51 action (MyAppDataFolderAction) 
for a pre-defined directory, but the name is not the same as the target directory. 
Many merge tools will generate duplicate actions."

CustomAction 열은 CustomAction 테이블의 기본 키이므로 미리 작성된 작업 이름이 다르기 때문에 일부 통합 도구에서 중복 작업을 생성할 수 있습니다.

이 경고를 해결하려면 작업의 이름을 대상 디렉터리와 동일하게 지정합니다. 대부분의 최신 통합 도구(일부 이전 버전이 아님)는 통합 시 이러한 사용자 지정 작업을 생성하므로 항상 통합 모듈에 작업을 명시적으로 작성할 필요가 없습니다.

Directory 테이블

디렉터리 Directory_Parent DefaultDir
ProgramFilesFolder Directory1 A
StartMenuFolder Directory2 B:C
AppDataFolder Directory3 D
MyPicturesFolder Directory4 E

 

Component 테이블

구성 요소 디렉터리
Component1.<GUID> ProgramFilesFolder
Component2.<GUID> StartMenuFolder
Component3.<GUID> AppDataFolder
Component4.<GUID> MyPicturesFolder

 

CustomAction 테이블

CustomAction 형식 원본 대상
StartMenuFolder.<GUID> 51 StartMenuFolder.<GUID> [StartMenuFolder]
MyAppDataFolderAction 51 AppDataFolder.<GUID> [AppDataFolder]

 

ModuleInstallExecuteSequence 테이블

작업 시퀀스 BaseAction After 조건
StartMenuFolder.<GUID> 100

 

통합 모듈 ICE 참조