значения свойств портятся - PullRequest
0 голосов
/ 18 апреля 2011

Я передаю значения свойств следующим образом:

property1=value1;property2=value2

, но иногда значения содержат ';'символы, из-за чего WiX неправильно десериализует строку свойства.Я пытался привести значения в двойные кавычки

property1="value1";property2="value2"

, но это не помогло.Так как я могу справиться с этим?

Ответы [ 2 ]

3 голосов
/ 18 апреля 2011

Я думал, что мы только что видели этот вопрос на днях (краткий ответ - избежать его ;;)

Для более подробного обсуждения, если вы хотите понять, как использовать настраиваемые действия типа 51 для установки свойств, которые должны быть десериализованы настраиваемым действием DTF, напишите небольшое консольное приложение, подобное

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

Результат будет:

property1 = MyValue; свойство2 = мой ;; значение

Это должно помочь вам узнать, как форматировать каждый возможный сценарий. Однако, в конце концов, вы можете оказаться в ситуации, когда CA 51 типа недостаточно. В этом случае вы должны написать немедленный CA для создания вашей коллекции CustomActionData, а затем использовать метод Session.DoAction для планирования вашего отложенного CA, передавая ему CustomActionData.

1 голос
/ 19 апреля 2011

Отвечая на запрос в комментариях. Чтобы удвоить точку с запятой в значении свойства, вы можете использовать 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>
...