NSIS 判断 .NET Framework 是否已安装脚本

[code] ; IsDotNETInstalled
;
; 用法:
; Call IsDotNETInstalled
; Pop $0
; StrCmp $0 1 found.NETFramework no.NETFramework

Function IsDotNETInstalled
Push $0
Push $1
Push $2
Push $3
Push $4

ReadRegStr $4 HKEY_LOCAL_MACHINE
“Software\Microsoft.NETFramework” “InstallRoot”

移除退格键

Push $4
Exch $EXEDIR
Exch $EXEDIR
Pop $4

如果根目录不存在则 .NET 未安装

IfFileExists $4 0 noDotNET

StrCpy $0 0

EnumStart:

 EnumRegKey $2 HKEY_LOCAL_MACHINE \
   "Software\Microsoft\.NETFramework\Policy"  $0
 IntOp $0 $0 + 1
 StrCmp $2 "" noDotNET

 StrCpy $1 0

 EnumPolicy:

   EnumRegValue $3 HKEY_LOCAL_MACHINE \
     "Software\Microsoft\.NETFramework\Policy\$2" $1
   IntOp $1 $1 + 1
    StrCmp $3 "" EnumStart
     IfFileExists "$4\$2.$3" foundDotNET EnumPolicy

noDotNET:
StrCpy $0 0
Goto done

foundDotNET:
StrCpy $0 1

done:
Pop $4
Pop $3
Pop $2
Pop $1
Exch $0
FunctionEnd
[/code]