如何使用可能不存在的.NET Framework版本安全地检查.NET Framework版本?

时间:2009-03-13 15:20:00

标签: c# .net

我有一个使用.NET 3.5构建的应用程序。如果用户在没有安装.NET 3.5的情况下运行它,我希望能够控制他们看到的内容,并且可能提供他们可以理解的消息(带有指向.NET 3.5的链接)与未处理的异常堆栈跟踪。但如果他们实际上没有.NET 3.5我的应用程序如何控制任何东西呢?

4 个答案:

答案 0 :(得分:4)

您是否认为至少安装了某些版本的.NET?

您可以编写一个小型加载程序以与所有版本兼容以进行检查。

或者如果没有安装.NET,找到一个简单的批处理程序(如果你愿意,可以用C ++轻松完成)。

@ECHO OFF
SET FileName=%windir%\Microsoft.NET\Framework\v1.1.4322
IF EXIST %FileName% GOTO Skip
ECHO.You currently do not have the Microsoft® .NET Framework 1.1 installed.
ECHO.This is required by the setup program for MyApplication.
ECHO.
ECHO.The Microsoft® .NET Framework 1.1 will now be installed on you system.
ECHO.After completion setup will continue to install MyApplication on your system.
ECHO.
Pause
SET FileName=
Start /WAIT .\dotnetfx.exe
Start .\Setup.exe
ECHO ON
Exit
Tongue Tiedkip
SET FileName=
Start .\Setup.exe
ECHO ON
Exit

This也可能有帮助。

答案 1 :(得分:2)

您可以考虑使用需要安装3.5的安装程序。这会阻止应用程序在无法运行时首先访问用户。

答案 2 :(得分:2)

更好的是,您可以使用安装程序技术,例如Wix或Visual Stuido安装项目,在安装期间检查您的软件的所有先决条件,例如特定的.NET框架运行时。如果没有,它将安装它们,或者至少告诉用户在哪里获取它们以及下一步做什么

答案 3 :(得分:1)

您需要一个非.NET EXE文件来检查.NET运行时。它可以写在您知道目标PC中存在的任何内容中。例如,如果以Windows 2000或更高版本为目标,您就知道Visual Basic 6.0运行时存在,因此您的安装程序始终可以启动Visual Basic 6.0初始应用程序,该应用程序在启动.NET EXE文件之前检查运行时。更好的方法是编写一个不依赖于Windows API之外的任何运行时的C ++应用程序。