是否有可能知道.NET Framework是否从.NET应用程序安装?

问题描述:

这是事情。当我尝试在没有安装.NET框架的计算机上运行.NET应用程序时,我的.NET应用程序崩溃,出现一个非常难看的常规异常错误。是否有可能知道.NET Framework是否从.NET应用程序安装?

这是正常的吗?如果是......是否有任何方法来检查.NET框架是否能够正常退出?

+0

更大的问题是:哪些机器没有安装.NET? – leppie 2009-02-27 10:51:02

由于无法在加载.NET运行时之前执行,因此无法使用托管的代码检查.NET框架的版本号。您可以使用CLR Unmanaged API执行此操作,但解决此问题的最佳方法是提供一种安装机制,用于在计算机上未安装.NET Framework的情况下检查,下载和安装.NET Framework。

我想,必须在安装程序脚本中进行检查。

您可以在非托管代码中编写存根以执行此操作,但是先决条件通常是您创建安装应用程序的原因。

看看.NET框架客户端配置文件(http://msdn.microsoft.com/en-us/library/cc656912.aspx):

.NET框架客户端配置文件提供了一个共同的引导程序的设置,您可以使用您的客户端应用程序。这确保安装运行应用程序的所有要求,而不管.NET Framework的哪个版本(如果有)。安装体验提供了一致的用户界面(UI)和无缝安装,无论目标操作系统是Windows XP还是Windows Vista。

如果打包到安装程序中,您可以设置安装条件来检查.NET和框架版本。

另一种方式来检查框架是:

System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory; 
System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion; 

从O'Reilly的食谱。

但是,这两个都是因为.NET必须在代码甚至可以开始检查之前安装的事实。