WiX: сравните версии "7.x.x.x" и "10.x.x.x" - PullRequest
1 голос
/ 26 марта 2019

У меня есть файл WiX, в котором я должен сравнить версию, чтобы проверить предварительные условия. Выражение выглядит примерно так:

<Publish (attributes...)>
    <![CDATA[(VERSION<"7.0") OR (other expressions)]]>
</Publish>

До сих пор это работало нормально, так как номера основных версий перешли с 7 на 8 до 9. Сейчас мы переходим к версии 10, и сравнение строк не удается, так как «1» меньше, чем «7». Я бы хотел, чтобы "10.0"<"7.0" оценил false, поскольку я собираюсь сравнивать версии, но выражение оценивается как true из-за происходящего сравнения строк.

Я проверил несколько ответов StackOverflow, а также документацию по WiX, но похоже, что операция сравнения версий отсутствует.

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

Какой подход я могу использовать для WiX?

1 Ответ

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

MSI SDK : Да, поскольку MSI SDK гласит: "Note that the installer will not do direct comparisons of the Version data type in conditional statements. Например, нельзя использовать сравнительные операторы для сравненияверсии, такие как «01.10» и «1.010» в условном выражении. Вместо этого используйте допустимый метод для поиска версии, например, описанный в Поиск существующих приложений, файлов, записей реестра или записей INI-файлов , а затем установите свойство. "

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

Что именно вы делаете в этом элементе публикации?

...