首先介绍下,HM NIS Edit工具,是一款已非常简洁好用的winform打包工具,功能强大,插件丰富,还有丰富的第三方界面库支持。

随着C/S模式开发的越来越少,这方面的资料,尤其是NSIS的资料都极其稀少。翻了很多文章,进行整合,终于找到比较满意的.NetFramework检测,并安装的实现方式。

进入正题,网上查了很多资料遇到问题:版本号对比一直无效,后来改为了用内置的版本号对比函数。

代码如下:

头部一定记得添加:!include "WordFunc.nsh"。看名称就是字符串操作之类的。

1.检测.NetFramework版本(读取注册表,这里与网上绝大多数资料一样)

Function GetNetFrameworkVersion;获取.Net Framework版本支持Push $1Push $0ReadRegDWORD $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 +1ReadRegDWORD $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 +1ReadRegDWORD $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 +1ReadRegDWORD $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 +2StrCpy $1 "2.0.50727.832"StrCmp $0 1 KnowNetFrameworkVersion +1ReadRegDWORD $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 +2StrCpy $1 "1.1.4322.573"StrCmp $0 1 KnowNetFrameworkVersion +1ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0""Install"ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0""Version"StrCmp $1 "" +1 +2StrCpy $1 "1.0.3705.0"StrCmp $0 1 KnowNetFrameworkVersion +1StrCpy $1 "not .NetFramework"KnowNetFrameworkVersion:Pop $0Exch $1FunctionEnd

2.比较版本,并进行安装。(网上很多使用If判断的测试没有效果,所以使用脚本内置的版本号比较方法)

Section - "比较版本号"DetailPrint "正在检测安装环境..."Call GetNetFrameworkVersionPop $R1${VersionCompare} "4.5.2" "$R1" $R2${If} $R2 == 0DetailPrint "当前版本($R1),无需安装组件"${ElseIf} $R2 == 1DetailPrint "当前组件版本($R1)过低,需要安装(4.5.2)版本的组件"${ElseIf} $R2 == 2DetailPrint "当前版本($R1),无需安装组件"${EndIf}
SectionEndSection -.NETCall GetNetFrameworkVersionPop $R1${VersionCompare} "4.5.2" $R1 $R2${If} $R2 == 1MessageBox MB_ICONINFORMATION|MB_OK "检测到当前系统缺少微软.NetFramework 4.5.2组件,需要进行安装,此操作有可能引起杀毒软件误报。"SetDetailsPrint textonlyDetailPrint "准备安装.NetFramework 4.5.2组件"SetDetailsPrint listonlySetOutPath "$TEMP"SetOverwrite onFile "Src\NETFramework4.5.2.exe"ExecWait '$TEMP\NETFramework4.5.2.exe ' $R1Delete "$TEMP\NETFramework4.5.2.exe"${EndIf}
SectionEnd

对,就这么多,把这些贴进去之前的脚本,就可以搞定。

转载于:https://www.cnblogs.com/aspnetcores/p/9829853.html

