多字符串类型的 RegistryValue 元素

用户3664223

WiX文档说,如果类型是MultiString,那么我们可以指定操作、追加、前置、写入(默认)。这里写动作是什么意思?它是简单地覆盖先前的条目,还是添加分号?如果它只是覆盖较早的条目,它与类型“ string有何不同

斯坦·埃斯穆尔

我相信write 会覆盖现有的值,无论是字符串还是多字符串,并强制执行指定的任何新字符串类型。Multi string与 string 不同,因为您可以通过<MultiStringValue>元素添加字符串列表(常规字符串值不能这样做 - 它不能有 MultiStringValue 子元素):

<RegistryValue Id="R3" Root="HKCU" Action="write" Key="Software\_WiXTest"
               Name="multi" Type="multiString" Value="samplemultistring">
    <MultiStringValue>test2.1</MultiStringValue>
    <MultiStringValue>test2.2</MultiStringValue>
</RegistryValue>

对于多字符串prepend在字符串列表的开头添加字符串,在字符串列表的末尾添加字符串。据我所知,多字符串不是分号分隔的,而是一系列以空字符结尾的字符串,以空字符串 ( \0)结尾请参阅注册表值类型

示例 Multi String : String1\0String2\0String3\0LastString\0\0,以及它的外观regedit.exe(使用对比鲜明的常规字符串):

regedit.exe 中的多字符串视图


只需转储一些示例测试标记 - 疣和所有 :-) - 如果您愿意,您可以用于测试:

<Component Feature="MainApplication" Id="HKCU" Guid="*">
  <RegistryValue Id="R1" Root="HKCU" Key="Software\_WiXTest" KeyPath="yes" 
                 Name="WiXWritten" Type="string" Value="R1 regular string">
  </RegistryValue>
  <RegistryValue Id="R2" Root="HKCU" Action="append" Key="Software\_WiXTest" 
                 Name="WiXWritten" Type="multiString" Value="R2 sample multistring">
      <MultiStringValue>test1.1</MultiStringValue>
      <MultiStringValue>test1.2</MultiStringValue>
      <MultiStringValue>test1.3</MultiStringValue>
  </RegistryValue>
  <RegistryValue Id="R3" Root="HKCU" Action="write" Key="Software\_WiXTest"
                 Name="WiXWritten" Type="multiString" Value="R3 sample multistring">
     <MultiStringValue>test2.1</MultiStringValue>
     <MultiStringValue>test2.2</MultiStringValue>
   </RegistryValue>
 </Component>

上面的一些元素会在安装时相互覆盖——据我所知,这是你不清楚的地方。也许将其转储到您的 WiX 源中并进行测试。

通过重复几个RegistryValue元素,您可以获得与MultiStringValue元素相同的效果

尝试将最后一个RegistryValue元素更改Action="write"Action="append"现在它添加到现有的多字符串而不是覆盖它。它应该变成:R2 sample multistring\0test1.1\0test1.2\0test1.3\0R3 sample multistring\0test2.1\0test2.2\0\0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

获取react元素的字符串类型

如何遍历字符串类型的元素

元素类型无效:应为字符串

React Native,元素类型无效,预期为字符串

根据字符串类型(样式)变换列表元素

导入组件,元素类型无效:应为字符串

Redux存储:元素类型无效:预期为字符串

元素类型无效,预期字符串未定义

不变违规:元素类型无效:预期为字符串

从字符串创建JSX元素的正确TypeScript类型

WebView:元素类型无效:应为字符串

导出模块(元素类型无效,预期为字符串)

不能在数组元素中使用“ a”(类型字符串)作为数组元素的类型

映射类型,可确保字符串联合具有特定字符串文字的元素

JSX中的文本的类型为“字符串”,但是预期的“子级”类型为“字符串| 元素| 元件[]

将两个元素连接到数组中的字符串类型元素中

元素隐式具有“任何”类型,因为“字符串”类型的表达式

循环数组返回字符串类型的元素而不是数组的类型

类型不匹配无法从元素类型对象转换为字符串

如何对元素类型为字符串别名而不是字符串本身的Go slice进行排序?

如何使用std :: find从vector <对<字符串,字符串>>类型的前几个元素中查找字符串?

如何在C ++中将字符串数组转换为字符串类型,如将每个元素连接成一个字符串,并在字符串上使用子字符串?

元素隐式具有“任意”类型,因为类型“字符串”的表达式不能用于索引类型A

用 HTML 元素替换子字符串(填空类型问题)

Typescript和Redux:绑定元素“字符串”隐式具有“任意”类型

不变违规:元素类型无效:预期为字符串或类/函数,但得到:未定义。

C程序使用XSLT从字符串XML过滤出anyURI类型的元素

高阶函数-元素类型无效:预期的字符串或类/函数但有对象

打印列表/字符串类型的数组列表的所有元素