MSDN > MSDN Library > Win32 and COM Development > Administration and Management > Application Installation and Servicing > Windows Installer > Windows Installer Reference > Installer Database > Using the Installer Database > Conditional Statement Syntax
このセクションは、 MsiEvaluateConditionファンクションと アクション シーケンス テーブル ( 英語 ) により使われる 条件文のシンタックスを 記述しています。より多くの インフォメーションに関しては、 Examples of Conditional Statement Syntax を 見て下さい。
この表と以下のリストが、条件式で使うシンタックスを 要約しています。
| アイテム | シンタックス |
|---|---|
| 値 | 記号 | リテラル | 整数 |
| 比較演算子 | < | > | <= | >= | = | <> |
| 項 | 値 | 値 比較演算子 値 | ( 式 ) |
| ブール演算要素 | 項 | NOT 項 |
| ブール演算項 | ブール演算要素 | ブール演算要素 AND 項 |
| 式 | ブール演算項 | ブール演算項 OR 式 |
| 記号 | プロパティ | %環境変数 | $コンポーネントアクション | ?コンポーネント状態 | &フィーチャーアクション | !フィーチャー状態 |
以下の表は、条件式で使う為の様々なシステムとインストーラー情報に アクセスするのに使う プリフィックスを示しています。
| 記号のタイプ | プリフィックス | 値 |
|---|---|---|
| インストーラー プロパティ | (なし) | Property table の値 |
| 環境変数 | % | 環境変数の値 |
| Component table キー | $ | コンポーネントのアクションの状態 |
| Component table キー | ? | コンポーネントのインストール済み状態 |
| Feature table キー | & | フィーチャーのアクションの状態 |
| Feature table キー | ! | フィーチャーのインストール済み状態 |
以下の表は、条件式中の論理演算子を 優先順位の高いものから低いものへの順で 示しています。
| 演算子 | 意味 |
|---|---|
| Not | プリフィックス一項演算子、即ち 続く項の状態を逆にする。 |
| And | もし 両方の項が TRUE なら TRUE。 |
| Or | もし どちらか一方の項 または 両方が TRUE なら TRUE。(訳注:片方でも TRUE なら) |
| Xor | もし 両方の項が TRUE を除いて どちらか一方が TRUE なら TRUE。(訳注:片方だけ TRUE なら) |
| Eqv | もし 両方の項が TRUE または 両方が FALSE なら TRUE。 |
| Imp | もし 左の項が FALSE あるいは 右の項が TRUE なら TRUE。 |
以下の表は、条件式で使われる比較演算子を示しています。これらの比較演算子は、2つの値の間で だけ 生じ得ます。
| 演算子 | 意味 |
|---|---|
| = | もし 左辺値が右辺値に等しいなら TRUE。 |
| <> | もし 左辺値が右辺値に等しくないなら TRUE。 |
| > | もし 左辺値が右辺値より大きいなら TRUE。 |
| >= | もし 左辺値が右辺値より大きいか 等しいなら TRUE。 |
| < | もし 左辺値が右辺値より小さいなら TRUE。 |
| <= | もし 左辺値が右辺値より小さいか 等しいなら TRUE。 |
以下の表は、条件式で使われる部分文字列演算子を示しています。部分文字列演算子は、2つの 文字列値の間でだけ 生じ得ます。
| 演算子 | 意味 |
|---|---|
| >< | もし 左辺の文字列が右辺の文字列を含んでいれば TRUE。 |
| << | もし 左辺の文字列が右辺の文字列で始まっていれば TRUE。 |
| >> | もし 左辺の文字列が右辺の文字列で終わっていれば TRUE。 |
以下の表は、条件式で使われるビット単位の数値演算子を示しています。これらの演算子は、2つの 整数値の間でだけ 生じ得ます。
| 演算子 | 意味 |
|---|---|
| >< | ビット単位の AND、もし 左辺と右辺の整数がどのビットも共通で持っていれば TRUE。 |
| << | もし 左辺の整数の上16ビットが 右辺の整数と等しければ TRUE。 |
| >> | もし 左辺の整数の下16ビットが 右辺の整数と等しければ TRUE。 |
以下の表は、フィーチャーとコンポーネントのオペレータ記号を使うのに どこでそれが有効か を 示しています。
| オペレータ <状態> | このシンタックスが有効な場所 |
|---|---|
| $コンポーネントアクション | Condition table 中と CostFinalize action 後のシーケンステーブル中。 |
| &フィーチャーアクション | Condition table 中と CostFinalize action 後のシーケンステーブル中。 |
| !フィーチャー状態 | Condition table 中と CostFinalize action 後のシーケンステーブル中。 |
| ?コンポーネント状態 | Condition table 中と CostFinalize action 後のシーケンステーブル中。 |
以下の表は、条件式で使われるフィーチャーとコンポーネントの状態値を 示しています。これらの 状態は、直接か CostFinalize action によって MsiSetInstallLevelがコールされるまで セットされません。
| 状態 | 値 | 意味 |
|---|---|---|
| INSTALLSTATE_UNKNOWN | -1 | フィーチャーやコンポーネントでとられるべきアクションがない。 |
| INSTALLSTATE_ADVERTISED | 1 | アドバタイズド フィーチャー。この状態はコンポーネントでは利用できません。 |
| INSTALLSTATE_ABSENT | 2 | フィーチャーやコンポーネントが存在しない。 |
| INSTALLSTATE_LOCAL | 3 | ローカルコンピューター上にフィーチャーやコンポーネントがある。 |
| INSTALLSTATE_SOURCE | 4 | フィーチャーやコンポーネントはソースから実行される。 |
(訳注: 以下 アクセス プリフィックスに注意。)
例えば 条件式 "&MyFeature=3" は、MyFeature がその現在の状態から ローカルコンピューター 上でインストールされている状態 INSTALLSTATE_LOCAL に変化している時にだけ、True に評価され ます。
Component1 がコンピューター上でローカルにインストールされているかどうかをチェックするのに 条件 $Component1=3 に依存すぺきではない事に 注意して下さい。これは、もし Component1 が 1つ以上のプロダクトによってインストールされていると 失敗する事があります。Component1 が Product1 によってローカルにインストールされてしまった後、インストーラーは Product2 の インストール中 条件 $Component1=3 を False と評価します。これは、インストーラーが コンポーネントのキーパスを使ってコンポーネントのバージョンを決定し、もし そのバージョンが インストールされたコンポーネント以上なら インストールの為にコンポーネントにマークをつける ためです。
インストーラーは 条件文中の Version データ型の 直接比較を行わない事に 注意して下さい。例えば、条件文で "01.10" と "1.010" といったバージョンを比較するのに 比較演算子を使う事ができません。代わりに たとえば Searching for Existing Applications, Files, Registry Entries or .ini File Entries で 述べられている様に バージョンを探るのに妥当な方法を使って、プロパティをセットして下さい。
条件文でのプロパティの使用 ( Using Properties in Conditional Statements )