<Элемент Commands> (bootstrapper)

Элемент 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 является обязательным. Элемент имеет перечисленные ниже атрибуты.

Атрибут Description
Reboot Необязательно. Определяет, должна ли система перезапуститься, если любой из пакетов возвращает код выхода перезапуска. В следующем списке показаны допустимые значения:

Defer. Перезапуск откладывается до некоторого будущего времени.

Immediate. Вызывает немедленный перезапуск, если один из пакетов вернул код выхода перезапуска.

None. Вызывает пропускать все запросы перезапуска.

Значение по умолчанию — Immediate.

Команда

Элемент Command является дочерним для элемента Commands. Элемент Commands может содержать один или несколько Command элементов. Элемент имеет перечисленные ниже атрибуты.

Атрибут Description
PackageFile Обязательное. Имя устанавливаемого пакета должно иметь одно или несколько условий, указанных InstallConditions значением false. Пакет должен быть определен в том же файле с помощью PackageFile элемента.
Arguments Необязательно. Набор аргументов командной строки для передачи в файл пакета.
EstimatedInstallSeconds Необязательно. Предполагаемое время( в секундах) потребуется для установки пакета. Это значение определяет размер панели хода выполнения, отображаемой загрузчику пользователю. Значение по умолчанию равно 0, в этом случае оценка времени не указана.
EstimatedDiskBytes Необязательно. Предполагаемый объем дискового пространства в байтах, который будет занимать пакет после завершения установки. Это значение используется в требованиях к жесткому диску, которые загрузчик отображает пользователю. Значение по умолчанию равно 0. В этом случае загрузчик не отображает требования к жесткому дисковому пространству.
EstimatedTempBytes Необязательно. Предполагаемое количество временного места на диске в байтах, которое потребуется пакету.
Log Необязательно. Путь к файлу журнала, который создает пакет, относительно корневого каталога пакета.

InstallConditions

Элемент InstallConditions является дочерним элементом Command элемента. Каждый Command элемент может иметь не более одного InstallConditions элемента. Если элемент не InstallConditions существует, пакет, указанный Condition всегда будет выполняться.

Обход

Элемент BypassIf является дочерним InstallConditions элементом элемента и описывает положительное условие, при котором команда не должна выполняться. Каждый InstallConditions элемент может содержать ноль или больше BypassIf элементов.

BypassIf имеет следующие атрибуты.

Атрибут Description
Property Обязательное. Имя проверяемого свойства. Свойство должно быть определено дочерним InstallChecks элементом элемента. Дополнительные сведения см. в разделе <"Элемент InstallChecks>".
Compare Обязательно. Тип выполняемого сравнения. В следующем списке показаны допустимые значения:

ValueEqualTo, ValueNotEqualToValueGreaterThanValueGreaterThanOrEqualToValueLessThanValueLessThanOrEqualToVersionEqualToVersionNotEqualToVersionGreaterThanVersionGreaterThanOrEqualToVersionLessThanVersionLessThanOrEqualToValueExistsValueNotExists
Value Обязательно. Значение для сравнения со свойством.
Schedule Необязательно. Имя тега Schedule , определяющего, когда должно оцениваться это правило.

FailIf

Элемент FailIf является дочерним InstallConditions элементом элемента и описывает положительное условие, в котором должна остановиться установка. Каждый InstallConditions элемент может содержать ноль или больше FailIf элементов.

FailIf имеет следующие атрибуты.

Атрибут Description
Property Обязательное. Имя проверяемого свойства. Свойство должно быть определено дочерним InstallChecks элементом элемента. Дополнительные сведения см. в разделе <"Элемент InstallChecks>".
Compare Обязательно. Тип выполняемого сравнения. В следующем списке показаны допустимые значения:

ValueEqualTo, ValueNotEqualToValueGreaterThanValueGreaterThanOrEqualToValueLessThanValueLessThanOrEqualToVersionEqualToVersionNotEqualToVersionGreaterThanVersionGreaterThanOrEqualToVersionLessThanVersionLessThanOrEqualToValueExistsValueNotExists
Value Обязательно. Значение для сравнения со свойством.
String Необязательно. Текст, отображаемый пользователю после сбоя.
Schedule Необязательно. Имя тега Schedule , определяющего, когда должно оцениваться это правило.

ExitCodes

Элемент ExitCodes является дочерним элементом Command элемента. Элемент ExitCodes содержит один или несколько ExitCode элементов, определяющих, что должно делать установка в ответ на код выхода из пакета. Под элементом Command может быть один необязательный ExitCode элемент. ExitCodes не имеет атрибутов.

ExitCode

Элемент ExitCode является дочерним элементом ExitCodes элемента. Элемент ExitCode определяет, что должно делать установка в ответ на код выхода из пакета. ExitCode не содержит дочерних элементов и имеет следующие атрибуты.

Атрибут 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>

См. также