#旧館の記事のコピーです。内容は当時のままです。
WindowsInstaller では、実行時に動的に処理を判定するための条件式があります。
いろいろな場所で利用されているのですが必須のものに
テーブルのものがあります。
他にも条件式(Condition)を使っているところは多数ありますが、代表的なものだけ(^^;
さて、条件式というのは、実際には論理式と呼ばれるもので、真(TRUE)または偽(FALSE)を結果として返します。
といっても、式が間違っているなどというのもありますので、このほかにエラーがあるわけですが(^^;
条件式で利用できるものおよびその詳説については Conditional Statement Syntaxをご参照ください。
ここからは誰のためではなく、私のために(^^;日本語で特記事項だけ並べていきましょう。
- シンボル文字列は大文字小文字を区別する
- 環境変数は大文字小文字は区別されない
- 文字列は「""」で囲む
- 存在しないプロパティは空文字列として扱われる
- 浮動小数点数値はサポートしていない
- 算術演算子は用意されていない
- 論理演算子は大文字小文字を区別しない
- 文字列で大文字小文字を区別せずに比較する場合は「~」をつける
- ビルド時に条件式が正しいかどうかは検証されない
シンボル文字列は、頭のプレフィックスの有無で形式が変わります。
こちらは表をそっくりそのまま持ってきて追記しておきます。
Symbol type |
Prefix |
Value |
訳 |
Installer property |
(none) |
Value of property (Property) table. |
インストーラのプロパティ |
Environment variable |
% |
Value of environment variable. |
環境変数 |
Component table key |
$ |
Action state of the component. |
コンポーネントをインストールしようとしている状態 |
Component table key |
? |
Installed state of the component. |
コンポーネントの現在の状態 |
Feature table key |
& |
Action state of the feature. |
フィーチャーをインストールしようとしている状態 |
Feature table key |
! |
Installed state of the feature. |
フィーチャーの現在の状態 |
ここで改めて書いておく必要があるのは、環境変数だけ大文字小文字を区別しないことです。
他は大文字小文字を区別するので、間違った場合それがないということになります。
論理演算子は特筆すべきものだけ持ってきましょう。
Operator |
Meaning |
Eqv |
左辺と右辺の両方がTRUE(真)なら、FALSE(偽) |
Imp |
左辺または右辺のどちらかかが FALSE なら TRUE |
この二つはあまり一般的ではないため、書いておきます。
WindowsInstaller では式の最適化が無いので、このあたりは覚えておくとよいでしょう。
比較演算子はこれといって目新しいものはありませんね。
一致しないというのに "<>"を利用するくらいです。といってもBASICやSQLと同じなので割りとなじみがあるでしょう。
他の演算子としては文字列演算子と、ビット演算子がありますのでそれらも書いておきましょう。
文字列演算子
Operator |
Meaning |
>< |
右側の文字列を左側の文字列が含んでいるか。 |
<< |
右側の文字列で左側の文字列が始まっているか。 |
>> |
右側の文字列で左側の文字列が終わっているか。 |
ビット演算子
Operator |
Meaning |
>< |
左辺と右辺の数値をビットごとにANDをとる。 |
<< |
上位16ビットが右側と同じかどうかを比較。 |
>> |
下位16ビットが右側と同じかどうかを比較。 |
これをみて気が付いたと思いますが、WindowsInstaller のプロパティが管理する数値は 32bit整数値です。
64bit版かどうかは関係ないので注意が必要でしょう。
後は、コンポーネントとフィーチャーのステータスがあるのですが、これは見ればわかるので省略します。
コンポーネントは MsiGetComponentState, フィーチャーは MsiGetFeatureState のそれぞれの API で取り出せるものと同じです。
なお、この日本語情報はオリジナルページのごく一部を抜粋したに過ぎません。
このほかにも重要な情報が載せられていますので、利用に際しては一度本家を参照してください。