동시 설치
중첩 설치라고도 하는 동시 설치는 Windows Installer의 사용되지 않는 기능입니다. 동시 설치를 통해 설치된 애플리케이션은 고객이 올바르게 서비스하기 어렵기 때문에 결국 실패할 수 있습니다. 공용으로 릴리스할 제품을 동시 설치를 사용하여 설치하지 마세요. 동시 설치는 공용 릴리스용이 아닌 애플리케이션을 설치하는 데 사용될 때 통제된 회사 환경에서 적용 가능성이 제한될 수 있습니다. 동시 설치 설명서는 공용 배포용이 아닌 애플리케이션과 함께 동시 설치를 사용하려는 패키지 작성자를 위해 제공됩니다.
동시 설치 작업은 현재 설치를 실행하는 동안 다른 Windows Installer 패키지를 설치합니다. CustomAction 테이블에 동시 설치 작업을 작성하고 이 사용자 지정 작업을 시퀀스 테이블로 예약하는 방식으로 패키지에 동시 설치가 추가됩니다. CustomAction 테이블의 대상 필드에는 동시 설치에서 사용하는 공용 속성 설정 문자열이 포함되어 있습니다. CustomAction 테이블의 Source 필드는 동시 패키지를 나타냅니다. 동시 설치 작업은 현재 애플리케이션의 설치 패키지에서 설치한 애플리케이션만 다시 설치하거나 제거할 수 있습니다.
동시 설치 작업의 형식은 CustomAction 테이블의 형식 필드에 지정됩니다. 사용자 지정 작업 유형에 따라 동시 애플리케이션에 대한 패키지는 기본 패키지의 하위 스토리지에 속성으로 지정된 위치의 파일로 상주하거나, 사용자 컴퓨터의 보급된 애플리케이션으로 상주할 수 있습니다. 다음 유형의 사용자 지정 작업은 동시 설치를 수행합니다.
사용자 지정 작업 유형 | 설명 |
---|---|
사용자 지정 작업 유형 7 | 설치 패키지에 있는 제품의 동시 설치입니다. |
사용자 지정 작업 유형 23 | 현재 원본 트리 내에 있는 설치 관리자 패키지의 동시 설치입니다. |
사용자 지정 작업 유형 39 | 보급된 설치 관리자 패키지의 동시 설치입니다. |
동시 설치는 기본 설치와 동일한 사용자 인터페이스 및 로깅 설정을 공유합니다.
동시 설치 작업은 기본 설치 작업 시퀀스의 InstallInitialize 작업과 InstallFinalize 작업 사이에 배치해야 합니다. 기본 설치를 롤백하면 설치 관리자도 동시 설치를 롤백합니다. 설치 관리자가 동시 및 기본 설치의 롤백 정보를 결합하기 때문에 동시 설치 작업과 함께 지연된 실행을 사용할 필요가 없습니다. 롤백 설치 시 모든 변경 내용이 취소됩니다.
동시 설치 작업에 대한 반환 값은 다른 사용자 지정 작업의 경우와 동일합니다. 사용자 지정 작업 반환 값을 참조하세요.
시스템의 자동 다시 시작을 지정하거나 사용자에게 다시 시작을 요청하는 표준 또는 사용자 지정 작업은 동시 설치 내에서 다시 시작 또는 요청을 수행할 수도 있습니다.
설치 관리자가 동시 설치를 시작하면 동시 설치가 완료될 때까지 그리고 기본 설치를 계속하기 전에 다른 모든 설치가 잠깁니다. 설치 관리자는 동시 설치를 동기 사용자 지정 작업으로만 실행할 수 있습니다. 동기 및 비동기 사용자 지정 작업을 참조하세요. 사용자 지정 작업 반환 처리 옵션에 설명된 옵션 플래그는 none(+0) 또는 msidbCustomActionTypeContinue(+64)로 설정해야 합니다.
동시 설치 작업은 일반 설치에 MsiInstallProduct를 사용할 때와 동일한 방식으로 로컬에서 실행하거나, 원본에서 실행하거나, 다시 설치하거나, 제거할 애플리케이션을 설치할 수 있습니다. 설치 유형을 지정하려면 ADDLOCAL, ADDSOURCE, REINSTALL 또는 REMOVE 속성을 동시 설치 작업에 전달합니다.
동시 설치 작업은 쌍으로 작성할 수 있습니다. 한 작업은 설치에 사용되고 다른 작업은 동시 설치 제거에 사용됩니다. 사용자 지정 작업 유형 7 또는 사용자 지정 작업 유형 23은 일반적으로 설치에 사용됩니다. 사용자 지정 작업 유형 39는 일반적으로 부모 제품을 제거할 때 동시 설치를 제거하는 데 사용됩니다. CustomAction 테이블의 제거 사용자 지정 작업에 대한 레코드에는 Source 필드에 제품 코드 GUID가 포함되고 대상 필드에는 "REMOVE=ALL"이 포함될 수 있습니다. 두 사용자 지정 작업은 상호 배타적 조건을 사용하여 작업 시퀀스 테이블에서 작성해야 합니다. 예를 들어 제품을 설치하는 사용자 지정 작업은 조건 필드에 "설치되지 않음"이 포함될 수 있으며, 동시 설치를 제거하는 사용자 지정 작업은 조건 필드에 REMOVE="ALL"이 포함될 수 있습니다.
패키지에 비용을 쿼리하는 방법은 없습니다. 이렇게 하면 동시 설치 비용 계산이 어려워집니다. 동시 설치와 관련된 구성 요소의 폴더 및 최악의 비용을 나타내려면 ReserveCost 테이블에 행을 추가해야 합니다.
동시 설치 작업에서 사용할 수 있는 유일한 사용자 지정 작업 반환 처리 옵션은 none(+0) 또는 msidbCustomActionTypeContinue(+64)입니다.
부모 설치는 자체 패키지를 동시 설치 작업으로 호출할 수 없습니다.
컴퓨터별 설치에서 사용자별 동시 설치를 실행하려고 하면 설치 관리자는 기본적으로 부모 설치를 사용자별로 등록합니다. 이렇게 하면 설치 관리자가 실제로 사용자별로 등록된 애플리케이션을 컴퓨터별로 제거하려고 하기 때문에 설치 관리자가 애플리케이션을 잘못 제거할 수 있습니다. 동시 설치 상태가 부모 설치 상태를 추적하도록 하려면 CustomAction 테이블의 대상 열에 ALLUSERS="[ALLUSERS]"를 입력하십시오. 이 경우 동시 설치는 부모가 컴퓨터 단위인 경우 컴퓨터별이고 부모가 사용자 단위인 경우 사용자별입니다.
개발자는 동시 설치를 작성할 때 다음과 같은 경고를 주의해야 합니다.
- 동시 설치는 구성 요소를 공유할 수 없습니다.
- 관리 설치에는 동시 설치가 포함할 수 없습니다.
- 동시 설치에서는 패치 및 업그레이드가 작동하지 않을 수 있습니다.
- 설치 관리자가 동시 설치 비용을 제대로 산정하지 않을 수 있습니다.
- 통합 진행률 표시줄을 동시 설치와 함께 사용할 수 없습니다.
- 보급할 리소스는 동시 설치로 설치할 수 없습니다.
- 애플리케이션의 동시 설치를 수행하는 패키지는 부모 제품이 제거될 때 동시 애플리케이션도 제거해야 합니다.
패키지가 동시 설치로 설치되지 않도록 하려면 다음 조건문 중 하나를 LaunchCondition 테이블에 추가합니다. 이렇게 하면 패키지가 다른 설치에 의해 실행되는 동시 설치 작업에 의해 설치되는 것을 방지합니다. 이렇게 해도 RemoveExistingProducts 작업에 의해 패키지가 제거되는 것을 방지할 수 없습니다. ParentOriginalDatabase 속성 및 ParentProductCode 속성도 참조하세요.
"Not ParentProductCode"
"Not ParentOriginalDatabase"