HM NIS Edit制作安装包时检测是否有.net4.6环境,没有的时候自动安装。

把.net4.6安装包打包进安装程序。

关键脚本如下:

头部引用字符串对比库

!include "WordFunc.nsh"

新建一个Section,.Net4.6的文件版本号是4.6.00081,其它的版本需要在其对应的完整安装包右键属性,文件详情中查看。

Section -.NET Framework
SetDetailsPrint both
DetailPrint "运行环境检测中..."
Call GetNetFrameworkVersion
Pop $R1
${VersionCompare} $R1 '4.6.00081' $1
${If} $1 == '2'
SetDetailsPrint textonly
DetailPrint "正在安装所需环境..."
ExecWait '"$INSTDIR\4.6.exe"' $R1
${EndIf}
SectionEnd

新建一个Function用来执行检测已安装的.Net版本(来自百度)

Function GetNetFrameworkVersion
;获取.Net Framework版本支持
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
Exch $1
FunctionEnd

然后打包生成安装包,这样就可以在没有.Net4.6的环境的机器上安装的时候自动安装.net4.6了。

上一篇:HDU5745-La Vie en rose-字符串dp+bitset优化


下一篇:BUG笔记:Android原生浏览器不认负百分数margin致Foundation Orbit往右滑动动画出错