Wix:将分号设置为CustomActionData

问题描述 投票:3回答:3

我在将包含分号的数据设置为CustomActionData属性时遇到问题。默认情况下,CustomActionData类使用分号作为DataSeparator,当它包含分号时,它会中断我的数据。除了用come关键字替换它们之外,有没有办法将分号放到CustomActionData中?

wix custom-action
3个回答
4
投票

要在CustomActionData中传递分号,您应该再添加一个分号。

例:

CustomActionData =“key1 = value1; key2 = 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
投票

早在2006年,我写了一篇博客文章和示例项目:

InstallScript, meet CustomActionData

基本上我使用的模式:/ KEY1 = VALUE1 / KEY2 = VALUE2

该库通过调用查询函数来传递它“/ KEY1 =”。然后它返回所有数据,直到下一个“/”结束。

无论如何我还没有真正使用这个,因为我已经转移到C#DTF,它有一个CustomActionData类为我处理派生/反序列化。


0
投票

JSON Strings:Chris Painter - 他还用一种较旧的方法回答了这个问题 - 有一篇博客文章,通过使用CustomActionData彻底改变了JSON strings的处理方式。现在没有字符串解析要做,只要你使用一个合适的JSON库。内置序列化/反序列化:http://blog.iswix.com/2011/10/beam-me-up-using-json-to-serialize.html

从技术上讲:根据语言的不同,技术细节会有所不同,但JSON字符串本身很简单:

Groups=[{"Name":"Rockers","Description":"People who rock!"}]

您可以在延迟模式下恢复对象!只需打电话给SerializeDeserialize

© www.soinside.com 2019 - 2024. All rights reserved.