财产价值腐败

时间:2011-04-18 14:54:31

标签: properties wix windows-installer custom-action

我传递的属性值如下:

property1=value1;property2=value2

但有时值包含';'符号,导致WiX错误地反序列化属性字符串。我试过用双引号引用值

property1="value1";property2="value2"

但这没有帮助。那我怎么处理这个?

2 个答案:

答案 0 :(得分:3)

我以为我们前几天才看到这个问题(简短的回答是逃避它;;)

有关更详细的讨论,如果您想了解如何使用Type 51自定义操作来设置要通过DTF自定义操作反序列化的属性,请编写一个像这样的小控制台应用程序

var cad = new CustomActionData();
cad.Add("property1","myvalue");
cad.Add("property2","my;value");
Console.WriteLine(cad.ToString());
Console.Read();

结果将是:

  

property1 = myvalue的; property2 =我;;值

这可以帮助您了解如何格式化每种可能的方案。但是,最终您可能会在51型CA不够的情况下找到自己。在这种情况下,您将编写一个即时CA来构建您的CustomActionData集合,然后使用Session.DoAction方法来安排延迟CA将CustomActionData传递给它。

答案 1 :(得分:1)

在评论中回复to request。要在属性值中加倍分号,可以使用JScript CA:

<CustomAction Id="DoubleSemiColons" Script="jscript">
    <![CDATA[

    var s = Session.Property("property2");
    var re = /;/g;
    var r = s.replace(re, ";;");

    Session.Property("property2") = r;

    ]]>
</CustomAction>