是否有命令行命令来validation.NET的安装版本

我有一套脚本安装脚本。 您可以在任何服务器2008计算机上使用脚本。 但是,我需要检查.NET 3.5是否已经安装(在脚本运行之前)使用DOSbatch file。 那可能吗?

我知道我可以检查C:\WINDOWS\Microsoft.NET\Framework\v3.5存在一个文件,但是如果有一些更可靠的东西会更好。

我想检查它是否实际安装,而不仅仅是如果目录/文件存在。

谢谢

不幸的是,最好的办法是检查该目录。 我不确定你的意思,但是“实际安装”,因为.NET 3.5使用与.NET 3.0和.NET 2.0相同的CLR,因此所有新function都包含在该目录中的新程序集中。 基本上,如果目录在那里然后3.5安装。

唯一我要补充的是find最大的灵活性这样的方向:

 %windir%\Microsoft.NET\Framework\v3.5 

既然你说你想知道它的实际安装,我认为最好的方法(缺less运行版本特定的代码),是检查安心命名的“安装”registry项。 0x1表示是:

 C:\>reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5"| findstr Install Install REG_DWORD 0x1 InstallPath REG_SZ c:\WINNT\Microsoft.NET\Framework\v3.5\ 

这也正好是“微软推荐”的官方方法 。

WMI是另一种可能性,但似乎不切实际(慢?在我的C2D,SSD需要2分钟)。 也许它在你的服务器上效果更好:

 C:\>wmic product where "Name like 'Microsoft .Net%'" get Name, Version Name Version Microsoft .NET Compact Framework 1.0 SP3 Developer 1.0.4292 Microsoft .NET Framework 3.0 Service Pack 2 3.2.30729 Microsoft .NET Framework 3.5 SP1 3.5.30729 Microsoft .NET Compact Framework 2.0 2.0.5238 Microsoft .NET Framework 4 Client Profile 4.0.30319 Microsoft .NET Framework 4 Multi-Targeting Pack 4.0.30319 Microsoft .NET Framework 2.0 Service Pack 2 2.2.30729 Microsoft .NET Framework 1.1 1.1.4322 Microsoft .NET Framework 4 Extended 4.0.30319 C:\>wmic product where "name like 'Microsoft .N%' and version='3.5.30729'" get name Name Microsoft .NET Framework 3.5 SP1 

除此之外,我认为唯一可以100%确定的方法是实际运行一个简单的控制台应用程序,编译的目标是您的框架版本。 就个人而言,我认为这是不必要的,并相信registry方法就好了。

最后,您可以设置一个可从您的服务器访问的Intranettesting站点,并嗅探User Agent来确定.NET版本。 但是这当然不是batch file解决scheme。 另请参阅doc这里 。

你的意思是像下面的DOS命令将显示安装的.NET框架的工作:

 wmic /namespace:\\root\cimv2 path win32_product where "name like '%%.NET%%'" get version 

随后可能会显示以下内容:

 Version 4.0.30319 

一旦你使用它,WMIC是相当有用的,比在脚本中编码WMI要容易得多,这取决于你想要达到什么目的。

你可以自己写一个控制台应用程序,并使用System.Environment.Version来找出版本。 斯科特·汉塞尔曼(Scott Hanselman)发表了一篇博客文

或者在registry中查看已安装的版本。 HKLM \ Software \ Microsoft \ NETFramework Setup \ NDP

如果你要运行一个小的控制台应用程序,你可以从.NET SDK安装clrver.exe 。 我不认为你可以比这更干净。 这不是我的答案(但我碰巧同意),我在这里find了 。

REMsearchCONFIG文件,如果没有退出,那么用户没有.Net framework 2.0`

 SET FileName=%windir%\Microsoft.NET\Framework\v2.0.50727\CONFIG IF EXIST %FileName% GOTO INSTALL_DIALER ECHO.You currently do not have the Microsoft(c) .NET Framework 2.0 installed. 

这对我有用:

 @echo off SETLOCAL ENABLEEXTENSIONS echo Verify .Net Framework Version for /f "delims=" %%I in ('dir /B /A:D %windir%\Microsoft.NET\Framework') do ( for /f "usebackq tokens=1,3 delims= " %%A in (`reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\%%I" 2^>nul ^| findstr Install`) do ( if %%A==Install ( if %%B==0x1 ( echo %%I ) ) ) ) echo Do you see version v4.5.2 or greater in the list? pause ENDLOCAL 

2^>nul将错误redirect到蒸气。

您可以检查已安装的c#编译器和.net的打印版本:

 @echo off for /r "%SystemRoot%\Microsoft.NET\Framework\" %%# in ("*csc.exe") do ( set "l=" for /f "skip=1 tokens=2 delims=k" %%$ in ('"%%# #"') do ( if not defined l ( echo Installed: %%$ set l=%%$ ) ) ) echo latest installed .NET %l% 

csc.exe没有-version开关,但是在它的logo中打印.net版本。 你也可以试试msbuild.exe,但是.net framework 1. *没有msbuild。

你可以看看.NET 4的这个页面: http : //www.itninja.com/question/batch-script-to-check-and-install-dotnet4-0