병렬 공유를 위한 Win32 어셈블리 설치

다음은 Win32 어셈블리를 설치하는 Windows Installer 패키지를 만드는 방법을 설명합니다. 패키지는 애플리케이션의 공유 사용을 위해 Winsxs 폴더에 병렬 어셈블리를 설치합니다. 패키지를 설치한 후에는 어셈블리 매니페스트 파일의 어셈블리에 대한 의존성을 지정하는 모든 애플리케이션에서 공유 어셈블리를 전역적으로 사용할 수 있습니다. 설치 관리자는 시스템에 병렬 어셈블리를 전역적으로 등록하지 않습니다.

통합 모듈을 사용하여 공유 병렬 어셈블리를 설치할 수 있습니다.

계속하기 전에 어셈블리 없이 Windows Installer 패키지를 작성하는 방법을 이해해야 합니다. 간단한 설치를 작성하는 방법에 대한 예제는 설치 예제를 참조하세요.

공유 어셈블리를 병렬로 설치하는 방법

  1. Win32 어셈블리를 포함하는 Windows Installer 구성 요소를 정의합니다. 이 구성 요소에는 항상 어셈블리와 함께 설치하거나 제거해야 하는 다른 리소스가 포함될 수 있습니다. 어셈블리가 없는 설치와 마찬가지로 애플리케이션의 다른 모든 구성 요소를 작성할 수 있습니다. Win32 어셈블리를 포함하는 구성 요소의 Component 테이블에 행을 추가합니다. 이 구성 요소 코드에 유효한 Windows Installer GUID를 입력합니다. 매니페스트 파일을 이 구성 요소의 키 경로로 사용하지 마세요.
  2. 구성 요소를 Windows Installer 기능에 연결하는 FeatureComponents 테이블에 행을 추가합니다. 자세한 내용은 구성 요소 및 기능을 참조하세요. Windows Installer 기능은 사용자가 인식할 수 있는 애플리케이션 기능의 일부여야 합니다. 어셈블리는 사용자가 이 기능을 선택하거나 애플리케이션에서 오류가 발생할 때 활성화됩니다. 어셈블리가 추가 기능을 정의하는 경우 기능의 특성에 대한 Feature 테이블에 추가 행을 추가합니다. 통합 모듈을 작성할 때는 이 단계가 필요하지 않습니다.
  3. 병렬 어셈블리의 경우 바인딩 및 활성화 정보(예: COM 클래스, 인터페이스 및 형식 라이브러리)는 레지스트리가 아닌 매니페스트 파일에 저장됩니다. 공유 어셈블리는 이 정보를 어셈블리 매니페스트에 저장합니다. 병렬 어셈블리를 지원하는 시스템에서 설치 관리자는 Extension 테이블, Verb 테이블, TypeLib 테이블, MIME 테이블, Class 테이블, ProgId 테이블AppId 테이블에 입력된 구성 요소에 대한 정보 처리를 건너뜁니다. 바인딩 및 활성화 정보는 병렬 어셈블리 공유를 지원하지 않는 시스템에서 사용하기 위해 이러한 테이블에 입력할 수 있습니다.
  4. 병렬 설치는 어셈블리를 전역적으로 등록하지 않으며, SelfReg 테이블에 자체 등록 정보가 입력된 경우 설치 관리자가 구성 요소 자체 등록을 건너뜁니다. 자체 등록 정보는 병렬 어셈블리 공유를 지원하지 않는 시스템에서 구성 요소의 자체 등록을 위해 SelfReg 테이블에 입력할 수 있습니다.
  5. 다른 레지스트리 정보(구성 요소의 바인딩 및 활성화 또는 자체 등록 제외)를 Registry 테이블, RemoveRegistry 테이블Environment 테이블에 추가합니다.
  6. 공유 어셈블리이므로 .local 파일을 생성하지 않습니다. IsolatedComponent 테이블에 이 구성 요소에 대한 정보를 포함하지 마세요. 설치 관리자는 병렬 공유를 지원하는 운영 체제에서 이 구성 요소에 대한 IsolatedComponent 테이블을 건너뜁니다. .local 파일을 지원하는 시스템에서 어셈블리를 프라이빗으로 지정하려면 IsolatedComponent 테이블에 정보를 추가합니다.
  7. 병렬 공유를 사용하도록 설정하려면 Win32 어셈블리를 Winsxs 폴더에 설치해야 합니다. 이 작업을 수행하려면 어셈블리에 대한 MsiAssembly 테이블의 File_Application 열을 null로 둡니다. 그러면 설치 관리자가 구성 요소의 폴더 대신 WinSxS 폴더에 어셈블리를 설치하도록 알릴 수 있습니다. Win32 어셈블리가 포함된 구성 요소의 MsiAssembly 테이블에 행을 추가합니다. MsiAssembly 테이블의 Attributes 필드에 값 1을 입력하여 Win32 어셈블리임을 지정합니다. 공유 어셈블리의 경우 File_Application 필드를 비워 둡니다. InstallExecuteSequence 테이블 또는 AdvtExecuteSequence 테이블MsiPublishAssemblies 작업을 추가합니다. InstallExecuteSequence 테이블에 MsiUnpublishAssemblies 작업을 추가합니다.
  8. 구성 요소의 MsiAssemblyName 테이블에 행을 추가합니다. 매니페스트의 assemblyIdentity 섹션에 지정된 각 이름 및 값 쌍에 대해 하나의 행을 추가합니다. 예제는 MsiAssemblyName 테이블을 참조하세요.