부트스트래퍼 패키지 만들기
설치 프로그램은 일반 설치 관리자로서 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*
각 재배포 가능 구성 요소는 packages 디렉터리 아래의 고유 하위 폴더에 표시됩니다. 제품 매니페스트 및 재배포 가능 파일은 이 하위 폴더에 배치해야 합니다. 지역화된 버전의 구성 요소 및 패키지 매니페스트는 문화권 이름에 따라 이름이 지정된 하위 폴더에 배치해야 합니다.
이러한 파일을 부트스트래퍼 폴더에 복사하면 부트스트래퍼 패키지가 Visual Studio 필수 구성 요소 대화 상자에 자동으로 표시됩니다. 사용자 지정 부트스트래퍼 패키지가 표시되지 않으면 필수 구성 요소 대화 상자를 닫았다가 다시 엽니다. 자세한 내용은 필수 구성 요소 대화 상자을 참조하세요.
다음 테이블에는 부트스트래퍼가 자동으로 채우는 속성이 나와 있습니다.
속성 | 설명 |
---|---|
ApplicationName | 응용 프로그램의 이름입니다. |
ProcessorArchitecture | 실행 파일의 대상인 플랫폼의 단어당 비트 및 프로세서입니다. 여기에는 다음 값이 포함됩니다. - Intel - IA64 - AMD64 |
VersionNT | Windows 운영 체제의 버전 번호입니다. 버전의 구문은 Major.Minor.ServicePack입니다. |
VersionMSI | 설치 중에 실행되는 Windows Installer 어셈블리(msi.dll)의 버전입니다. |
AdminUser | 사용자에게 관리자 권한이 있으면 이 속성이 설정됩니다. 값은 true 또는 false입니다. |
InstallMode | 설치 모드는 구성 요소 설치를 시작해야 하는 위치를 나타냅니다. 여기에는 다음 값이 포함됩니다. - HomeSite - 공급업체의 웹 사이트에서 필수 구성 요소를 설치합니다. - SpecificSite - 선택한 위치에서 필수 구성 요소를 설치합니다. - SameSite - 애플리케이션과 동일한 위치에서 필수 구성 요소를 설치합니다. |
애플리케이션 설치에서 재배포 가능 파일 분리
설치 프로젝트에서 재배포 가능 파일이 배포되지 않도록 지정할 수 있습니다. 이렇게 하려면 .NET Framework 디렉터리의 RedistList 폴더에 재배포 가능 파일 목록을 만듭니다.
%ProgramFiles%\Microsoft.NET\RedistList
재배포 가능 파일 목록은 <회사 이름>.<구성 요소 이름>.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>