Где я могу найти парсер условий MSI - PullRequest
3 голосов
/ 17 февраля 2011

Я ищу библиотеку или утилиту, которая может анализировать условия запуска MSI. По сути, я хочу взять эти утверждения и перевести их в наш собственный язык, но прежде чем я это сделаю, мне нужно разобрать их.

Я уже могу извлечь список условий из MSI, например:

NOT VersionNT OR (VersionNT = 501 AND ServicePackLevel >= 2) OR (VersionNT > 501)

Но я надеялся, что уже есть что-то, что может разбить это на более понятный формат.

Дополнительный вопрос, как называется этот язык? Я могу выяснить, как ссылаться на него или искать его.

Приветствия

Ответы [ 2 ]

4 голосов
/ 17 февраля 2011

См:

Синтаксис условного оператора

Установщик Windows предоставляет функцию Win32 и метод автоматизации для оценки условий.

Функция MsiEvaluateCondition

Метод Session.EvaluateCondition

1 голос
/ 26 июля 2011

Попробуйте исходный код Wine. У них есть следующий файл грамматики для условий:

http://source.winehq.org/source/dlls/msi/cond.y

...