Environment テーブル

Environment テーブルは、環境変数の値を設定するために使われます。

Environment テーブルには次の列があります。

Column 種類 キー Nullable
環境 Identifier Y N
名前 テキスト N N
Formatted N Y
Component_ Identifier N N

[列]

環境

これはテーブルの主キーであり、ローカライズされていないトークンです。

Name

この列は、環境変数のローカライズ可能な名前です。 次の表のどの文字をプレフィックスとして名前に付けるかに応じて、キー値は書き込まれるか削除されます。 プレフィックスに使われる記号の順序に効果はありません。

Prefix 説明
= 環境変数が存在しない場合は作成し、インストール時に設定します。 環境変数が存在する場合は、インストール時に設定します。
+ 環境変数が存在しない場合は作成し、インストール時に設定します。 これは、環境変数の値が既に存在する場合は効果がありません。
- コンポーネントが削除されたら、環境変数を削除します。 この記号は、任意のプレフィックスと組み合わせることができます。
! インストール時に環境変数を削除します。 インストール時にインストーラーによって環境変数が削除されるのは、変数の名前と値が Environment テーブルの Name フィールドと Value フィールドのエントリと一致する場合のみです。 環境変数を削除する場合は、値に関係なく '!' 構文を使い、Value フィールドを空のままにします。
* このプレフィックスは、名前がシステム環境変数を参照していることを示すために Windows 2000 で使われます。 アスタリスクを指定しない場合、インストーラーによってその変数はユーザーの環境に書き込まれます。 この記号は、任意のプレフィックスと組み合わせることができます。 マシンごとのインストール コンテキストでインストールに使われるパッケージの場合、Name 列に * を含めると、マシンの環境に環境変数が書き込まれます。 詳細については、「解説」を参照してください。
=- 環境変数はインストール時に設定され、アンインストール時に削除されます。 これは通常の動作です。
!- インストールまたはアンインストール時に環境変数を削除します。
=+ !+
!=
これらは有効なプレフィックスではありません

テーブルの Value フィールドに [~] が含まれている場合、文字列の指定した部分にのみプレフィックス文字が適用されます。 [~] の使用については、以下の「Value」列セクションで説明します。

テーブルの Value フィールドが空白の場合、環境変数は削除されます。 そのため、Value フィールドが空白の場合、= プレフィックスを指定すると、インストール時に環境変数は削除され、- プレフィックスを指定すると、アンインストール時に現在の値はすべて削除されます。

Value

この列には、書式設定済み文字列として設定されるローカライズ可能な値が含まれています。 「Formatted」を参照してください。 このフィールドを空白のままにすると、変数は削除されます。 このフィールドが空白で、Name フィールドの文字列の前に - 記号が付いている場合、コンポーネントが削除されたときにのみ変数が削除されます。

既存の変数の末尾に値を追加するには、このフィールドの文字列の前に Null 文字 [~] と区切り記号文字を付けます。 たとえば、セミコロンが選んだ区切り記号である場合: [~];Value

既存の変数の前に値を追加するには、このフィールドの文字列の後に区切り記号文字と Null 文字 [~] を付けます。 たとえば、セミコロンが選んだ区切り記号である場合: Value;[~]。

フィールドに [~] がない場合、文字列は、設定または削除される値全体を表します。

各行には値を 1 つのみ含めることができます。 たとえば、エントリ Value;Value;[~] は複数の値なので使わないでください。予測できない結果を引き起こします。 エントリ Value;[~] は 1 つの値です。

Name の前に + が付く場合、Value 列に [~] を使わないでください。 これは、"+" と "[~]" の意味は明らかに排他的であるためです。

Component_

Component テーブルの最初の列の外部キー。 この列は、環境値のインストールを制御するコンポーネントを参照します。

解説

インストーラーで環境変数を設定するには、WriteEnvironmentStrings アクションRemoveEnvironmentStrings アクションInstallExecuteSequence テーブルに登録する必要があります。

WriteEnvironmentStrings アクションまたは RemoveEnvironmentStrings アクションを実行しても、進行中のインストールの環境変数は変更されないことに注意してください。 Windows 2000 では、この情報はレジストリに格納され、インストールの完了時にメッセージでシステムに変更が通知されます。 新しいプロセス、またはこれらのメッセージを確認する別のプロセスには、新しい環境変数が使われます。

Environment テーブルを使ってパス環境変数を変更する場合、新しいパス全体を明示的に Value フィールドに入力しないでください。 代わりに、値と区切り記号 (;) を [~] の前または後に追加して、既存のパスを拡張してください。 Value フィールドに [~] がない場合、既存のパス情報は失われ、.msi ファイルをインストールするとコンピューターは起動しなくなる可能性があります。 パス変数は、通常、[~];Value という構文を使って設定されます。

ターミナル サーバーからマシンごとのインストールを実行する場合、ユーザーごとの環境変数はインストーラーによって HKU\.Default\Environment に書き込まれます。 ターミナル サービスはレジストリのこのセクションをレプリケートしないので、インストールではユーザーごとの環境変数は設定されません。 Name 列に * を含めると、マシンごとのインストールに使われるパッケージによって、コンピューターの環境に環境変数が書き込まれます。 ユーザーごとまたはマシンごとにパッケージをインストールできる場合は、2 つのコンポーネントを作成します。(1) ユーザー設定のために作成された Environment テーブル エントリがあるユーザーごとのコンポーネントと、(2) コンピューター設定のために作成された Environment テーブルがあるマシンごとのコンポーネントです。 Privileged プロパティを使って、このコンポーネントのインストールを条件にします。

検証

ICE03
ICE06
ICE32
ICE46
ICE65
ICE69
ICE80