다음을 통해 공유


<Commands> 요소(부트스트래퍼)

Commands 요소는 InstallChecks 요소 아래의 요소에서 설명하는 테스트를 구현하고 테스트가 실패할 경우 ClickOnce 부트스트래퍼가 설치해야 하는 패키지를 선언합니다.

구문

<Commands
    Reboot
>
    <Command
        PackageFile
        Arguments
        EstimatedInstallSeconds
        EstimatedDiskBytes
        EstimatedTempBytes
        Log
    >
        <InstallConditions>
            <BypassIf
                Property
                Compare
                Value
                Schedule
            />
            <FailIf
                Property
                Compare
                Value
                String
                Schedule
            />
        </InstallConditions>
        <ExitCodes>
            <ExitCode
                Value
                Result
                String
            />
        </ExitCodes>
    </Command>
</Commands>

요소 및 특성

Commands 요소가 필요합니다. 요소에는 다음 특성이 있습니다.

attribute 설명
Reboot 선택 사항입니다. 패키지 중 하나가 다시 시작 종료 코드를 반환하는 경우 시스템을 다시 시작할지 여부를 결정합니다. 다음 목록은 유효한 값입니다.

Defer. 이후 시간까지 다시 시작이 지연됩니다.

Immediate. 패키지 중 하나가 다시 시작 종료 코드를 반환한 경우 즉시 다시 시작됩니다.

None. 다시 시작 요청을 무시합니다.

기본값은 Immediate입니다.

명령

요소는 Command 요소의 자식 요소입니다 Commands . 하나의 Commands 요소에 하나 이상의 Command 요소가 포함될 수 있습니다. 요소에는 다음 특성이 있습니다.

attribute Description
PackageFile 필수입니다. InstallConditions에 지정된 하나 이상의 조건이 false를 반환하는 경우 설치할 패키지의 이름입니다. 패키지는 PackageFile 요소를 사용하여 동일한 파일에 정의해야 합니다.
Arguments 선택 사항. 패키지 파일에 전달할 명령줄 인수 집합입니다.
EstimatedInstallSeconds 선택 사항. 패키지를 설치하는 데 걸리는 예상 시간(초)입니다. 이 값은 부트스트래퍼가 사용자에게 표시하는 진행률 표시줄의 크기를 결정합니다. 기본값은 0이며, 이 경우 예상 시간이 지정되지 않습니다.
EstimatedDiskBytes 선택 사항. 설치가 완료된 후 패키지가 차지할 디스크 공간의 예상 크기(바이트)입니다. 이 값은 부트스트래퍼가 사용자에게 표시하는 하드 디스크 공간 요구 사항에 사용됩니다. 기본값은 0이며, 이 경우 부트스트래퍼는 하드 디스크 공간 요구 사항을 표시하지 않습니다.
EstimatedTempBytes 선택 사항. 패키지에 필요한 임시 디스크 공간의 예상 크기(바이트)입니다.
Log 선택 사항. 패키지가 생성하는 로그 파일에 대한 경로로, 패키지의 루트 디렉터리를 기준으로 합니다.

InstallConditions

InstallConditions 요소는 Command 요소의 자식입니다. 각 Command 요소에는 InstallConditions 요소가 하나만 있을 수 있습니다. InstallConditions 요소가 없는 경우 항상 Condition에 지정된 패키지가 실행됩니다.

BypassIf

BypassIf 요소는 InstallConditions 요소의 자식이며 명령이 실행되지 않아야 하는 긍정 조건을 설명합니다. 각 InstallConditions 요소에는 0개 이상의 BypassIf 요소가 있을 수 있습니다.

BypassIf에는 다음 특성이 있습니다.

attribute Description
Property 필수입니다. 테스트할 속성의 이름입니다. 이 속성은 이전에 InstallChecks 요소의 자식에 의해 정의되어 있어야 합니다. 자세한 내용은 <InstallChecks> 요소를 참조하세요.
Compare 필수입니다. 수행할 비교의 형식입니다. 다음 목록은 유효한 값입니다.

