사용자 지정 필수 구성 요소 추가
부트스트래퍼는 Windows Installer 파일 또는 실행 가능한 프로그램으로 패키지된 거의 모든 재배포 가능 구성 요소를 부트스트랩하도록 구성할 수 있는 일반 설치 관리자입니다. 부트스트래퍼는 구성 요소 설치를 관리하기 위해 부트스트래퍼에 필요한 모든 메타데이터를 지정하는 간단한 XML 매니페스트 집합을 통해 프로그래밍되며, 응용 프로그램에서 사용해야 하는 Windows Installer나 ClickOnce 같은 설치 관리자 기술을 지정하지 않습니다.
사용자가 Setup.exe를 실행하면 먼저 설치된 필수 구성 요소가 있는지 검색됩니다. 필수 구성 요소가 하나라도 없는 경우 부트스트래퍼는 이러한 구성 요소와 해당 사용권 계약 내용이 들어 있는 설치 대화 상자를 표시합니다. 모든 필수 구성 요소가 검색되면 부트스트래퍼는 응용 프로그램 설치 관리자를 시작합니다.
사용자가 계약에 동의하면 다운로드 및 설치 프로세스가 시작됩니다. 필수 구성 요소가 모두 설치되면 부트스트래퍼는 응용 프로그램의 설치 프로세스를 시작합니다.
사용자 지정 패키지 만들기
재배포 가능 구성 요소의 패키지를 만들 필요가 없는 경우도 있습니다. 일반적으로 파일을 GAC에 설치하거나 전역 등록을 수행하거나 Windows Service를 구성해야 하는 공유 구성 요소 또는 시스템 구성 요소의 패키지만 빌드하면 됩니다.
또한 응용 프로그램과 함께 재배포 가능한 파일을 제공할 수 있는지 제어 공급자에게 문의해야 합니다. 종속성이 없는 경우 등 간단한 복사 작업만으로 필수 구성 요소를 재배포할 수 있는 경우에는 패키지를 만들 필요가 없습니다. 대신 파일이 설치에 포함되어 있거나 로컬 복사로 설정되어 있는지만 확인하면 됩니다. 속성 보기에 있는 파일의 Copy 속성이 True로 설정되어 있어야 합니다.
또한 설치 관리자를 사용해야 하는지 확인해야 합니다. 설치 관리자를 사용해야 하는 경우 부트스트래퍼 패키지를 사용합니다.
새 구성 요소 패키지를 만들려면 다음을 제공해야 합니다.
-
EXE 또는 MSI 파일 형식의 재배포 가능 구성 요소
-
패키지의 모든 언어 중립 메타데이터가 포함된 제품 매니페스트(product.xml). 이 매니페스트에는 모든 지역화된 재배포 가능 구성 요소 버전에 공통되는 메타데이터가 포함되어 있습니다.
-
언어별 메타데이터가 포함된 패키지 매니페스트(package.xml). 이 매니페스트에는 일반적으로 지역화된 오류 메시지가 포함되어 있습니다. 구성 요소에는 지역화된 버전의 해당 구성 요소별로 최소한 하나의 패키지 매니페스트가 있어야 합니다.
매니페스트 파일은 수동으로 만들어야 하며 매니페스트 파일에 포함된 메타데이터는 .NET Framework SDK에 포함된 패키지 스키마 요소에 설명된 대로 특정 스키마를 따라야 합니다. 스키마 참조에 대한 자세한 내용은 제품 및 패키지 스키마 참조를 참조하십시오. Visual Studio에 통합된 설치 작성기는 빌드할 때 매니페스트 파일의 유효성을 검사합니다.
이러한 매니페스트에서 패키지 간의 종속성은 DependsOnProduct 스키마 요소를 사용하여 지정합니다. 종속성의 예로는 Visual J# 런타임을 사용하려면 .NET Framework를 먼저 설치해야 하는 경우를 들 수 있습니다.
그런 다음 재배포 가능한 파일과 함께 제품 및 패키지 매니페스트 파일을 Visual Studio가 재배포 가능 패키지를 위해 예약한 특수 폴더에 복사해야 합니다.
\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bootstrapper
재배포 가능 구성 요소와 해당 매니페스트를 이 폴더로 복사하는 설치 관리자를 작성하려면 다음 레지스트리 키(다음 순서대로 읽음)에서 부트스트래퍼 폴더 위치를 프로그래밍 방식으로 검색합니다.
HKCU\Software\Microsoft\GenericBootstrapper\1.0\Path HKLM\Software\Microsoft\GenericBootstrapper\1.0\Path
두 키가 모두 존재하지 않으면 다음 SDK 설치 위치의 레지스트리 키를 읽습니다.
HKLM\Software\Microsoft\.NET Framework\sdkInstallRootv2.0
각 재배포 가능 구성 요소는 패키지 디렉터리 아래에 있는 해당 하위 폴더에 표시됩니다. 그런 다음 제품 매니페스트 및 재배포 가능한 파일이 이 하위 폴더로 배치됩니다. 지역화된 버전의 구성 요소는 패키지 매니페스트와 함께 Culture 이름에 따라 이름이 지정된 하위 폴더에 배치됩니다(CultureInfo의 표 참조).
부트스트래퍼 폴더에 복사된 이러한 파일은 개발자가 확인란을 통해 선택할 수 있도록 Visual Studio 필수 구성 요소 대화 상자에 자동으로 표시됩니다.
부트스트래퍼를 사용하여 설치를 구성하는 방법에 대한 자세한 내용은 http://msdn.microsoft.com/msdnmag/issues/04/10/Bootstrapper/에서 MSDN 기사 "Use the Visual Studio 2005 Bootstrapper to Kick-Start Your Installation"을 참조하십시오.
응용 프로그램 설치와 별도로 부트스트래퍼 패키지 재배포 구성 요소 관리
일반적으로 부트스트래퍼 패키지 재배포 구성 요소에 속하는 모든 구성 요소는 이들 구성 요소를 사용하는 응응 프로그램과 별도로 관리해야 합니다. 예를 들어 Acme.DataWidgets.dll 구성 요소가 포함된 Acme.DataWidgets.msi라는 부트스트래퍼 패키지가 있다고 가정합니다. Acme.DataWidgets.dll은 개발 시에 프로젝트의 bindir 디렉터리에 표시되지 않아야 할 뿐 아니라 응용 프로그램의 설치 관리자 패키지에도 배포되지 않아야 합니다.
따라서 동일한 핵심 부트스트래퍼 패키지의 재배포 가능한 설치 관리자를 사용하여 개발 컴퓨터의 GAC에 부트스트래퍼 구성 요소를 설치하는 것이 좋습니다. 이렇게 하면 부트스트래퍼 구성 요소가 개발 시에 프로젝트의 bindir 디렉터리에 복사되지 않습니다. 또한 RedistList 파일이 부트스트래퍼 재배포 가능 패키지에 속하는 모든 어셈블리를 설명하도록 정의하는 것이 좋습니다. 이렇게 하면 부트스트래퍼 구성 요소가 응용 프로그램 배포 프로젝트에 포함되지 않습니다. RedistList 파일은 개발자 컴퓨터에만 설치하면 됩니다.
이를 위해 .NET Framework 디렉터리(\WINDOWS\Microsoft.NET\Framework)의 RedistList 폴더에 재배포 가능 목록을 만듭니다.
재배포 가능 목록은 company_name + component_name + RedistList.xml 형식으로 이름을 지정해야 하는 XML 파일입니다. 따라서 "Acme"를 통해 "Datawidgets"라는 구성 요소를 만드는 경우에는 Acme.DataWidgets.RedistList.xml을 사용합니다. 재배포 가능 목록의 내용은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?> <FileList Redist="Acme.DataWidgets" > <File AssemblyName="Acme.DataGrid" Version="1.0.0.0" PublicKeyToken="b03f5f7f11d50a3a" Culture="neutral" ProcessorArchitecture="MSIL" InGAC="true" /> </FileList>
필수 구성 요소 대화 상자에 패키지 추가
필수 구성 요소 대화 상자를 사용하면 설치하기 전에 응용 프로그램에 필요한 구성 요소를 선택할 수 있습니다. Visual Studio에는 다양한 표준 필수 구성 요소가 포함되어 있습니다. 그러나 다른 Microsoft 또는 타사 구성 요소를 필수 구성 요소로 추가할 수도 있습니다. 그러기 위해서는 위에 설명한 대로 제품 및 패키지 매니페스트를 작성해야 합니다.
필수 구성 요소 대화 상자의 설치할 필수 구성 요소 선택 목록에 설치할 수 있는 필수 구성 요소 패키지가 표시됩니다. 이 목록의 패키지 순서는 매니페스트에 지정된 종속성을 기반으로 하며, 패키지 설치 순서를 지정합니다.
부트스트래퍼에 추가한 일반 패키지는 필수 구성 요소 대화 상자에 MyPackage로 표시됩니다. Visual Studio는 설치할 패키지를 자동으로 선택하지 않습니다.
ClickOnce 프로젝트의 경우 Visual Studio는 설치할 필수 구성 요소 선택에서 기본적으로 .NET Framework 확인란을 선택하여 모든 프로젝트 형식에 대해 .NET Framework를 포함하도록 권장합니다. 또한 J# 프로젝트에 대해서는 J# 런타임이 권장됩니다.
Windows Installer 프로젝트에서 현재 프로젝트가 설치 또는 웹 설치 프로젝트인 경우 .NET Framework 확인란이 기본적으로 선택됩니다. 빌드할 때 .NET Framework와 Windows Installer 패키지가 모두 선택되지 않으면 빌드 경고가 표시됩니다.