다음을 통해 공유


부트스트래퍼 패키지 만들기

설치 프로그램은 Windows Installer(.msi) 파일 및 실행 프로그램과 같은 재배포 가능 구성 요소를 검색하고 설치하도록 구성할 수 있는 일반 설치 관리자입니다. 설치 관리자는 부트스트래퍼라고도 합니다. 구성 요소 설치를 관리하는 메타데이터를 지정하는 XML 매니페스트 집합을 통해 프로그래밍됩니다. ClickOnce의 필수 구성 요소 대화 상자에 표시되는 각 재배포 가능 구성 요소 또는 필수 구성 요소는 부트스트래퍼 패키지입니다. 부트스트래퍼 패키지는 필수 구성 요소를 설치하는 방법을 설명하는 매니페스트 파일이 포함된 디렉터리 및 파일 그룹입니다.

부트스트래퍼는 먼저 필수 구성 요소가 이미 설치되어 있는지 여부를 검색합니다. 필수 구성 요소가 설치되지 않은 경우 먼저 부트스트래퍼에 사용권 계약이 표시됩니다. 둘째, 최종 사용자가 사용권 계약에 동의하면 필수 구성 요소에 대한 설치가 시작됩니다. 그렇지 않으면 모든 필수 구성 요소가 검색되면 부트스트래퍼는 애플리케이션 설치 관리자를 시작합니다.

사용자 지정 부트스트래퍼 패키지 만들기

Visual Studio에서 XML 편집기를 사용하여 부트스트래퍼 매니페스트를 생성할 수 있습니다. 부트스트래퍼 패키지를 만드는 예제를 보려면 연습: 개인 정보 프롬프트를 사용하여 사용자 지정 부트스트래퍼 만들기를 참조하세요.

부트스트래퍼 패키지를 만들려면 제품 매니페스트를 만들고, 지역화된 각 구성 요소 버전에 대해 패키지 매니페스트도 만들어야 합니다.

  • product.xml제품 매니페스트에는 패키지에 대한 언어 중립적 메타데이터가 포함됩니다. 여기에는 재배포 가능 구성 요소의 모든 지역화된 버전에 공통적인 메타데이터가 포함됩니다. 이 파일을 만들려면 방법: 제품 매니페스트 만들기를 참조하세요.

  • 패키지 매니페스트package.xml언어별 메타데이터를 포함합니다. 일반적으로 지역화된 오류 메시지가 포함됩니다. 구성 요소에는 해당 구성 요소의 지역화된 각 버전에 대해 하나 이상의 패키지 매니페스트가 있어야 합니다. 이 파일을 만들려면 방법: 패키지 매니페스트 만들기를 참조하세요.

이러한 파일을 만든 후 제품 매니페스트 파일을 사용자 지정 부트스트래퍼의 폴더에 넣습니다. 패키지 매니페스트 파일은 로캘의 이름을 딴 폴더로 이동합니다. 예를 들어 패키지 매니페스트 파일이 영어 재배포용인 경우 en이라는 폴더에 파일을 넣습니다. 일본어의 경우 ja, 독일어의 경우 de와 같은 각 로캘에 대해 이 프로세스를 반복합니다. 최종 사용자 지정 부트스트래퍼 패키지에는 다음과 같은 폴더 구조가 있을 수 있습니다.

CustomBootstrapperPackage
  product.xml
  CustomBootstrapper.msi
  de
    eula.rtf
    package.xml
  en
    eula.rtf
    package.xml
  ja
    eula.rtf
    package.xml

다음으로, 재배포 가능 파일을 부트스트래퍼 폴더 위치에 복사합니다. 자세한 내용은 방법: 지역화된 부트스트래퍼 패키지 만들기를 참조하세요.

*\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages*

또는

*<VS Install Path>\MSBuild\Microsoft\VisualStudio\BootstrapperPackages*

비고

Visual Studio 설치 경로 아래에 나열된 경로는 Visual Studio 2019 업데이트 7 릴리스부터 작동합니다.

다음 레지스트리 키의 경로 값에서 부트스트래퍼 폴더 위치를 찾을 수도 있습니다.

*HKLM\Software\Microsoft\GenericBootstrapper*

64비트 시스템에서 다음 레지스트리 키를 사용합니다.

*HKLM\Software\Wow6432Node\Microsoft\GenericBootstrapper*

각 재배포 가능 구성 요소는 패키지 디렉터리 아래의 자체 하위 폴더에 표시됩니다. 제품 매니페스트 및 재배포 가능 파일은 이 하위 폴더에 넣어야 합니다. 지역화된 버전의 구성 요소 및 패키지 매니페스트는 문화권 이름에 따라 명명된 하위 폴더에 배치해야 합니다.

이러한 파일을 부트스트래퍼 폴더에 복사하면 부트스트래퍼 패키지가 Visual Studio 필수 구성 요소 대화 상자에 자동으로 표시됩니다. 사용자 지정 부트스트래퍼 패키지가 표시되지 않으면 필수 구성 요소 대화 상자를 닫은 다음 다시 엽니다. 자세한 내용은 필수 구성 요소 대화 상자를 참조하세요.

다음 표에서는 부트스트래퍼에 의해 자동으로 채워진 속성을 보여줍니다.

재산 설명
응용 프로그램 이름 애플리케이션의 이름입니다.
프로세서 아키텍처 실행 파일이 대상으로 하는 플랫폼의 프로세서 및 단어당 비트입니다. 여기에는 다음 값이 포함됩니다.

-인텔
- IA64
- AMD64
VersionNT Windows 운영 체제의 버전 번호입니다. 버전 구문은 Major.Minor.ServicePack입니다.
VersionMSI 설치하는 동안 실행할 Windows Installer 어셈블리(msi.dll)의 버전입니다.
AdminUser 이 속성은 사용자에게 관리자 권한이 있는 경우 설정됩니다. 값은 true 또는 false입니다.
설치 모드 설치 모드는 구성 요소를 설치해야 하는 위치를 나타냅니다. 여기에는 다음 값이 포함됩니다.

- HomeSite - 필수 구성 요소는 공급업체의 웹 사이트에서 설치됩니다.
- SpecificSite - 필수 구성 요소가 선택한 위치에서 설치됩니다.
- SameSite - 필수 구성 요소는 애플리케이션과 동일한 위치에서 설치됩니다.

애플리케이션 설치와 재배포 가능 패키지 분리

재배포 가능 파일이 설치 프로젝트에 배포되지 않도록 방지할 수 있습니다. 이렇게 하려면 .NET Framework 디렉터리의 RedistList 폴더에 재배포 가능 목록을 만듭니다.

%ProgramFiles%\Microsoft.NET\RedistList

재배포 가능 목록은 회사 이름 형식 <을 사용하여 이름을 지정해야 하는 XML 파일입니다>.<구성 요소 이름>.RedistList.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>