Winform打包-NSIS 检测.NetFramework版本(亲测可用)相关推荐

  1. 解决chrome浏览器adobe flash player不是最新版本亲测可用的方法

    解决chrome浏览器adobe flash player不是最新版本亲测可用的方法 参考文章: (1)解决chrome浏览器adobe flash player不是最新版本亲测可用的方法 (2)ht ...

  2. 谷歌翻译不用代理可用的免费api python版本亲测可用

    上一篇写的最新2022亲测可用的免费google翻译api_金乌爬虫的博客-CSDN博客_免费的翻译api需要使用国外的代理才能使用,那有直接能用的API 答案是绝对,有. 前端时间看了一个 &quo ...

  3. summernote支持视频上传功能,综合几个版本亲测可用

    原框架只支持视频链接上传,局限性比较大,不能上传本地的视频,综合这我查了几天资料 ,有个版本要么可用但是部分图标显示错误,综合0.8.12和0.8.18 版本整理.增加上传内容转载其他处,其余的均是自 ...

  4. RabbitMQ下载安装---最新版本--亲测可用

    RabbitMQ官网入口 简介: RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件).RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构 ...

  5. 利用Bmob快速实现安卓的简单登陆注册功能Bmobsdk3.6.9版本亲测可用(详细图文攻略附带处理小bug)

    前言:从其他人的留言中我知道Bmob这个云数据库,之前我一直在自己写后台但是发现太慢了要学的东西超级多,脚手架也不知道为什么老是搭不上很蛋疼,然后春节又必须回来老家山区里面有些事情耽搁了后台也凉了,后 ...

  6. python程序打包成exe可执行文件,亲测可行(pyinstaller教程)

    python程序打包成exe可执行文件,亲测可行(pyinstaller教程)(11-20190214) 文章目录: 有些程序你不想让别人看到,由此程序你想做成绿色软件普惠大众,有些..., 然而你只 ...

  7. js正则检测输入内容为数字,包括负数,整数,浮点数,亲测可用.JS检测整数,js检测浮点数,js检测负数,js检测数字,js限制输入框只输入数字,解决H5 number类型只能输入正数问题.

    JS 正则实现数字检测和限制输入,包括整数.浮点数.负数(亲测可用) 网上搜了一下,居然可以直接拿来用的很少,要么就是只能检测正整数.要么是只能检测浮点数,总之很多都不适合,而H5提供的type=&q ...

  8. Axure RP9授权码适合3658版本,亲测可用

    Axure RP9授权码适合3658版本,亲测可用 授权用户: www.7down.com 授权密匙: fAL2Vx1hDZcCG9zvuYOXd0KvD9yyPDsfR6+8SZ8fONtm0sNg ...

  9. springboot心跳检测_springboot websocket 实时刷新 添加心跳机制(亲测可用版)

    思路 在我之前的一篇文章当中写到了websocket的实时刷新,但是有个问题没有解决,就是长时间没有数据的时候,这个连接就会自动断开,然后再次进行连接的话,需要再次进行连接.如果加入心跳机制的话,10 ...

  10. VScode配置C语言环境 亲测 可用!!!

    VScode配置C语言环境 亲测 可用!!! 一.首先下载vscode,地址:https://code.visualstudio.com/ 此时我已经安装好了 二.对VSCode进行汉化安装插件Chi ...

最新文章

  1. IETester-IE兼容性测试工具
  2. 什么是脱离文档流?什么是文档流?
  3. 4个mos管驱动的全桥电路原理_最经典MOS管电路工作原理及详解没有之一
  4. pwa 问题_您真的需要PWA吗? 这里有四个问题可以帮助您做出决定。
  5. 【洛谷P3389】【模板】高斯消元
  6. Nginx担当WebSockets代理
  7. Java基础学习总结(127)——Java方法应该返回空对象还是null
  8. 【Python实例第6讲】多标签分类
  9. 炒冷饭的“象棋人机大战”
  10. 肌营养不良最新研究进展(2021年)
  11. 135微信编辑html语言,135微信编辑器
  12. NLP 2.9 深度学习与神经网络
  13. 洋酒销售系统的设计与实现(附源码+资料+论文+截图+数据库)
  14. MTK-MT65-MT67系列对比
  15. Unity多块屏幕显示设置以及分辨率设置
  16. 树莓派系统最新系统镜像Bullseye更换镜像源
  17. pion:rtc-to-webrtc示例
  18. 鸿蒙os手机评测视频,鸿蒙OS正式发布:荣耀智慧屏首发,一起来体验鸿蒙OS吧
  19. drm单个framebuffer显示
  20. 用HTML制作一首诗

热门文章

  1. 计算机网络第1章概述
  2. xmemecached中的一致性hash算法
  3. SGU 326 Perspective
  4. 关于.net 页面提交后 css失效或者部分失效的问题
  5. Python 学习笔记 - 11.模块(Module)
  6. 正则表达式学习(一)
  7. 基于级联双向胶囊网络的鲁棒三元组知识抽取
  8. 微软提出Layout,多模态任务也有预训练模型啦
  9. 厉害了!这款百度炼丹神器绝了!
  10. AI顶会论文“趋势”:对新方法的过度关注,与现实问题的脱节