原文 NSIS:判断并安装.NET Framework 4 的例子
现在.NET开发的软件已经大行其道,但有些操作系统并不符合软件的运行要求,所以,我们需要在安装程序中进行.NET Framework的判断,如果不符合要求就进行静默安装。
首先,我们在Function区段进行当前.NET版本判断:
01 |
Function GetNetFrameworkVersion |
05 |
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full""Install" |
06 |
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full""Version" |
07 |
StrCmp $0 1 KnowNetFrameworkVersion +1 |
08 |
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5""Install" |
09 |
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5""Version" |
10 |
StrCmp $0 1 KnowNetFrameworkVersion +1 |
11 |
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "InstallSuccess" |
12 |
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "Version" |
13 |
StrCmp $0 1 KnowNetFrameworkVersion +1 |
14 |
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Install" |
15 |
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Version" |
17 |
StrCpy $1 "2.0.50727.832" |
18 |
StrCmp $0 1 KnowNetFrameworkVersion +1 |
19 |
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" "Install" |
20 |
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" "Version" |
22 |
StrCpy $1 "1.1.4322.573" |
23 |
StrCmp $0 1 KnowNetFrameworkVersion +1 |
24 |
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0""Install" |
25 |
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0""Version" |
27 |
StrCpy $1 "1.0.3705.0" |
28 |
StrCmp $0 1 KnowNetFrameworkVersion +1 |
29 |
StrCpy $1 "not .NetFramework" |
30 |
KnowNetFrameworkVersion: |
|
然后,在Section区段进行.NET静默安装:
02 |
Call GetNetFrameworkVersion |
04 |
${If} $R1 < '4.0.30319' |
05 |
SetDetailsPrint textonly |
06 |
DetailPrint "正在安装 .NET Framework 4" |
07 |
SetDetailsPrint listonly |
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" |
|
当然,在Section区段可以做到自动在线下载而不把.NET打到安装包中,这样可以减小安装包体积,效果可参考
紫辰记账本安装程序。
- NSIS脚本 打包安装程序
相关工具 nsis http://nsis.sourceforge.net/Special_Builds HM NIS Edit http://hmne.sourceforge.net/ 例子: ; ...
- Windows 10 安装 Sql Server 2014 反复提示需要安装 .NET Framework 3.5 SP1 的解决方案
一.首先安装.NET Framework 3.5: 离线安装方式: 1.装载相对应的系统安装盘,我是Windows 10 x64 企业版,所以装载Windows 10 x64 企业版安装镜像ISO,盘 ...
- Entity Framework 教程——安装Entity Framework环境
安装Entity Framework环境 Entity Framework 5.0 API分布在两个地方,一个可在NuGet包管理器中找到,一个存在于.NET framework中..NET fram ...
- 安装.NET Framework进度条卡住不动的解决方案
VS在安装之前需要安装.NET Framework,我安装的是4.0版本.但是安装进度条到一半左右时就卡住不动了.前前后后重试多次,还有几次重新开机,但都没用. 开始还以为是安装的系统有问题.后来在网 ...
- 安装.NET FRAMEWORK 4.5安装进度条回滚之后发生严重错误 代码0x80070643
安装.NET FRAMEWORK 4.5安装进度条回滚之后发生严重错误 代码0x80070643 注意: 回滚完成后,不要急着点击完成 查看日志:用IE浏览器打开,最后红色部分就是要查看的部分,本人 ...
- Ubuntu14.0下安装Zend Framework 2
Ubuntu14.0下安装Zend Framework 2为了安装这个东西,忙活了快一天了,参考中文博客一直没有安装成功,有些博客的时间也是已经很早了,后来google看英文版的才安装成功,这里记录一 ...
- 在centos7中安装Robot Framework
安装前景介绍: 最初,我们是在Windows环境下搭建Robot Framework来对我们的服务进行接口测试的(想知道如何在Windows下安装Robot Framework,可以参考我同事的博客h ...
- 【解决】若要使用报表生成器,必须在此计算机上安装 .Net Framework 3.5
在报表库中试图通过点击菜单“在报表生成器中编辑”编辑报表时,会跳转到错误信息页面,提示: 若要使用报表生成器,必须在此计算机上安装 .Net Framework 3.5. 一般情况下并不是因为没有安装 ...
- Win8.1无法安装.NET Framework 3.5的解决办法
这个问题纠结了我很多天,恢复系统也没用,差点儿就重装Win8,现在终于解决了,你也来试试吧! 机型:台电X89 系统:Win8.1 with bing 故障:在未安装.NET Framework 3. ...
随机推荐
- BestCoder Round#8 1003
dp[i][j] 表示以i结尾的长度为j的递增子序列dp[i][j] = sum(dp[k][j]) k<i && a[i] >a[j]如果只是单纯的循环for(j ...
- PM俱乐部之旅7-弱活着
有些人认为,最终我们放松一点时间,有意想不到的事情发生--公司组织结构调整. 公司由于业务范围调整,所以要进行对应的组织结构调整.PMO部门也随之重组,项目经理俱乐部的活动改成项目交流会,请项目 ...
- c++宏源证券编程
1,定义宏功能,作,func(x) = x-1? 最简单的, 假设x = 2则 #define func(x) 1 特化出来x,令 #define func_helper_2 1 #defi ...
- 获取LayoutInflater的三种方式
1.LayoutInflater.from(mContext); 2.Activity类的getLayoutInflater 3.(LayoutInflater)mContext.getSystemS ...
- C/C++大型项目错误管理
在C/C++大型项目中,错误管理在项目中起着举足轻重的作用,以我自己的项目经验以及观摩其它项目,错误管理对项目框架以及开发效率有着非常大的影响.对于错误管理的认识大致分为三类: 刚刚開始敲代码的新手, ...
- Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步。
Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步. ogg要实现的功能: 同步可以细化到单个表,满足特定的where条件rows同步,称号column同步. ...
- Ubuntu 13.04 用户安装 gnome 3.8 桌面
昨天我试用了一把 Ubuntu gnome 13.04,如果你看了那一片文章:Ubuntu Gnome 13.04 体验截图.对 Ubuntu gnome 13.04 并不是采用的gnome 3.8 ...
- 查看linux系统版本号命令
一.查看内核版本号命令: 1) [root@SOR_SYS ~]# cat /proc/version Linux version 2.6.18-238.el5 (mockbuild@x86-012. ...
- 【UVA272】TEX Quotes
A - TEX Quotes Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submitcid=80 ...
- jQuery 焦点图,图像文件js档
jQuery 焦点图,图片文件在js文件里 演示 XML/HTML Code <div id="photo_container"></div> JavaSc ...