我在将包含分号的数据设置为CustomActionData属性时遇到问题。 默认情况下,CustomActionData类使用分号作为DataSeparator,当它包含分号时,它会中断我的数据。 有没有办法将分号添加到CustomActionData,除了用come关键字替换它们?
答案 0 :(得分:4)
要在CustomActionData中传递分号,您应该再添加一个分号。
示例:强>
CustomActionData ="键1 =值;键2 = value2.1 ;; value2.2 ;; value2.3" - 这将传递key1 = value1和key2 = value2.1; value2.2; value2.3
如果你不知道分号在哪里,那么我想你可以通过用两个分号替换每个分号来创建逃避它们的方法。
如果有更多符号你不知道如何逃脱,你很容易找到创建一个创建CustomActionData实例的简单应用程序,添加一个键值对并使用ToString()输出CustomActionData字符串表示。
示例:
CustomActionData data = new CustomActionData();
data.Add("key1", "value1");
data.Add("key2", "value2.1;value2.2;value2.3");
Console.WriteLine(data.ToString());
我希望这些信息有用。
答案 1 :(得分:1)
早在2006年,我写了一篇博客文章和示例项目:
InstallScript, meet CustomActionData
基本上我使用了模式:/ KEY1 = VALUE1 / KEY2 = VALUE2
该库通过调用查询函数来传递它“/ KEY1 =”。然后它返回所有数据,直到下一个“/".
结束无论如何我还没有真正使用这个,因为我已经转移到C#DTF,它有一个CustomActionData类来处理我的派生/反序列化。
答案 2 :(得分:0)
JSON字符串 :克里斯·派纳(Chris Painter)(也用一种较旧的方法回答了这个问题)的博客条目彻底改变了 CustomActionData
使用 JSON strings
处理strong>。现在,只要您使用适当的JSON库,就无需进行字符串解析。内置序列化/反序列化:http://blog.iswix.com/2011/10/beam-me-up-using-json-to-serialize.html。
技术上 :技术上的差异取决于语言,但是JSON字符串本身很简单:
Groups=[{"Name":"Rockers","Description":"People who rock!"}]
您可以在延迟模式下复活对象!只需拨打 Serialize
和 Deserialize
。