Как проверить версию .Net Framework и установлен ли он вобще

15 окт. 2009 г. | | |

Типичная ситуация: есть приложение, использующее .Net Framework, и есть юзер, желающий использовать программу, но не имеющий .Net Framework. Итог: программа не запускается и выдает непонятную ошибку. И начинается поиск решения, как же проверить, установлен ли .Net Framework на конечной машине и требуемая ли версия установлена. Есть несколько вариантов действий - проверить реестр или проверить файловую систему. В первом случае воспользуемся веткой реестра

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
Если тут существует ветка
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup
то в ветке
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
можно найти все установленные версии .Net.

Готовое решение этого варианта вы можете найти тут http://msdn.microsoft.com/en-us/library/ydh6b3yb.aspx
Во втором варианте просмотреть установленные версии можно %windir%\Microsoft.NET\Framework.

В любом случае, выполнить проверку из программы, написанной на .Net Framework, невозможно. Значит, надо писать утилиту на С++ или другом языке, не требующем .Net Framework. Решение, которое понравилось мне больше всего - это использование batch-файла. Например, мне нужно проверить, установлена ли версия 3.5 и , если нет, запустить установку. Вот что получается:

@ECHO OFF
SET FileName=%windir%\Microsoft.NET\Framework\v3.5
IF EXIST %FileName% GOTO Skip
ECHO.You currently do not have the Microsoft® .NET Framework 3.5 installed.
ECHO.This is required for MyApplication.
ECHO.
ECHO.The Microsoft® .NET Framework 3.5 will now be installed on you system.
ECHO.After completion setup will run MyApplication.
ECHO.
Pause
SET FileName=
Start /WAIT .\files\dotnetfx35.exe
ECHO ON
:Skip
Start .\MyApplication.exe
Exit

Заметьте, что данный скрипт не проверяет, установлен ли фреймворк. В любом случае, если не существует в файловой системе пути %windir%\Microsoft.NET\Framework\ будет устанавливаться .Net, а после окончания установки будет запущено приложение.

1 коммент.:

Vazu комментирует...

Рекомендую .NET Version Detector, самый удобный способ проверки.
http://net-framework.ru/soft/asoft-net-version-detector

Отправить комментарий