Вопрос

Я создаю проект установщика в моем решении, используя WIX 3.8. В рамках этой установки я создаю некоторые условия запуска, один из которых проверяет, что Microsoft .NET Framework 4.5.1 установлена.

Для этого я хочу использовать некоторые свойства в WixNetfxextension lib, которые, кажется, работают нормально для более старых версий .NET Framework. Есть пример того, как сделать это на http://wixtoolset.org /documentation/manual/v3/howtos/rualistributables_and_install_checks/check_for_dottl_html Это не работает для .NET 4.5.1, однако, как нет свойства NetFrameWork451 для проверки.

Смотреть источник для модуля NetFX451.WXS ( http://wix.codeplex.com/sourcecontrol/latest#src/ext/netfxextionsion/wixlib/netfx451.wxs ) Похоже, что нет отдельного свойства для использования для .NET 4.5.1, а скорее Это также использует тот же NetFramework45. Как я понимаю, V4.5.1 - это обновление на месте для V4.5, поэтому он использует одни и те же ключи реестра (я думаю). Во всяком случае, в этом модуле они просто проверяют номер версии, возвращаемый из NetFrameWork45 следующим образом:

DetectCondition="NETFRAMEWORK45 >= $(var.NetFx451MinRelease)"
.

Итак, я предположил, что могу просто написать состояние, как следующее:

    <PropertyRef Id="NETFRAMEWORK45" />
    <Condition Message="The .NET Framework 4.5.1 was not found.  Stopping installation.">
       <![CDATA[Installed OR (NETFRAMEWORK45 >= 378675)]]>
    </Condition>
.

Но это вернуло сообщение об ошибке на машине, которую я знаю, имеет .NET Framework 4.5.1. Поэтому я создал так, как это, чтобы я мог просто увидеть номер версии, возвращаемый из реестра:

    <PropertyRef Id="NETFRAMEWORK45" />
    <Condition Message ="[NETFRAMEWORK45]">0</Condition>
.

Это показывает окно сообщения со следующим текстом: # 378758, поэтому я знаю, что значение в реестре правильно.

Так что я немного запутался, почему мое состояние не удалось. Здесь есть что-то очевидное отсутствие, или есть какой-то другой способ сравнить это значение в элементе состояния?

Вот исправление, чтобы включить символ хеша, как предложено phildw:

    <PropertyRef Id="NETFRAMEWORK45" />
    <Condition Message="The .NET Framework 4.5.1 was not found.  Stopping installation.">
      <![CDATA[Installed OR (NETFRAMEWORK45 >= "#378675")]]>
    </Condition>
.

Это было полезно?

Решение

Вы включаете это в сравнении, это не поможет.Вы пытались включить # в вашем сравнении CDATA?

Я бы предположил, что когда Microsoft Comeence Post Code примеры к обнаружению структурных версий, это не может быть сделано с помощью простого реестра в файле MSI.

http://blogs.msdn.com/B / Astebner / Archive / 2013/10 / 17/10457758.aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top