NSIS:判断并安装.NET Framework 4 的例子

原文 NSIS:判断并安装.NET Framework 4 的例子

现在.NET开发的软件已经大行其道,但有些操作系统并不符合软件的运行要求,所以,我们需要在安装程序中进行.NET Framework的判断,如果不符合要求就进行静默安装。

 

首先,我们在Function区段进行当前.NET版本判断:

01Function GetNetFrameworkVersion
02;获取.Net Framework版本支持
03Push $1
04Push $0
05ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full""Install"
06ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full""Version"
07StrCmp $0 1 KnowNetFrameworkVersion +1
08ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5""Install"
09ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5""Version"
10StrCmp $0 1 KnowNetFrameworkVersion +1
11ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "InstallSuccess"
12ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "Version"
13StrCmp $0 1 KnowNetFrameworkVersion +1
14ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Install"
15ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Version"
16StrCmp $1 "" +1 +2
17StrCpy $1 "2.0.50727.832"
18StrCmp $0 1 KnowNetFrameworkVersion +1
19ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" "Install"
20ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" "Version"
21StrCmp $1 "" +1 +2
22StrCpy $1 "1.1.4322.573"
23StrCmp $0 1 KnowNetFrameworkVersion +1
24ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0""Install"
25ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0""Version"
26StrCmp $1 "" +1 +2
27StrCpy $1 "1.0.3705.0"
28StrCmp $0 1 KnowNetFrameworkVersion +1
29StrCpy $1 "not .NetFramework"
30KnowNetFrameworkVersion:
31Pop $0
32Exch $1
33FunctionEnd

然后,在Section区段进行.NET静默安装:

01Section -.NET
02Call GetNetFrameworkVersion
03Pop $R1
04 ${If} $R1 < '4.0.30319'
05 SetDetailsPrint textonly
06 DetailPrint "正在安装 .NET Framework 4"
07 SetDetailsPrint listonly
08 
09 SetOutPath "$TEMP"
10 SetOverwrite on
11 File "dotNetFx40_Full_x86_x64.exe"
12 ExecWait '$TEMP\dotNetFx40_Full_x86_x64.exe /q /norestart /ChainingPackage FullX64Bootstrapper' $R1
13 Delete "$TEMP\dotNetFx40_Full_x86_x64.exe"
14 ${EndIf}
15SectionEnd
当然,在Section区段可以做到自动在线下载而不把.NET打到安装包中,这样可以减小安装包体积,效果可参考 紫辰记账本安装程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值