У меня проблема с настройкой данных, содержащих точки с запятой, в свойство CustomActionData. По умолчанию класс CustomActionData использует точку с запятой в качестве DataSeparator и разбивает мои данные, если они содержат точки с запятой. Есть ли способ поставить точку с запятой в CustomActionData, кроме замены их ключевым словом come?
Wix: установите точку с запятой в CustomActionData.
Ответы (3)
чтобы передать точку с запятой в 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());
Надеюсь, информация окажется полезной.
session["CustomActionData"]
, если хотите контролировать ее десериализацию. Это все, что выполняет session.CustomActionData.
- person jnm2; 27.10.2017
Еще в 2006 году я написал в блоге статью и образец проекта:
InstallScript, соответствие CustomActionData
В основном я использовал шаблон: / KEY1 = VALUE1 / KEY2 = VALUE2
Библиотека работала, вызывая функцию поиска, передавая ей "/ KEY1 =". Затем он вернул все данные до конца до следующего «/».
Несмотря на это, я больше не использую это, так как я перешел на C # DTF, в котором есть класс CustomActionData, который выполняет дериализацию / десериализацию за меня.
Строки JSON: Крис Пейнтер, который также ответил на этот вопрос более старым подходом, написал в блоге запись, которая революционизирует обработку 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
.
param1=[value1];param2=[value2]
и т. Д. - person Yan Sklyarenko   schedule 07.04.2011(\)
, чтобы избежать точки с запятой - person Yan Sklyarenko   schedule 07.04.2011