В соответствии с рекомендациями, изложенными в статье MSDN Как определить, какие файлы . Установлены версии NET Framework Я написал установщик WiX, чтобы проверить ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Release
, чтобы определить, что .NET 4.5.1 установлен, и использовать это обнаружение, чтобы установить необходимое условие.
Проблема, с которой я столкнулся сейчас, заключается в том, что при установке .NET 4.5.2 тот же ключ больше не 378675
или 378758
, а теперь 379893
. Предполагается, что .NET 4.5.2 представляет собой «высокосовместимое обновление на месте», однако рекомендуемый алгоритм проверки версии не является обратно совместимым.
При проверке предыдущих версий этой проблемы не было, ключи реестра 2.0, 3.0 и 3.5 все еще присутствуют, даже если установлена более поздняя версия. например HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Version
по-прежнему присутствует, даже если установлена версия 3.5.
Таким образом, ранее метод определения версии, рекомендованный Microsoft, был совместим с более ранними версиями, но это больше не относится к 4.5/4.5.1/4.5.2. Что тогда, я должен делать вместо этого? Я ненавижу просто добавлять 379893
(.NET 4.5.2) к набору значений реестра, которые я проверяю, поскольку это, по-видимому, не удастся, когда (если) будет выпущен .NET 4.5.3 (или другой). Возможно, я мог бы проверить HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Version
для >= 4.5.51641, но это не рекомендуемый подход в соответствии с MSDN, и что произойдет, если они выпустят, скажем, 4.6, что каким-то образом не обратно совместимый?