다음을 통해 공유


패키지에 어셈블리 추가

Windows Installer 개발자는 이 항목의 지침을 사용하여 어셈블리가 포함된 Windows Installer 패키지를 작성할 수 있습니다.

다음 지침은 Win32 어셈블리 및 Microsoft .NET Framework의 공용 언어 런타임에서 사용하는 어셈블리에 적용됩니다.

  • Windows Installer 구성 요소에는 하나 이상의 어셈블리가 포함되어서는 안 됩니다.
  • 어셈블리의 모든 파일은 단일 구성 요소에 있어야 합니다.
  • 어셈블리를 포함하는 각 구성 요소는 MsiAssembly 테이블에 항목이 있어야 합니다.
  • 각 어셈블리의 강력한 어셈블리 캐시 이름은 MsiAssemblyName 테이블에 작성되어야 합니다.
  • 어셈블리에 대한 COM Interop을 등록할 때 클래스 테이블 대신 Registry 테이블을 사용합니다.
  • 강력한 이름이 같은 어셈블리는 동일한 어셈블리입니다. 다른 애플리케이션에서 동일한 어셈블리를 설치하는 경우 어셈블리를 포함하는 구성 요소는 해당 Component 테이블에서 ComponentId에 대해 동일한 값을 사용해야 합니다.

메모

제품 광고는 다른 애플리케이션에서 설치하고 사용할 수 있는 어셈블리를 식별합니다. 제품 광고는 프라이빗 어셈블리를 식별하지 않습니다.

 

Win32 어셈블리 추가

Win32 어셈블리를 포함할 때 다음 지침을 사용합니다.

  • Win32 어셈블리를 포함하는 구성 요소에 대한 구성 요소 테이블의 KeyPath 값은 Null이 아니어야 합니다.
  • Win32 정책 어셈블리를 포함하는 구성 요소에 대한 구성 요소 테이블의 KeyPath 값은 매니페스트 파일이어야 합니다.
  • 정책 어셈블리가 아닌 Win32 어셈블리가 포함된 구성 요소에 대한 Component 테이블의 KeyPath 값은 매니페스트 파일이나 카탈로그 파일이 아니어야 합니다. 어셈블리에서 다른 파일이어야 합니다.
  • Win32 어셈블리 매니페스트의 assemblyIdentity 섹션에 나열된 각각의 이름 및 값 쌍에 대해 MsiAssemblyName 테이블에 행을 추가합니다.

.NET Framework와 함께 사용되는 어셈블리 추가

.NET Framework의 공용 언어 런타임에서 사용하는 어셈블리를 포함할 때 다음 지침을 사용합니다.

  • 어셈블리가 포함된 구성 요소에 대한 Component 테이블의 KeyPath 값은 Null이 아니어야 합니다.
  • 공용 언어 런타임에서 사용하는 어셈블리를 전역 어셈블리 캐시에 설치하는 경우 MsiAssembly 테이블의 File_Application 열에 있는 값은 Null이어야 합니다.
  • 어셈블리의 강력한 이름의 각 특성에 대해 MsiAssemblyName 테이블에 행을 추가합니다. 모든 어셈블리에는 MsiAssemblyName 테이블에 지정된 Name, Version 및 Culture 특성이 있어야 합니다. 전역 어셈블리에는 publicKeyToken 특성이 필요합니다. 다음 표는 공용 언어 런타임에서 사용할 전역 어셈블리에 대한 MsiAssemblyName 테이블의 예입니다.

MsiAssemblyName 테이블

구성 요소 이름
컴포넌트A 이름 간단한
컴포넌트A 버전 1.0.0.0
ComponentA 문화 중립
ComponentA 퍼블릭키토큰 (public key token) 9d1ec8380f483f5a