一、UpdateNetFrameWorkVersion.nsis
!include nsdialogs.nsh
XPStyle on
var FrameworkVersion
var VersionCompareResult
!include "WordFunc.nsh"
OutFile "UpdateNETFrameWork.exe"
Name "UpdateNETFrameWork"
Section "test"
Call GetNetFrameworkVersion
; 版本号比较
${VersionCompare} "4.6" "$FrameworkVersion" $VersionCompareResult
MessageBox MB_OK "LocalFrameVersion: $FrameworkVersion"
${If} $VersionCompareResult == "2"
MessageBox MB_OK "NetFrameworkVersion > 4.6"
${ElseIf} $VersionCompareResult == "0"
MessageBox MB_OK "GetNetFrameworkVersion = 4.6"
${Else}
MessageBox MB_OK "NetFrameworkVersion < 4.6"
; 安装 .NetFramework4.6
nsExec::Exec "InstallNETFrameWork.bat"
${EndIf}
SectionEnd
; 本地.Net Framework运行版本
Function GetNetFrameworkVersion
Push $1
Push $0
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Install"
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Version"
StrCmp $0 1 KnowNetFrameworkVersion +1
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" "Install"
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" "Version"
StrCmp $0 1 KnowNetFrameworkVersion +1
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "InstallSuccess"
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "Version"
StrCmp $0 1 KnowNetFrameworkVersion +1
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Install"
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Version"
StrCmp $1 "" +1 +2
StrCpy $1 "2.0.50727.832"
StrCmp $0 1 KnowNetFrameworkVersion +1
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" "Install"
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" "Version"
StrCmp $1 "" +1 +2
StrCpy $1 "1.1.4322.573"
StrCmp $0 1 KnowNetFrameworkVersion +1
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0" "Install"
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0" "Version"
StrCmp $1 "" +1 +2
StrCpy $1 "1.0.3705.0"
StrCmp $0 1 KnowNetFrameworkVersion +1
StrCpy $1 "not .NetFramework"
KnowNetFrameworkVersion:
Pop $0
StrCpy $FrameworkVersion $1
Exch $1
FunctionEnd
二、InstallNETFrameWork.bat
start /min /wait NDP462-KB3151800-x86-x64-AllOS-ENU.exe /quiet /norestart