注册表表

注册表表包含应用程序需要在系统注册表中设置的注册表信息。

注册表表包含以下列。

类型 钥匙
注册表 标识符 Y N
整数 N N
钥匙 RegPath N N
名字 格式化 N Y
价值 格式化 N Y
元件_ 标识符 N N

 

注册表

用于标识注册表记录的主键。

注册表值的预定义根键。 在此字段中输入 -1 值,使根密钥依赖于安装类型。 输入下表中的其他值之一,强制在特定的根键下写入注册表值。

不断 十六进制 十进制 根密钥
(无) - 0x001 -1 如果这是每个用户的安装,则注册表值在 HKEY_CURRENT_USER下写入。 如果这是每台计算机安装,则注册表值在 HKEY_LOCAL_MACHINE下写入。 请注意,通过将 allUSERS 属性设置为 1 来指定每台计算机安装。
msidbRegistryRootClassesRoot 0x000 0 HKEY_CLASSES_ROOT安装程序在每用户 安装上下文中写入或删除 HKCU\Software\Classes hive 中的值。
安装程序在每台计算机安装期间写入或删除 HKLM\Software\Classes hive 中的值。
msidbRegistryRootCurrentUser 0x001 1 HKEY_CURRENT_USER
msidbRegistryRootLocalMachine 0x002 2 HKEY_LOCAL_MACHINE
msidbRegistryRootUsers 0x003 3 HKEY_USERS

 

请注意,建议写入 HKCU hive 的注册表项引用在 组件表的属性列中设置了 RegistryKeyPath 位的组件。 这可确保安装程序在同一台计算机上有多个用户时写入必要的注册表项。

密钥

注册表值的可本地化键。

名称

此列包含注册表值名称(可本地化)。 如果为 Null,则输入值列中的数据将写入默认注册表项。

如果 Value 列为 Null,则 Name 列中下表中显示的字符串具有特殊意义。

字符串 意义
+ 安装组件时,将创建密钥(如果不存在)。
- 卸载组件时,将删除密钥(如果有)及其所有值和子项。
* 安装组件时,将创建密钥(如果不存在)。 此外,卸载组件时,将删除密钥(如果存在)及其所有值和子项。

 

请注意,在安装组件时,必须使用 RemoveRegistry 表,前提是要删除已安装的注册表项及其值和子项。

此列是可本地化的注册表值。 字段 格式化。 如果值附加到以下前缀之一(即 #%),则该值将解释为表中所述。 请注意,每个前缀以数字符号 (#) 开头。 如果值以两个或更多个连续数字符号 (#) 开头,则忽略第一个 # 并将值解释并存储为字符串。

前缀 意义
#x 该值被解释并存储为十六进制值(REG_BINARY)。
#% 该值被解释并存储为可扩展字符串(REG_EXPAND_SZ)。
# 该值被解释并存储为整数(REG_DWORD)。

 

  • 如果值包含序列波形符 [~],则将该值解释为字符串的 Null 分隔列表(REG_MULTI_SZ)。 例如,若要指定包含三个字符串的列表 a、b 和 c,请使用“a[~]b[~]c”。
  • 值内的序列 [~] 分隔各个字符串,并解释并存储为 Null 字符。
  • 如果 [~] 位于字符串列表之前,则字符串将追加到任何现有注册表值字符串。 如果注册表值中已发生追加字符串,则会删除字符串的原始匹配项。
  • 如果 [~] 紧跟字符串列表的末尾,字符串将追加到任何现有注册表值字符串。 如果注册表值中已出现追加字符串,则会删除字符串的原始匹配项。
  • 如果 [~] 同时位于开头和结尾,或者字符串列表的开头和末尾都没有,则字符串将替换任何现有的注册表值字符串。
  • 否则,该值将被解释并存储为字符串(REG_SZ)。

Component_

组件表的第一列中的外部键 引用控制注册表值的安装组件的组件。

言论

WriteRegistryValuesRemoveRegistryValues序列表中的作 处理此表中的信息。 有关 序列表的信息,请参阅 使用序列表

选择相应的组件在本地安装或从源运行时,注册表信息将写出到系统注册表。

请注意,安装程序在删除密钥下的最后一个值或子项后删除注册表项。 若要防止卸载时删除空注册表项,请在需要保留的密钥下编写虚拟值,并在“名称”列中输入 + 。 如果 * 位于 Name 列中,则在删除组件时,会删除键及其所有值和子项。

自定义作可用于在安装、卸载或修复事务期间将行添加到注册表表。 这些行不会保留在注册表表中,并且信息仅在当前事务期间可用。 因此,必须在每个安装、卸载或修复事务中运行自定义作,这些事务需要这些附加行中的信息。 自定义作必须位于作序列中的 RemoveRegistryValuesWriteRegistryValues作之前。

有关如何保护注册表项的信息,请参阅 MsiLockPermissionsEx 表LockPermissions 表

验证

ICE02
ICE03
ICE06
ICE32
ICE38
ICE43
ICE46
ICE49
ICE53
ICE55
ICE57
ICE70
ICE80