다음을 통해 공유


VSPackage 등록

VSPackages는 패키지가 설치되어 있으며 로드되어야 함을 Visual Studio에 알려야 합니다. 이 프로세스는 레지스트리에 정보를 작성하여 수행됩니다. 이는 설치 관리자의 일반적인 작업입니다.

참고 항목

VSPackage 개발 중에 자체 등록을 사용하는 것은 허용되는 사례입니다. 그러나 VSIP(Visual Studio Industry Partner) 프로그램 파트너는 자체 등록을 설치의 일부로 사용하는 제품을 제공할 수 없습니다.

Windows Installer 패키지의 레지스트리 항목은 일반적으로 레지스트리 테이블에서 만들어집니다. 레지스트리 테이블에서 파일 확장명을 등록할 수도 있습니다. 그러나 Windows Installer는 ProgId(프로그래밍 ID), 클래스, 확장 및 동사 테이블을 통해 기본 제공 지원을 제공합니다. 자세한 내용은 데이터베이스 테이블을 참조하세요.

레지스트리 항목이 선택한 병렬 전략에 적합한 구성 요소와 연결되어 있는지 확인합니다. 예를 들어 공유 파일에 대한 레지스트리 항목은 해당 파일의 Windows Installer 구성 요소와 연결되어야 합니다. 마찬가지로 버전별 파일에 대한 레지스트리 항목은 해당 파일의 구성 요소와 연결되어야 합니다. 그렇지 않으면 한 버전의 Visual Studio에 대해 VSPackage를 설치하거나 제거하면 다른 버전에서 VSPackage가 중단될 수 있습니다. 자세한 내용은 여러 버전의 Visual Studio 지원을 참조하세요.

참고 항목

등록을 관리하는 가장 쉬운 방법은 개발자 등록 및 설치 시간 등록 모두에 대해 동일한 파일에서 동일한 데이터를 사용하는 것입니다. 예를 들어 일부 설치 관리자 개발 도구는 빌드 시간에 .reg 형식의 파일을 사용할 수 있습니다. 개발자가 일상적인 개발 및 디버깅을 위해 .reg 파일을 유지 관리하는 경우 이 동일한 파일을 설치 관리자에 자동으로 포함할 수 있습니다. 등록 데이터를 자동으로 공유할 수 없는 경우 설치 관리자의 등록 데이터 복사본이 최신 상태인지 확인해야 합니다.

관리되지 않는 VSPackage 등록

관리되지 않는 VSPackage(Visual Studio 패키지 템플릿에서 생성된 패키지 포함)는 ATL 스타일 .rgs 파일을 사용하여 등록 정보를 저장합니다. .rgs 파일 형식은 ATL에만 적용되며 일반적으로 설치 작성 도구에서 있는 그대로 사용할 수 없습니다. VSPackage 설치 관리자에 대한 등록 정보는 별도로 유지 관리해야 합니다. 예를 들어 개발자는 .rgs 형식의 파일을 .rgs 파일 변경 내용과 계속 동기화할 수 있습니다. .reg 파일은 개발 작업을 위해 RegEdit와 병합하거나 설치 관리자에서 사용할 수 있습니다.

관리형 VSPackage 등록

RegPkg 도구는 관리형 VSPackage에서 등록 특성을 읽으며 레지스트리에 직접 정보를 쓰거나 설치 관리자가 사용할 수 있는 .reg 형식 파일을 작성할 수 있습니다.

참고 항목

RegPkg 도구는 재배포할 수 없으며 사용자 시스템에 VSPackage를 등록하는 데 사용할 수 없습니다.

설치 시간에 VSPackage가 자체 등록되지 않아야 하는 이유

VSPackage 설치 관리자는 자체 등록을 사용하지 않아야 합니다. 언뜻 보기에는 VSPackage의 레지스트리 값을 VSPackage 자체에서만 유지하는 것이 좋습니다. 해당 개발자가 일상적인 작업 및 테스트에 사용할 수 있는 레지스트리 값이 필요한 경우 설치 관리자에서 레지스트리 데이터의 별도 복사본을 유지 관리하지 않는 것이 좋습니다. 설치 관리자는 VSPackage 자체를 사용하여 레지스트리 값을 작성할 수 있습니다.

이론적으로는 좋지만 자체 등록에는 VSPackage 설치에 적합하지 않은 여러 가지 결함이 있습니다.

  • 설치, 제거, 설치 롤백, 제거 롤백을 올바르게 지원하려면 RegPkg를 호출하여 자체 등록되는 모든 관리형 VSPackage에 대해 네 개의 사용자 지정 작업을 작성해야 합니다.

  • 병렬 지원에 대한 접근 방식을 사용하려면 지원되는 모든 Visual Studio 버전에 대해 RegSvr32 또는 RegPkg를 호출하는 네 개의 사용자 지정 작업을 작성해야 할 수 있습니다.

  • 자체 등록 키가 다른 기능 또는 애플리케이션에서 사용되는지 알릴 방법이 없으므로 자체 등록된 모듈이 있는 설치를 안전하게 롤백할 수 없습니다.

  • 자체 등록된 DLL은 존재하지 않거나 잘못된 버전인 보조 DLL에 연결될 수 있습니다. 반면, Windows Installer는 시스템의 현재 상태에 종속되지 않은 레지스트리 테이블을 사용하여 DLL을 등록할 수 있습니다.

  • 구성 요소가 모두 소스에서 실행으로 지정되고 SelfReg 테이블에 나열된 경우 자체 등록 코드는 형식 라이브러리 등의 네트워크 리소스에 대한 액세스가 거부될 수 있습니다. 이로 인해 관리 설치 중에 구성 요소 설치가 실패할 수 있습니다.