Как сравнить версии реестра в WiX? - PullRequest
8 голосов
/ 30 августа 2011

В моем установщике wix я хочу проверить версию ESRI ArcMap, которую я могу найти по:

<Property Id="ARC10INSTALLED">
    <RegistrySearch Id="Arc10Search" Root="HKLM" Key="SOFTWARE\ESRI\ArcGIS" Name="RealVersion" Type="raw" />
</Property>

Я хочу начать с 10, и я попытался выполнить ее, используя это условие:

<Condition Message="ArcGIS Desktop 10 or 10.1 must be installed"><![CDATA[ARC10INSTALLED AND ARC10INSTALLED >= "10.0.0"]]></Condition>

Но, похоже, это не работает, какие-либо предложения?

1 Ответ

11 голосов
/ 30 августа 2011

Значение, возвращаемое элементом RegistrySearch , зависит от значения атрибута @Type, а также от типа данных этого значения в реестре. Следовательно, если вы укажете raw в качестве значения атрибута Type, полученный результат, скорее всего, будет содержать определенный префикс. Например, если это REG_BINARY, вы получите значение с префиксом #. Вы должны учитывать это в операциях сравнения.

Что касается сравнения строк, в частности, я бы использовал операторы подстроки , поддерживаемые синтаксисом условия MSI . Он поддерживает «начинается с», «заканчивается» и «содержит», что выглядит как лучший способ определить ваше значение 10. где-то в значении, которое вы получаете в свойстве ARC10INSTALLED.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...