次の方法で共有


<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 要素は必須です。 要素には、次の属性があります。

属性 説明
Reboot 省略可能。 いずれかのパッケージから再起動終了コードが返された場合に、システムを再起動する必要があるかどうかを指定します。 次の一覧に有効な値を示します。

Defer。 再起動は、将来のいつかまで延期されます。

Immediate. いずれかのパッケージが再起動終了コードを返した場合は、すぐに再起動が行われるようにします。

None. すべての再起動要求が無視されるようにします。

既定では、 Immediateです。

コマンド

Command 要素は、Commands 要素の子要素です。 Commands 要素には、1 つ以上の Command 要素を含めることができます。 要素には、次の属性があります。

属性 説明
PackageFile 必須。 InstallConditions によって指定された 1 つ以上の条件から false が返される場合にインストールするパッケージの名前。 このパッケージは、PackageFile 要素を使用して、同じファイル内で定義されている必要があります。
Arguments 省略可能。 パッケージ ファイルに渡すコマンド ライン引数のセット。
EstimatedInstallSeconds 省略可能。 パッケージをインストールするのにかかる推定時間 (秒単位)。 この値では、ブートストラップからユーザーに表示される進行状況バーのサイズを決定します。 既定値は 0 です。この場合、推定時間は指定されません。
EstimatedDiskBytes 省略可能。 インストール終了後にパッケージによって占有されると推定されるディスク領域の容量 (バイト単位)。 この値は、ブートストラップによってユーザーに表示されるハード ディスク領域の要件で使用されます。 既定値は 0 です。この場合、ブートストラップによって、ハード ディスク領域の要件は表示されません。
EstimatedTempBytes 省略可能。 パッケージが必要とする一時ディスク領域の推定容量 (バイト単位)。
Log 省略可能。 パッケージのルート ディレクトリを基準とした、パッケージによって生成されるログ ファイルへのパス。

InstallConditions

InstallConditions 要素は、Command 要素の子です。 各 Command 要素には、InstallConditions 要素を多くても 1 つ含めることができます。 InstallConditions 要素が存在しない場合は、Condition によって指定されたパッケージが常に実行されます。

BypassIf

BypassIf 要素は InstallConditions 要素の子であり、コマンドを実行してはいけない肯定的な条件を記述します。 各 InstallConditions 要素には、0 個以上の BypassIf 要素を含めることができます。

BypassIf には以下の属性があります。

属性 説明
Property 必須。 テストするプロパティの名前。 プロパティは、InstallChecks 要素の子によって以前に定義されている必要があります。 詳細については、<InstallChecks> 要素に関するページを参照してください。
Compare 必須。 実行する比較の種類。 次の一覧に有効な値を示します。

ValueEqualTo, ValueNotEqualTo, ValueGreaterThan, ValueGreaterThanOrEqualTo, ValueLessThan, ValueLessThanOrEqualTo, VersionEqualTo, VersionNotEqualTo, VersionGreaterThan, VersionGreaterThanOrEqualTo, VersionLessThan, VersionLessThanOrEqualTo, ValueExists, ValueNotExists
Value 必須。 プロパティと比較する値。
Schedule 省略可能。 この規則をいつ評価する必要があるかを定義する Schedule タグの名前。

FailIf

FailIf 要素は InstallConditions 要素の子であり、インストールを停止する必要がある肯定的な条件を記述します。 各 InstallConditions 要素には、0 個以上の FailIf 要素を含めることができます。

FailIf には以下の属性があります。

属性 説明
Property 必須。 テストするプロパティの名前。 プロパティは、InstallChecks 要素の子によって以前に定義されている必要があります。 詳細については、<InstallChecks> 要素に関するページを参照してください。
Compare 必須。 実行する比較の種類。 次の一覧に有効な値を示します。

ValueEqualTo, ValueNotEqualTo, ValueGreaterThan, ValueGreaterThanOrEqualTo, ValueLessThan, ValueLessThanOrEqualTo, VersionEqualTo, VersionNotEqualTo, VersionGreaterThan, VersionGreaterThanOrEqualTo, VersionLessThan, VersionLessThanOrEqualTo, ValueExists, ValueNotExists
Value 必須。 プロパティと比較する値。
String 省略可能。 失敗時にユーザーに表示するテキスト。
Schedule 省略可能。 この規則をいつ評価する必要があるかを定義する Schedule タグの名前。

ExitCodes

ExitCodes 要素は、Command 要素の子です。 ExitCodes 要素には ExitCode 要素が 1 つ以上含まれていて、パッケージからの終了コードに応答してどのインストールを実行する必要があるかが決定されます。 Command 要素の下には、省略可能な ExitCode 要素を 1 つ指定できます。 ExitCodes に属性はありません。

ExitCode

ExitCode 要素は、ExitCodes 要素の子です。 ExitCode 要素では、パッケージからの終了コードに応答して、どのインストールを実行する必要があるかが決定されます。 ExitCode には子要素は含まれず、以下の属性があります。

属性 説明
Value 必須。 この ExitCode 要素が適用される終了コードの値。
Result 必須。 この終了コードに、どのようにインストールを対応させる必要があるか。 次の一覧に有効な値を示します。

Success. 正常にインストールされたとパッケージにフラグを付けます。

SuccessReboot. 正常にインストールされたとパッケージにフラグを付けて、再起動するようにシステムに指示します。

Fail. 失敗したとパッケージにフラグを付けます。

FailReboot. 失敗したとパッケージにフラグを付けて、再起動するようにシステムに指示します。
String 省略可能。 この終了コードに対する応答でユーザーに表示する値。
FormatMessageFromSystem 省略可能。 システムによって提供される、終了コードに対応するエラー メッセージを使用するか、String で指定されている値を使用するかを決定します。 有効な値は、システムによって提供されるエラーを使用することを意味する true と、String によって提供される文字列を使用することを意味する false です。 既定では、 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>

関連項目