Wix: установите точку с запятой в CustomActionData - PullRequest
3 голосов
/ 07 апреля 2011

У меня проблема с настройкой данных, содержащих точки с запятой, в свойство CustomActionData.По умолчанию класс CustomActionData использует точку с запятой в качестве DataSeparator, и он разбивает мои данные, когда он содержит точки с запятой.Есть ли способ поместить точки с запятой в CustomActionData, кроме замены их на ключевое слово come?

Ответы [ 3 ]

4 голосов
/ 08 апреля 2011

для передачи точки с запятой в CustomActionData необходимо добавить еще одну точку с запятой.

Пример:

CustomActionData = "key1 = value1; key2 = value2.1;; value2.2 ;; value2.3 "- это передаст key1 = value1 и key2 = value2.1; value2.2; value2.3

Если вы не знаете, где находятся точки с запятой, то я думаю,Вы можете создать метод, который избегает их, заменив каждую точку с запятой двумя точками с запятой.

Если есть еще символы, которые вы не знаете, как избежать, вы легко узнаете, создав простое приложение, которое создает экземпляр CustomActionData, добавляетпара ключ-значение и выводит строковое представление CustomActionData с помощью ToString ().

Пример:

CustomActionData data = new CustomActionData();
data.Add("key1", "value1");
data.Add("key2", "value2.1;value2.2;value2.3");

Console.WriteLine(data.ToString());

Надеюсь, эта информация полезна.

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

В 2006 году я написал статью в блоге и пример проекта:

InstallScript, встретиться с CustomActionData

В основном я использовал шаблон: / KEY1 = VALUE1 / KEY2 =VALUE2

Библиотека работала, вызывая функцию поиска, передавая ей "/ KEY1 =".Затем он возвращал все данные до конца и до следующего "/".

Несмотря на это, я больше не пользуюсь этим, так как перешел на C # DTF, который имеет класс CustomActionData, обрабатывающий деализацию /десериализация для меня.

0 голосов
/ 24 марта 2019

JSON Strings : Крис Пейнтер, который также ответил на этот вопрос более старым подходом, имеет запись в блоге, которая революционизирует обработку 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!"}]

Вы можете воскресить объект в отложенном режиме! Просто вызвав Serialize и Deserialize.

...