Elemento <Commands> (programa previo)

El elemento Commands implementa pruebas descritas por los elementos bajo el elemento InstallChecks y declara qué paquete debe instalar el programa previo de ClickOnce si se produce un error en la prueba.

Sintaxis

<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>

Elementos y atributos

El elemento Commands es obligatorio. El elemento tiene los atributos siguientes.

Atributo Descripción
Reboot Opcional. Determina si el sistema debe reiniciarse en caso de que alguno de los paquetes devuelva un código de salida de reinicio. En la lista siguiente se muestran los valores válidos:

Defer. El reinicio se aplaza hasta un momento futuro.

Immediate. Provoca un reinicio inmediato si uno de los paquetes devuelve un código de salida de reinicio.

None. Hace que se omitan las solicitudes de reinicio.

El valor predeterminado es Immediate.

Get-Help

El elemento Command es un elemento secundario del elemento Commands. Cada elemento Commands puede tener uno o varios elementos Command. El elemento tiene los atributos siguientes.

Atributo Descripción
PackageFile Necesario. El nombre del paquete que se instalará si una o varias de las condiciones especificadas por InstallConditions devuelve false. El paquete debe definirse en el mismo archivo mediante un elemento PackageFile.
Arguments Opcional. Un conjunto de argumentos de línea de comando para pasar al archivo del paquete.
EstimatedInstallSeconds Opcional. El tiempo estimado (en segundos) que tardará en instalar el paquete. Este valor determina el tamaño de la barra de progreso que el programa previo muestra al usuario. El valor predeterminado es 0, en cuyo caso no se especifica ninguna estimación de tiempo.
EstimatedDiskBytes Opcional. La cantidad estimada de espacio en disco (en bytes) que ocupará el paquete una vez finalizada su instalación. Este valor se usa en los requisitos de espacio en disco duro que el programa de programa previo muestra al usuario. El valor predeterminado es 0, en cuyo caso el programa previo no muestra ningún requisito de espacio en disco duro.
EstimatedTempBytes Opcional. La cantidad estimada de espacio en disco temporal (en bytes) que requerirá el paquete.
Log Opcional. La ruta de acceso al archivo de registro que genera el paquete, relativa al directorio raíz del paquete.

InstallConditions

El elemento InstallConditions es un elemento secundario del elemento Command. Cada elemento Command puede tener como máximo un elemento InstallConditions. Si no existe ningún elemento InstallConditions, el paquete especificado por Condition se ejecutará siempre.

BypassIf

El elemento BypassIf es un elemento secundario del elemento InstallConditions y describe una condición positiva bajo la que no se debe ejecutar el comando. Cada elemento InstallConditions puede tener cero, uno o más elementos BypassIf.

BypassIf tiene los atributos siguientes.

Atributo Descripción
Property Necesario. El nombre de la propiedad que se va a probar. La propiedad debe haber sido definida previamente por un elemento secundario del elemento InstallChecks. Para obtener más información, vea Elemento <InstallChecks>.
Compare Necesario. El tipo de comparación que se va a realizar. En la lista siguiente se muestran los valores válidos:

ValueEqualTo, ValueNotEqualTo, ValueGreaterThan, ValueGreaterThanOrEqualTo, ValueLessThan, ValueLessThanOrEqualTo, VersionEqualTo, VersionNotEqualTo, VersionGreaterThan, VersionGreaterThanOrEqualTo, VersionLessThan, VersionLessThanOrEqualTo, ValueExists, ValueNotExists
Value Necesario. El valor que se va a comparar con la propiedad.
Schedule Opcional. El nombre de una etiqueta Schedule que define cuándo se debe evaluar esta regla.

FailIf

El elemento FailIf es un elemento secundario del elemento InstallConditions y describe una condición positiva bajo la que se debe detener la instalación. Cada elemento InstallConditions puede tener cero, uno o más elementos FailIf.

FailIf tiene los atributos siguientes.

Atributo Descripción
Property Necesario. El nombre de la propiedad que se va a probar. La propiedad debe haber sido definida previamente por un elemento secundario del elemento InstallChecks. Para obtener más información, vea Elemento <InstallChecks>.
Compare Necesario. El tipo de comparación que se va a realizar. En la lista siguiente se muestran los valores válidos:

ValueEqualTo, ValueNotEqualTo, ValueGreaterThan, ValueGreaterThanOrEqualTo, ValueLessThan, ValueLessThanOrEqualTo, VersionEqualTo, VersionNotEqualTo, VersionGreaterThan, VersionGreaterThanOrEqualTo, VersionLessThan, VersionLessThanOrEqualTo, ValueExists, ValueNotExists
Value Necesario. El valor que se va a comparar con la propiedad.
String Opcional. El texto que mostrará al usuario en caso de error.
Schedule Opcional. El nombre de una etiqueta Schedule que define cuándo se debe evaluar esta regla.

ExitCodes

El elemento ExitCodes es un elemento secundario del elemento Command. El elemento ExitCodes contiene uno o varios elementos ExitCode, los cuales determinan qué debe hacer la instalación en respuesta a un código de salida de un paquete. Puede haber un elemento opcional ExitCode bajo un elemento Command. ExitCodes no tiene atributos.

ExitCode

El elemento ExitCode es un elemento secundario del elemento ExitCodes. El elemento ExitCode determina qué debe hacer la instalación en respuesta a un código de salida de un paquete. ExitCode no contiene elementos secundarios y tiene los atributos siguientes.

Atributo Descripción
Value Necesario. El valor del código de salida al que se aplica este elemento ExitCode.
Result Necesario. Cómo debe reaccionar la instalación ante este código de salida. En la lista siguiente se muestran los valores válidos:

Success. Marca el paquete como instalado correctamente.

SuccessReboot. Marca el paquete como instalado correctamente e indica al sistema que se reinicie.

Fail. Marca el paquete como con errores.

FailReboot. Marca el paquete como con errores e indica al sistema que se reinicie.
String Opcional. El valor que se mostrará al usuario en respuesta a este código de salida.
FormatMessageFromSystem Opcional. Determina si se debe usar el mensaje de error proporcionado por el sistema correspondiente al código de salida o el valor proporcionado en String. Los valores válidos son true, que indica que se debe usar el error proporcionado por el sistema, y false, que indica que se debe usar la cadena proporcionada por String. El valor predeterminado es false. Si esta propiedad es false, pero no se establece un valor String, se usará el error proporcionado por el sistema.

Ejemplo

En el ejemplo de código siguiente se definen comandos para instalar .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>

Vea también