<Commands>-Element (Bootstrapper)

Mit dem Commands-Element werden Tests implementiert, die von den Elementen unterhalb des InstallChecks-Elements beschrieben werden, und es wird deklariert, welches Paket vom ClickOnce-Bootstrapper installieren werden soll, wenn der Test fehlschlägt.

Syntax

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

Elemente und Attribute

Das Commands-Element ist erforderlich. Das Element weist das folgende Attribut auf.

Attribut BESCHREIBUNG
Reboot Optional. Bestimmt, ob das System neu gestartet werden soll, wenn von einem der Pakete ein Neustart-Exitcode zurückgegeben wird. In der folgenden Liste werden die gültigen Werte aufgeführt:

Defer. Der Neustart wird bis zu einem späteren Zeitpunkt zurückgestellt.

Immediate Verursacht einen sofortigen Neustart, wenn von einem der Pakete ein Neustart-Exitcode zurückgegeben wurde.

None. Bewirkt, dass alle Neustartanforderungen ignoriert werden.

Der Standardwert lautet Immediate.

Get-Help

Das Command-Element ist ein untergeordnetes Element des Commands-Elements. Ein Commands-Element kann mindestens ein Command-Element aufweisen. Das Element weist folgende Attribute auf.

Attribut BESCHREIBUNG
PackageFile Erforderlich. Der Name des Pakets, das zu installieren ist, sollte bei mindestens einer der von InstallConditions festgelegten Bedingungen „false“ zurückgegeben werden. Das Paket muss in derselben Datei mithilfe eines PackageFile-Elements definiert werden.
Arguments Optional. Befehlszeilenargumente, die an die Paketdatei übergeben werden sollen.
EstimatedInstallSeconds Optional. Die geschätzte Zeit in Sekunden, die zum Installieren des Pakets benötigt wird. Dieser Wert bestimmt die Größe der Statusleiste, die vom Bootstrapper für den Benutzer angezeigt wird. Der Standardwert ist 0. In diesem Fall wird keine Zeitschätzung angegeben.
EstimatedDiskBytes Optional. Der geschätzte Speicherplatz in Byte, den das Paket nach Abschluss der Installation belegt. Dieser Wert wird für den Wert des erforderlichen Festplattenspeichers verwendet, der vom Bootstrapper für den Benutzer angezeigt wird. Der Standardwert ist 0. In diesem Fall wird vom Bootstrapper kein Wert für den erforderlichen Festplattenspeicher angezeigt.
EstimatedTempBytes Optional. Die geschätzte Menge des temporären Speicherplatzes in Byte, den das Paket benötigt.
Log Optional. Der Pfad zur Protokolldatei, die vom Paket generiert wird, relativ zum Stammverzeichnis des Pakets.

InstallConditions

Das InstallConditions-Element ist ein untergeordnetes Element des Command-Elements. Jedes Command-Element kann höchstens ein InstallConditions-Element aufweisen. Wenn kein InstallConditions-Element vorhanden ist, wird das von Condition angegebene Paket immer ausgeführt.

BypassIf

Das BypassIf-Element ist ein untergeordnetes Element des InstallConditions-Elements und beschreibt eine positive Bedingung, unter der der Befehl nicht ausgeführt werden soll. Jedes InstallConditions-Element kann mindestens null BypassIf-Elemente aufweisen.

BypassIf besitzt die folgenden Attribute.

Attribut BESCHREIBUNG
Property Erforderlich. Der Name der zu testenden Eigenschaft. Die Eigenschaft muss zuvor von einem untergeordneten Element des InstallChecks-Elements definiert worden sein. Weitere Informationen finden Sie unter <InstallChecks>-Element.
Compare Erforderlich. Der Typ des auszuführenden Vergleichs. In der folgenden Liste werden die gültigen Werte aufgeführt:

