Wix:将分号设置为CustomActionData

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Wix:将分号设置为CustomActionData相关的知识,希望对你有一定的参考价值。

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

答案

要在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());

我希望这些信息有用。

另一答案

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

InstallScript, meet CustomActionData

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

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

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

另一答案

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

以上是关于Wix:将分号设置为CustomActionData的主要内容,如果未能解决你的问题,请参考以下文章

Wix 工具集 - 将属性设置为用户配置文件文件夹路径和程序文件

Wix - 自定义操作返回代码 - 处理

如何根据wix中的条件设置功能级别?

WiX-Bootstrapper - 为 UAC 对话框设置产品名称和公司名称

WiX 技巧和窍门

Wix 设置中的警告