2010-04-19 33 views
12

我的应用程序需要.NET Framework 3.5版。我最近碰到一个客户是对Windows Vista中的.NET框架安装,但turned off(也适用于Windows 7)。如何在Windows 7/Vista中检测.NET Framework功能何时“关闭”?

在这种情况下,我的安装程序(的InstallShield 2009)不提示用户安装框架(因为它已经被安装)和我的应用程序运行时,它会立即崩溃。我尝试了另一个.NET应用程序,它也立即崩溃。

有什么方法来检测这种情况,并更加妥善地处理它?只需在安装过程中检测到这一点就不是很理想,因为.NET Framework可以随时关闭。理想情况下,应用程序将能够检查并向用户显示一条友好的消息,告诉他们需要打开.NET Framework。

编辑:在Windows Vista或Windows 7“关闭” .NET框架是不一样卸载它。该框架可以简单地重新打开而无需重新安装:http://windows.microsoft.com/en-US/windows-vista/Turn-Windows-features-on-or-off

+4

我从来没有听说过了.NET Framework可以关闭。您需要更好地描述情况,可能来自客户。 – 2010-04-19 18:37:22

+2

我一直认为(假设)这样做与卸载相同。 – dkackman 2010-04-19 18:37:57

+1

@John,@dkackman。关闭Windows 7中的功能不会卸载该功能,它只是关闭或禁用。 – 2010-04-19 18:41:17

回答

8

当我关闭该功能时,表示安装框架的注册表中的值被删除。你可以检查这个值。

看看: HKLM \ SOFTWARE \微软\ NET Framework安装\ NDP \ v3.5版本

+0

谢谢,所以我可以检查该注册表项,但是我必须从无管理的启动程序执行此操作,对不对? – 2010-04-19 19:22:55

+0

是的,不幸的是,不会有任何解决方法,因为该功能可以随意关闭和开启。 – KevinH 2010-04-19 19:32:02

3

看起来你会写你的应用程序的非管理启动。卷起你的袖子,有一个很好的C++潜水:)

1

活泉,我觉得这个URL可能有你的答案:

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

参见“如何安装.NET Framework 3.0的操作系统组件中部署场景“。据我所知,它描述了使用ocsetup触发Windows打开该功能。祝你好运。

另外,我很好奇,如果的ClickOnce安装是很聪明的知道,如果功能是关闭的(我想他们会)。但因为你是使用InstallShield,你可能需要一个功能更全面的安装比的ClickOnce; O)

+0

我提到的解决方案是针对.NET 3,但我敢打赌你可以对3.5使用相同的方法。 – 2010-04-19 18:56:07