ValueEqualTo, ValueNotEqualTo, ValueGreaterThan, ValueGreaterThanOrEqualTo, ValueLessThan, ValueLessThanOrEqualTo, VersionEqualTo, VersionNotEqualTo, VersionGreaterThan, VersionGreaterThanOrEqualTo, VersionLessThan, VersionLessThanOrEqualTo, ValueExists, ValueNotExists
Value Erforderlich. Der Wert, der mit der Eigenschaft verglichen werden soll.
Schedule Optional. Der Name eines Schedule-Tags, das definiert, wann diese Regel ausgewertet werden soll.

FailIf

Das FailIf-Element ist ein untergeordnetes Element des InstallConditions-Elements und beschreibt eine positive Bedingung, unter der die Installation angehalten werden soll. Jedes InstallConditions-Element kann mindestens null FailIf-Elemente aufweisen.

FailIf besitzt die folgenden Attribute.

Attribut BESCHREIBUNG
Property Erforderlich. Der Name der zu testenden Eigenschaft. Die Eigenschaft muss zuvor von einem untergeordneten Element des InstallChecks-Elements definiert worden sein. Weitere Informationen finden Sie unter <InstallChecks>-Element.
Compare Erforderlich. Der Typ des auszuführenden Vergleichs. In der folgenden Liste werden die gültigen Werte aufgeführt:

ValueEqualTo, ValueNotEqualTo, ValueGreaterThan, ValueGreaterThanOrEqualTo, ValueLessThan, ValueLessThanOrEqualTo, VersionEqualTo, VersionNotEqualTo, VersionGreaterThan, VersionGreaterThanOrEqualTo, VersionLessThan, VersionLessThanOrEqualTo, ValueExists, ValueNotExists
Value Erforderlich. Der Wert, der mit der Eigenschaft verglichen werden soll.
String Optional. Der Text, der nach dem Fehler für den Benutzer angezeigt werden soll.
Schedule Optional. Der Name eines Schedule-Tags, das definiert, wann diese Regel ausgewertet werden soll.

ExitCodes

Das ExitCodes-Element ist ein untergeordnetes Element des Command-Elements. Das ExitCodes-Element enthält mindestens ein ExitCode-Element, das bestimmt, wie in Bezug auf die Installation als Reaktion auf einen Exitcode aus einem Paket verfahren werden soll. Unter einem Command-Element kann ein optionales ExitCode-Element vorhanden sein. ExitCodes weist keine Attribute auf.

ExitCode

Das ExitCode-Element ist ein untergeordnetes Element des ExitCodes-Elements. Das ExitCode-Element bestimmt, wie in Bezug auf die Installation als Reaktion auf einen Exitcode aus einem Paket verfahren werden soll. ExitCode enthält keine untergeordneten Elemente und weist die folgenden Attribute auf.

Attribut BESCHREIBUNG
Value Erforderlich. Der Exitcodewert, auf den dieses ExitCode-Element angewendet wird.
Result Erforderlich. Wie von der Installation auf diesen Exitcode reagiert werden soll. In der folgenden Liste werden die gültigen Werte aufgeführt:

Success. Kennzeichnet das Paket als erfolgreich installiert.

SuccessReboot Kennzeichnet das Paket als erfolgreich installiert und weist das System an, einen Neustart durchzuführen.

Fail Kennzeichnet die Installation des Pakets als fehlgeschlagen.

FailReboot. Kennzeichnet die Installation des Pakets als fehlgeschlagen und weist das System an, einen Neustart durchzuführen.
String Optional. Der Wert, der dem Benutzer als Reaktion auf diesen Exitcode angezeigt werden soll.
FormatMessageFromSystem Optional. Bestimmt, ob die vom System bereitgestellte Fehlermeldung verwendet werden soll, die dem Exitcode entspricht, oder ob der in String bereitgestellte Wert verwendet werden soll. Gültige Werte sind true, was bedeutet, dass der vom System bereitgestellte Fehler verwendet wird, und false, was bedeutet, dass die von String bereitgestellte Zeichenfolge verwendet wird. Der Standardwert lautet false. Wenn diese Eigenschaft false ist, aber String nicht festgelegt ist, wird der vom System bereitgestellte Fehler verwendet.

Beispiel

Im folgenden Codebeispiel werden Befehle für die Installation von .NET Framework 2.0 definiert.

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

Weitere Informationen