Как определить, когда функция .NET Framework «отключена» в Windows 7 / Vista? - PullRequest
12 голосов
/ 19 апреля 2010

Мое приложение требует .NET Framework версии 3.5. Недавно я столкнулся с клиентом, у которого установлена ​​.NET Framework, но отключена в Windows Vista (также относится к Windows 7).

В этом случае мой установщик (InstallShield 2009) не предлагает пользователю установить Framework (потому что он уже установлен), и когда мое приложение запускается, оно сразу падает. Я попробовал другое приложение .NET, и оно также сразу вылетает.

Есть ли способ обнаружить эту ситуацию и обработать ее более изящно? Простое обнаружение этого во время установки не является идеальным, поскольку .NET Framework можно отключить в любое время. В идеале приложение сможет проверять и отображать дружественное сообщение для пользователя, сообщающее ему, что ему нужно включить .NET Framework.

РЕДАКТИРОВАТЬ: «Отключение» .NET Framework в Windows Vista или Windows 7 не то же самое, что удалить его. Framework можно просто включить без переустановки: http://windows.microsoft.com/en-US/windows-vista/Turn-Windows-features-on-or-off

Ответы [ 3 ]

8 голосов
/ 19 апреля 2010

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

Взгляните на: HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5

3 голосов
/ 19 апреля 2010

Похоже, вы собираетесь написать неуправляемую программу запуска для вашего приложения. Закатайте рукава и сделайте приятное погружение в C ++:)

1 голос
/ 19 апреля 2010

Woot, я думаю, что этот URL может иметь ваш ответ:

http://blogs.msdn.com/astebner/archive/2008/04/04/8358995.aspx

См. «Как установить компонент ОС .NET Framework 3.0 в сценарии развертывания». Насколько я могу судить, он описывает использование ocsetup для запуска Windows для включения этой функции. Желаем удачи.

Кроме того, мне любопытно, умело ли установщики ClickOnce узнают, отключена ли эта функция (я думаю, что они будут) Но так как вы используете InstallShield, вам, вероятно, нужен более полнофункциональный установщик, чем clickonce; o)

...