Wix:将分号设置为CustomActionData

Wix:将分号设置为CustomActionData,wix,custom-action,Wix,Custom Action,我在将包含分号的数据设置为CustomActionData属性时遇到问题。 默认情况下,CustomActionData类使用分号作为DataSepator,当数据包含分号时,它会打断我的数据。 除了用come关键字替换分号之外,还有什么方法可以在CustomActionData中添加分号吗?早在2006年,我写了一篇博客文章和一个示例项目: 基本上我使用了模式:/KEY1=VALUE1/KEY2=VALUE2 该库通过调用传递它的查找函数“/KEY1=”来工作。然后它返回所有数据,直到下一个

我在将包含分号的数据设置为CustomActionData属性时遇到问题。 默认情况下,CustomActionData类使用分号作为DataSepator,当数据包含分号时,它会打断我的数据。
除了用come关键字替换分号之外,还有什么方法可以在CustomActionData中添加分号吗?

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

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

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


无论如何,我已经不再使用这个了,因为我已经使用了C#DTF,它有一个CustomActionData类为我处理派生/反序列化。

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

示例:

CustomActionData=“key1=value1;key2=value2.1;;value2.2;;value2.3”-这将传递key1=value1和key2=value2.1;价值2.2;价值2.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());
我希望这些信息能有所帮助。

:Chris Painter(他也用一种更老的方法回答了这个问题)有一篇博客文章,通过使用
进行了革命性的处理。现在,只要使用适当的JSON库,就不需要进行字符串解析。内置序列化/反序列化:

从技术上讲:技术细节因语言而异,但JSON字符串本身很简单:

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

您可以在延迟模式下复活对象只需调用
序列化
反序列化

您是否尝试将内部带有分号的数据放入属性中?在这种情况下,它看起来像
param1=[value1];param2=[value2]
等。是。实际上,我的一个属性中有一个分号。在本例中,我在CustomAction中有brocken数据,因为CustomActionData将我的属性值分为两部分。请尝试使用反斜杠
(\)
转义分号“;”替换为“\;”?我不知道分号实际是什么时候,因为这是用户填充的密码属性。是的,我知道这不安全(使用“\;”对me.Tnx不起作用。我创建了一个额外的CustomAction,用关键字替换分号。您还可以通过
会话[“CustomActionData”]访问原始字符串。)
如果您想控制它的反序列化方式,就这样做。添加了一个针对CustomActionData的JSON方法的快速答案。当模型的一个值中包含分号时,这仍然会中断…我还没有测试它,但下面是一个使用..也.这里是(自己使用自定义操作)的示例。