제품 매니페스트 만들기

부트스트래퍼 패키지를 만들어 애플리케이션 필수 구성 요소를 배포할 수 있습니다. 부트스트래퍼 패키지에는 단일 제품 매니페스트 파일이 포함되지만 각 로캘에 대한 패키지 매니페스트도 포함됩니다. 패키지 매니페스트에는 패키지의 지역화 관련 측면이 포함됩니다. 문자열, 최종 사용자 사용권 계약, 언어 팩이 있습니다.

패키지 매니페스트에 대한 자세한 내용은 방법: 패키지 매니페스트 만들기를 참조하세요.

제품 매니페스트 만들기

제품 매니페스트를 만들려면

  1. 부트스트래퍼 패키지 디렉터리를 만듭니다. 이 예제에서는 C:\package를 사용합니다.

  2. Visual Studio에서 새 XML 파일, product.xml을 만들어 C:\package 폴더에 저장합니다.

  3. 패키지의 XML 네임스페이스 및 제품 코드를 설명하는 다음 XML을 추가합니다. 제품 코드를 패키지의 고유 식별자로 바꿉니다.

    <Product
    xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
    ProductCode="Custom.Bootstrapper.Package">
    
  4. 패키지에 종속성이 있음을 지정하는 XML을 추가합니다. 이 예제에서는 Microsoft Windows Installer 3.1에 대한 종속성을 사용합니다.

    <RelatedProducts>
        <DependsOnProduct Code="Microsoft.Windows.Installer.3.1" />
      </RelatedProducts>
    
  5. 부트스트래퍼 패키지에 있는 모든 파일을 나열하는 XML을 추가합니다. 이 예제에서는 패키지 파일 이름 CorePackage.msi를 사용합니다.

    <PackageFiles>
        <PackageFile Name="CorePackage.msi"/>
    </PackageFiles>
    
  6. CorePackage.msi 파일을 C:\package 폴더로 복사하거나 이동합니다.

  7. 부트스트래퍼 명령을 사용하여 패키지를 설치하는 XML을 추가합니다. 부트스트래퍼는 자동으로 설치되는 .msi 파일에 /qn 플래그를 추가합니다. .exe 파일인 경우 부트스트래퍼는 셸을 사용하여 .exe 파일을 실행합니다. 다음 XML은 CorePackage.msi에 인수를 표시하지 않지만 Arguments 특성에 명령줄 인수를 지정할 수 있습니다.

    <Commands>
        <Command PackageFile="CorePackage.msi" Arguments="">
    
  8. 이 부트스트래퍼 패키지가 설치되어 있는지 확인하는 다음 XML을 추가합니다. 제품 코드를 재배포 가능 구성 요소의 GUID로 바꿉니다.

    <InstallChecks>
        <MsiProductCheck
            Property="IsMsiInstalled"
            Product="{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"/>
    </InstallChecks>
    
  9. 부트스트래퍼 구성 요소가 이미 설치되어 있는지에 따라 부트스트래퍼 동작을 변경하는 XML을 추가합니다. 구성 요소가 설치된 경우 부트스트래퍼 패키지가 실행되지 않습니다. 다음 XML은 이 구성 요소에 관리자 권한이 필요하므로 현재 사용자가 관리자인지 확인합니다.

    <InstallConditions>
        <BypassIf
           Property="IsMsiInstalled"
           Compare="ValueGreaterThan" Value="0"/>
        <FailIf Property="AdminUser"
            Compare="ValueNotEqualTo" Value="True"
            String="NotAnAdmin"/>
    </InstallConditions>
    
  10. 설치에 성공하고 다시 부팅해야 하는 경우 종료 코드를 설정하는 XML을 추가합니다. 다음 XML은 부트스트래퍼가 패키지 설치를 계속하지 않음을 나타내는 Fail 및 FailReboot 종료 코드를 보여줍니다.

    <ExitCodes>
        <ExitCode Value="0" Result="Success"/>
        <ExitCode Value="1641" Result="SuccessReboot"/>
        <ExitCode Value="3010" Result="SuccessReboot"/>
        <DefaultExitCode Result="Fail" String="GeneralFailure"/>
    </ExitCodes>
    
  11. 부트스트래퍼 명령 섹션을 종료하는 다음 XML을 추가합니다.

        </Command>
    </Commands>
    
  12. C:\package 폴더를 Visual Studio 부트스트래퍼 디렉터리로 이동합니다. 이전 버전의 Visual Studio의 경우 \Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages 디렉터리입니다.

예시

제품 매니페스트에는 사용자 지정 필수 구성 요소에 대한 설치 지침이 포함됩니다.

<?xml version="1.0" encoding="utf-8" ?>
<Product
  xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
  ProductCode="Custom.Bootstrapper.Package">

  <RelatedProducts>
    <DependsOnProduct Code="Microsoft.Windows.Installer.3.1" />
  </RelatedProducts>

  <PackageFiles>
    <PackageFile Name="CorePackage.msi"/>
  </PackageFiles>

  <InstallChecks>
    <MsiProductCheck Property="IsMsiInstalled"
      Product="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"/>
  </InstallChecks>

  <Commands>
    <Command PackageFile="CorePackage.msi" Arguments="">

      <InstallConditions>
        <BypassIf Property="IsMsiInstalled"
          Compare="ValueGreaterThan" Value="0"/>
        <FailIf Property="AdminUser"
          Compare="ValueNotEqualTo" Value="True"
         String="NotAnAdmin"/>
      </InstallConditions>

      <ExitCodes>
        <ExitCode Value="0" Result="Success"/>
        <ExitCode Value="1641" Result="SuccessReboot"/>
        <ExitCode Value="3010" Result="SuccessReboot"/>
        <DefaultExitCode Result="Fail" String="GeneralFailure"/>
      </ExitCodes>
    </Command>
  </Commands>
</Product>