ValueEqualTo, ValueNotEqualTo, ValueGreaterThan, ValueGreaterThanOrEqualTo, ValueLessThan, ValueLessThanOrEqualTo, VersionEqualTo, VersionNotEqualTo, VersionGreaterThan, VersionGreaterThanOrEqualToVersionLessThanOrEqualToVersionLessThanValueExists,ValueNotExists
Value 필수입니다. 속성과 비교할 값입니다.
Schedule 선택 사항. 이 규칙을 평가해야 하는 경우를 정의하는 Schedule 태그의 이름입니다.

FailIf

FailIf 요소는 InstallConditions 요소의 자식이며 설치를 중지해야 하는 긍정 조건을 설명합니다. 각 InstallConditions 요소에는 0개 이상의 FailIf 요소가 있을 수 있습니다.

FailIf에는 다음 특성이 있습니다.

attribute Description
Property 필수입니다. 테스트할 속성의 이름입니다. 이 속성은 이전에 InstallChecks 요소의 자식에 의해 정의되어 있어야 합니다. 자세한 내용은 <InstallChecks> 요소를 참조하세요.
Compare 필수입니다. 수행할 비교의 형식입니다. 다음 목록은 유효한 값입니다.

ValueEqualTo, ValueNotEqualTo, ValueGreaterThan, ValueGreaterThanOrEqualTo, ValueLessThan, ValueLessThanOrEqualTo, VersionEqualTo, VersionNotEqualTo, VersionGreaterThan, VersionGreaterThanOrEqualToVersionLessThanOrEqualToVersionLessThanValueExists,ValueNotExists
Value 필수입니다. 속성과 비교할 값입니다.
String 선택 사항. 실패 시 사용자에게 표시할 텍스트입니다.
Schedule 선택 사항. 이 규칙을 평가해야 하는 경우를 정의하는 Schedule 태그의 이름입니다.

ExitCodes

ExitCodes 요소는 Command 요소의 자식입니다. ExitCodes 요소는 설치에서 패키지의 종료 코드에 대한 응답으로 수행해야 하는 작업을 결정하는 ExitCode 요소를 하나 이상 포함합니다. Command 요소 아래에는 선택적 ExitCode 요소가 하나만 있을 수 있습니다. ExitCodes에는 특성이 없습니다.

ExitCode

ExitCode 요소는 ExitCodes 요소의 자식입니다. ExitCode 요소는 설치가 패키지의 종료 코드에 대한 응답으로 수행해야 하는 작업을 결정합니다. ExitCode에는 자식 요소가 없으며 다음 특성이 있습니다.

attribute Description
Value 필수입니다. 이 ExitCode 요소가 적용되는 종료 코드 값 입니다.
Result 필수입니다. 설치가 이 종료 코드에 응답하는 방법입니다. 다음 목록은 유효한 값입니다.

Success. 패키지가 성공적으로 설치된 것으로 플래그를 지정합니다.

SuccessReboot. 패키지가 성공적으로 설치되었다는 플래그를 지정하고 시스템을 다시 시작하도록 지시합니다.

Fail. 패키지가 실패한 것으로 플래그를 지정합니다.

FailReboot. 패키지가 실패한 것으로 플래그를 지정하고 시스템을 다시 시작하도록 지시합니다.
String 선택 사항. 이 종료 코드에 대한 응답으로 사용자에게 표시할 값입니다.
FormatMessageFromSystem 선택 사항. 종료 코드에 해당하는 시스템 제공 오류 메시지를 사용할지 아니면 String에서 제공한 값을 사용할지 결정합니다. 유효한 값은 true(시스템에서 제공하는 오류를 사용) 및 false(String에서 제공하는 문자열을 사용)입니다. 기본값은 false입니다. 이 속성이 false이지만 String이 설정되지 않은 경우 시스템 제공 오류가 사용됩니다.

