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

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

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

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

    Function GetNetFrameworkVersion
02
;获取.Net Framework版本支持
03
Push $1
04
Push $0
05
ReadRegDWORD $0 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv4Full""Install"
06
ReadRegDWORD $1 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv4Full""Version"
07
StrCmp $0 1 KnowNetFrameworkVersion +1
08
ReadRegDWORD $0 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv3.5""Install"
09
ReadRegDWORD $1 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv3.5""Version"
10
StrCmp $0 1 KnowNetFrameworkVersion +1
11
ReadRegDWORD $0 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv3.0Setup" "InstallSuccess"
12
ReadRegDWORD $1 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv3.0Setup" "Version"
13
StrCmp $0 1 KnowNetFrameworkVersion +1
14
ReadRegDWORD $0 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv2.0.50727" "Install"
15
ReadRegDWORD $1 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv2.0.50727" "Version"
16
StrCmp $1 "" +1 +2
17
StrCpy $1 "2.0.50727.832"
18
StrCmp $0 1 KnowNetFrameworkVersion +1
19
ReadRegDWORD $0 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv1.1.4322" "Install"
20
ReadRegDWORD $1 HKLM "SOFTWAREMicrosoftNET Framework SetupNDPv1.1.4322" "Version"
21
StrCmp $1 "" +1 +2
22
StrCpy $1 "1.1.4322.573"
23
StrCmp $0 1 KnowNetFrameworkVersion +1
24
ReadRegDWORD $0 HKLM "SOFTWAREMicrosoft.NETFrameworkpolicyv1.0""Install"
25
ReadRegDWORD $1 HKLM "SOFTWAREMicrosoft.NETFrameworkpolicyv1.0""Version"
26
StrCmp $1 "" +1 +2
27
StrCpy $1 "1.0.3705.0"
28
StrCmp $0 1 KnowNetFrameworkVersion +1
29
StrCpy $1 "not .NetFramework"
30
KnowNetFrameworkVersion:
31
Pop $0
32
Exch $1
33
FunctionEnd

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

01
Section -.NET
02
Call GetNetFrameworkVersion
03
Pop $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 '$TEMPdotNetFx40_Full_x86_x64.exe /q /norestart /ChainingPackage FullX64Bootstrapper' $R1
13
 Delete "$TEMPdotNetFx40_Full_x86_x64.exe"
14
 ${EndIf}
15
SectionEnd

当然,在Section区段可以做到自动在线下载而不把.NET打到安装包中,这样可以减小安装包体积,效果可参考紫辰记账本安装程序

原文地址:https://www.cnblogs.com/xiaowie/p/8667939.html