原文
NSIS:判断并安装.NETFramework4的例子
现在.NET开发的软件已经大行其道,但有些操作系统并不符合软件的运行要求,所以,我们需要在安装程序中进行.NETFramework的判断,如果不符合要求就进行静默安装。
首先,我们在Function区段进行当前.NET版本判断:
01 | FunctionGetNetFrameworkVersion |
05 | ReadRegDWORD$0HKLM "SOFTWARE\Microsoft\NETFrameworkSetup\NDP\v4\Full" "Install" |
06 | ReadRegDWORD$1HKLM "SOFTWARE\Microsoft\NETFrameworkSetup\NDP\v4\Full" "Version" |
07 | StrCmp$01KnowNetFrameworkVersion+1 |
08 | ReadRegDWORD$0HKLM "SOFTWARE\Microsoft\NETFrameworkSetup\NDP\v3.5" "Install" |
09 | ReadRegDWORD$1HKLM "SOFTWARE\Microsoft\NETFrameworkSetup\NDP\v3.5" "Version" |
10 | StrCmp$01KnowNetFrameworkVersion+1 |
11 | ReadRegDWORD$0HKLM "SOFTWARE\Microsoft\NETFrameworkSetup\NDP\v3.0\Setup" "InstallSuccess" |
12 | ReadRegDWORD$1HKLM "SOFTWARE\Microsoft\NETFrameworkSetup\NDP\v3.0\Setup" "Version" |
13 | StrCmp$01KnowNetFrameworkVersion+1 |
14 | ReadRegDWORD$0HKLM "SOFTWARE\Microsoft\NETFrameworkSetup\NDP\v2.0.50727" "Install" |
15 | ReadRegDWORD$1HKLM "SOFTWARE\Microsoft\NETFrameworkSetup\NDP\v2.0.50727" "Version" |
17 | StrCpy$1 "2.0.50727.832" |
18 | StrCmp$01KnowNetFrameworkVersion+1 |
19 | ReadRegDWORD$0HKLM "SOFTWARE\Microsoft\NETFrameworkSetup\NDP\v1.1.4322" "Install" |
20 | ReadRegDWORD$1HKLM "SOFTWARE\Microsoft\NETFrameworkSetup\NDP\v1.1.4322" "Version" |
23 | StrCmp$01KnowNetFrameworkVersion+1 |
24 | ReadRegDWORD$0HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0" "Install" |
25 | ReadRegDWORD$1HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0" "Version" |
28 | StrCmp$01KnowNetFrameworkVersion+1 |
29 | StrCpy$1 "not.NetFramework" |
30 | KnowNetFrameworkVersion: |
|
然后,在Section区段进行.NET静默安装:
02 | CallGetNetFrameworkVersion |
05 | SetDetailsPrinttextonly |
06 | DetailPrint "正在安装.NETFramework4" |
07 | SetDetailsPrintlistonly |
11 | File "dotNetFx40_Full_x86_x64.exe" |
12 | ExecWait '$TEMP\dotNetFx40_Full_x86_x64.exe/q/norestart/ChainingPackageFullX64Bootstrapper' $R1 |
13 | Delete "$TEMP\dotNetFx40_Full_x86_x64.exe" |
|
当然,在Section区段可以做到自动在线下载而不把.NET打到安装包中,这样可以减小安装包体积,效果可参考紫辰记账本安装程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理