예시

다음 코드 예제에서는 .NET Framework 2.0을 설치하기 위한 명령을 정의합니다.

<Commands Reboot="Immediate">
    <Command PackageFile="instmsia.exe"
             Arguments= ' /q /c:"msiinst /delayrebootq"'
             EstimatedInstallSeconds="20" >
        <InstallConditions>
           <BypassIf Property="VersionNT" Compare="ValueExists"/>
             BypassIf Property="VersionMsi" Compare="VersionGreaterThanOrEqualTo" Value="2.0"/>
        </InstallConditions>
        <ExitCodes>
            <ExitCode Value="0" Result="SuccessReboot"/>
            <ExitCode Value="1641" Result="SuccessReboot"/>
            <ExitCode Value="3010" Result="SuccessReboot"/>
            <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" />
        </ExitCodes>
    </Command>
    <Command PackageFile="WindowsInstaller-KB884016-v2-x86.exe"
             Arguments= '/quiet /norestart'
             EstimatedInstallSeconds="20" >
      <InstallConditions>
          <BypassIf Property="Version9x" Compare="ValueExists"/>
          <BypassIf Property="VersionNT" Compare="VersionLessThan" Value="5.0.3"/>
          <BypassIf Property="VersionMsi" Compare="VersionGreaterThanOrEqualTo" Value="3.0"/>
          <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/>
      </InstallConditions>
      <ExitCodes>
          <ExitCode Value="0" Result="Success"/>
          <ExitCode Value="1641" Result="SuccessReboot"/>
          <ExitCode Value="3010" Result="SuccessReboot"/>
          <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" />
      </ExitCodes>
    </Command>
    <Command PackageFile="dotnetfx.exe"
         Arguments=' /q:a /c:"install /q /l"'
         EstimatedInstalledBytes="21000000"
         EstimatedInstallSeconds="300">

        <!-- These checks determine whether the package is to be installed -->
        <InstallConditions>
            <!-- Either of these properties indicates the .NET Framework is already installed -->
            <BypassIf Property="DotNetInstalled" Compare="ValueNotEqualTo" Value="0"/>

            <!-- Block install if user does not have adminpermissions -->
            <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/>

            <!-- Block install on Windows 95 -->
            <FailIf Property="Version9X" Compare="VersionLessThan" Value="4.10" String="InvalidPlatformWin9x"/>

            <!-- Block install on Windows 8 or less -->
            <FailIf Property="VersionNT" Compare="VersionLessThan" Value="6.2" String="InvalidPlatformWinNT"/>

            <!-- Block install if Internet Explorer 5.01 or later is not present -->
            <FailIf Property="IEVersion" Compare="ValueNotExists" String="InvalidPlatformIE" />
            <FailIf Property="IEVersion" Compare="VersionLessThan" Value="5.01" String="InvalidPlatformIE" />

            <!-- Block install if the operating system does not support x86 -->
            <FailIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="Intel" String="InvalidPlatformArchitecture" />
       </InstallConditions>

        <ExitCodes>
            <ExitCode Value="0" Result="Success"/>
            <ExitCode Value="3010" Result="SuccessReboot"/>
            <ExitCode Value="4097" Result="Fail" String="AdminRequired"/>
            <ExitCode Value="4098" Result="Fail" String="WindowsInstallerComponentFailure"/>
            <ExitCode Value="4099" Result="Fail" String="WindowsInstallerImproperInstall"/>
            <ExitCode Value="4101" Result="Fail" String="AnotherInstanceRunning"/>
            <ExitCode Value="4102" Result="Fail" String="OpenDatabaseFailure"/>
            <ExitCode Value="4113" Result="Fail" String="BetaNDPFailure"/>
            <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" />
        </ExitCodes>

    </Command>
</Commands>

참고 항목