Environment 表
Environment 表用于设置环境变量的值。
Environment 表包含以下列。
列 | 类型 | 密钥 | Nullable |
---|---|---|---|
环境 | Identifier | Y | N |
名称 | 文本 | N | N |
值 | 格式化 | N | Y |
Component_ | Identifier | N | N |
列
-
环境
-
这是表的主键,是一个未本地化的标记。
-
Name
-
此列是环境变量的可本地化名称。 是写入还是删除键值取决于使用下表中的哪些字符作为名称前缀。 前缀中使用的符号顺序没有影响。
前缀 说明 = 如果环境变量不存在,则创建环境变量,然后在安装期间设置它。 如果环境变量存在,则在安装期间设置它。 + 如果环境变量不存在,则创建环境变量,然后在安装期间设置它。 如果环境变量已存在,则此项不会影响它的值。 - 删除组件时删除环境变量。 此符号可与任何前缀组合。 ! 在安装期间删除环境变量。 仅当环境变量的名称和值与 Environment 表的 Name 和 Value 字段中的条目匹配时,安装程序才会在安装期间删除该变量。 如果你想要删除环境变量(无论其值如何),请使用“!”语法,并将 Value 字段留空。 * 此前缀适用于 Windows 2000,指示名称引用了系统环境变量。 如果没有星号,则安装程序会将变量写入用户环境。 此符号可与任何前缀组合。 用于每计算机安装上下文中的安装的包应该通过在 Name 列中包含 * 将环境变量写入计算机环境。 有关详细信息,请参阅“备注”。 =- 在安装时设置环境变量,在卸载时删除环境变量。 这是一般行为。 !- 在安装或卸载期间删除环境变量。 =+ !+
!=这些前缀无效 如果表中的 Value 字段包含 [~],则前缀字符仅适用于字符串的指定部分。 以下 Value 列部分介绍了 [~] 的用法。
如果表的 Value 字段为空,则删除环境变量。 因此,如果 Value 字段为空,则 = 前缀会在安装时删除环境变量,而 - 前缀会在卸载时删除所有当前值。
-
Value
-
此列包含要设置为带格式字符串的可本地化值。 请参阅 Formatted。 如果将此字段留空,则删除变量。 如果该字段为空,并且 Name 字段中的字符串以 - 符号为前缀,则只有在删除组件时才删除该变量。
若要将某个值追加到现有变量的末尾,请在此字段中的字符串前面加上 Null 字符 [~] 和分隔符作为前缀。 例如,如果分号是所选的分隔符:[~];Value。
若要将某个值添加到现有变量的前面作为前缀,请在此字段中的字符串后面追加分隔符和 Null 字符 [~]。 例如,如果分号是所选的分隔符:Value;[~]。
如果字段中没有 [~],则该字符串表示要设置或删除的整个值。
每行只能包含一个值。 例如,条目 Value;Value;[~] 包含多个值,因此不能使用它,否则会导致不可预知的结果。 条目 Value;[~] 只包含一个值。
如果名称以 + 为前缀,则不能在 Value 列中使用 [~]。 这是因为“+”和“[~]”的含义是明确互斥的。
-
Component_
-
Component 表第一列中的外部键。 此列引用了用于控制环境值的安装的组件。
备注
对于设置环境变量的安装程序,需要在 InstallExecuteSequence 表中列出 WriteEnvironmentStrings 操作和 RemoveEnvironmentStrings 操作。
请注意,运行 WriteEnvironmentStrings 操作或 RemoveEnvironmentStrings 操作时,对于正在进行的安装,环境变量不会更改。 在 Windows 2000 上,此信息存储在注册表中,在安装完成时会显示一条消息来通知系统发生更改。 新进程或检查这些消息的另一个进程将使用新的环境变量。
修改 Environment 表中的路径环境变量时,请不要尝试将整个新路径显式输入到 Value 字段中。 应该通过在 [~] 的前面或后面添加值和分隔符 (;) 来扩展现有路径。 如果 Value 字段中没有 [~],则现有路径信息将会丢失,并且安装 .msi 文件可能会阻止计算机启动。 路径变量的最常见设置方法是使用以下语法:[~];Value。
从终端服务器执行每计算机安装时,安装程序会将每用户环境变量写入 HKU\.Default\Environment。 由于终端服务器不会复制注册表的此部分,因此安装不会设置每用户环境变量。 用于每计算机安装的包应通过在 Name 列中包含 * 将环境变量写入计算机环境。 如果可以按用户或按计算机安装该包,则会创建两个组件:(1) 一个按用户组件,其中包含针对用户设置创建的 Environment 表条目,以及 (2) 一个按计算机组件,其中包含针对计算机设置创建的 Environment 表。 使用 Privileged 属性控制此组件的安装条件。