Share via


패키지에 어셈블리 추가

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

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

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

참고

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

 

Win32 어셈블리 추가

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

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

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

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

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

MsiAssemblyName 테이블

구성 요소 속성
ComponentA 속성 simple
ComponentA 버전 1.0.0.0
ComponentA 문화권 중립
ComponentA publicKeyToken 9d1ec8380f483f5a