1:首先定义基础变量

  1. !define PRODUCT_NAME "XXX"//补丁名称
  2. !define PRODUCT_VERSION "3"//版本号
  3. !define PRODUCT_PUBLISHER "BBB"
  4. !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\Hymson3.0"//注册表位置
  5. !define PRODUCT_UNINST_ROOT_KEY "HKLM"
    //压缩方式
    SetCompressor lzma

2:引用界面UI并赋值,编写补丁路径和是否覆盖

  1. SetFont "tahome" 8
  2. RequestExecutionLevel admin
  3.  
  4. !include "MUI2.nsh"
  5. !insertmacro MUI_LANGUAGE "SimpChinese"
  6. Name "${PRODUCT_NAME}_升级_${PRODUCT_VERSION}"
  7. OutFile "${PRODUCT_NAME}_升级_${PRODUCT_VERSION}.exe"
  8. InstallDirRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Hymson3.0" "DisplayIcon"
  9.  
  10. Section "升级文件" SEC01
  11. SetDetailsPrint textonly
  12. DetailPrint "正在升级 ${PRODUCT_NAME},请单击关闭按钮完成升级!"
  13. SetDetailsPrint listonly
  14. SectionIn RO
  15. SetOutPath "$INSTDIR"
  16. SetOverwrite on
  17. File "E:\xx\xx\xx\xx\bin\Debug\xx.exe"
  18. WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  19. SectionEnd

3:初始化判断

  1. ;升级文件
  2. Function .onInit
  3. FindProcDLL::FindProc "Hymlaser.exe"
  4. Pop $R0
  5. IntCmp $R0 1 0 no_run
  6. MessageBox MB_ICONSTOP "安装程序检测到Hymlaser.exe正在运行,请退出程序后重试"
  7. Quit
  8. no_run:
  9.  
  10. ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Hymson3.0" "DisplayVersion"
  11. StrCmp $0 "" 0 NoAbort
  12. MessageBox MB_OK|MB_ICONEXCLAMATION "您未正确安装Hymson3.0的软件,不能使用此升级程序!"
  13. Abort ;退出安装程序
  14. NoAbort:
  15.  
  16. ReadRegStr $1 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Hymson3.0" "DisplayVersion"//取注册表键值
  17. IntCmp $1 "${PRODUCT_VERSION} " is5 lessthan5 morethan5
  18. is5:
  19. DetailPrint "$1 == ${PRODUCT_VERSION} "
  20. Goto int
  21. lessthan5:
  22. DetailPrint "$1 < ${PRODUCT_VERSION} "
  23. Goto error2
  24. morethan5:
  25. DetailPrint "$1 > ${PRODUCT_VERSION} "
  26. Goto error1
  27. int:
  28. MessageBox MB_OK "你系统中现有版本为$1,为最新当前补丁最新版本" IDOK
  29. Abort
  30. DetailPrint "安装版本为: $1"
  31. goto done
  32. error1:
  33. MessageBox MB_ICONSTOP|MB_OK "你系统中版本$1高于更新版本${PRODUCT_VERSION}" IDOK
  34. Abort
  35. error2:
  36. MessageBox MB_ICONSTOP|MB_OK "你系统中版本$1低于更新版本${PRODUCT_VERSION}" IDOK
  37. done:
  38. FunctionEnd

补充上面的版本对比只能比较整数在此补充上带小数点的版本对比

  1. ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Hymson3.0" "DisplayVersion" ;PRODUCT_VERSION ;用户变量(输出) 根键 子键
  2. ${IF} $0 != ""
  3. IntCmp ${PRODUCT_VERSION} $0 0 Old New // 第一个为参数1 第二个为参数2 第三个0代表前2的相减 是否等于0 Old与new 为方法
  4. MessageBox MB_YESNO "安装程序检测到 Hymlaser 已经安装,是否覆盖安装" IDYES Y IDNO N
  5. N:
  6. Quit
  7. Old:
  8. MessageBox MB_ICONSTOP "安装程序检测到 Hymlaser 已经安装了更新版本"
  9. Quit
  10. New:
  11. MessageBox MB_ICONSTOP "安装程序检测到 Hymlaser 已经安装了旧版本,继续更新安装"
  12. ${ENDIF}
  13. Y:

NSIS 制作自动升级包的更多相关文章

  1. 制作OTA升级包

    OTA 软件包工具 本文地址http://wossoneri.github.io/2018/09/21/%5BAndroid%5D%5BFramework%5Dcreate-ota-update-zi ...

  2. Hbuider制作app升级包的简单办法 (升级官方提供的案例)

    源文档:http://ask.dcloud.net.cn/question/11795 http://ask.dcloud.net.cn/article/199 一.生成移动App资源升级包 5+应用 ...

  3. 使用NSIS制作可执行程序的安装包

    使用NSIS制作可执行程序的安装包: 1,NSIS下载地址:https://pan.baidu.com/s/1GzzQNXgAlJPJWgjBzVwceA 下载完成之后解压缩,打开安装程序,默认安装即 ...

  4. NSIS制作安装包笔记(一):NSIS介绍、使用NSIS默认向导脚本制作Windows安装包

    前言   做产品时,定制的自定义安装界面常有的,使用NSIS + Qt可以完美的定制基于QT的安装界面,先从纯NSIS开始,制作常规的安装包.   应用程序的发布方式   应用程序发布的时候,具备以下 ...

  5. nsis制作启动Tomcat服务的exe安装包教程

    一. 准备工作 下载nsis相关工具包,点击此下载 1. 安装程序:nsis-2.46-setup.exe 2. 编辑程序:cnisedit203.exe 3. 帮助文档:NSIS205帮助文档.ra ...

  6. NSIS 制作简单安装包

    ;replace NSIS/Contrib/zip2exe/Modern.nsh;NSI format: Asni;http://nsis.sourceforge.net/ ;UAC级别Request ...

  7. 使用NSIS制作安装包

    nsis下载地址:http://www.pc6.com/softview/SoftView_14342.html nsis使用: 启动NSIS程序主界面,选择“可视化脚本编辑器(VNISEdit)”菜 ...

  8. iOS 制作自动打包脚本 Xcode8.3.2

    本文包含以下内容: 前言 1.shell脚本的编写 2.xcodebuild命令 3.完整的可用示例 参考资料 前言 做iOS开发,打包APP是比较频繁的事情,每次都手动去配置一堆东西确实是比较乏味. ...

  9. [转]NSIS 制作安装包无法创建桌面快捷方式或无法删除开始菜单项

    用户将桌面文件转移了,如: D:\Doc\Desktop  ,安装程序后,桌面不会生成快捷方式, 或者卸载后,开始菜单中的文件也不会被删除 NSIS卸载后无法删除开始菜单中的内容原因:因为NSIS中使 ...

随机推荐

  1. 资源:Postgresql数据库下载路径

    postgresql下载路径: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

  2. MyBatis:Mybatis逆向工程问题记录

    近日我在搭建springboot+mybatis+mysql 的整合项目(自己测试玩)的时候用到了mybatis的逆向工程,来这里记录一下我的菜鸟编码过程 首先我在maven中引入这些依赖 <d ...

  3. TestComplete 64位和32位之间的区别

    在64位系统上,有两种版本的TestComplete:32位和64位.本主题描述了TestComplete x64及其32位版本之间的区别.关于TestComplete x64启动TestComple ...

  4. webpack(11)配置文件分离为开发配置、生成配置和基础配置

    前言 上篇我们已经配置好了本地开发服务器,但是配置的相对比较凌乱,一个文件中有些是开发时用到的配置,有些是生成时用到的配置,有些是开发和生成都要用到的配置,所以我们这里把环境分为3个环境 webpac ...

  5. 「CF446C」 DZY Loves Fibonacci Numbers

    「CF446C」 DZY Loves Fibonacci Numbers 这里提供一种优美的根号分治做法. 首先,我们考虑一种不太一样的暴力.对于一个区间加斐波那契数的操作 \([a,b]\),以及一 ...

  6. L inux系统安全及应用---暴力破解密码

    系统安全及应用一.开关机安全控制① 调整BIOS引导设置② GRUB限制二.终端登录安全控制① 限制root只在安全终端登录② 禁止普通用户登录举例三.系统弱口令检测① Joth the Ripper ...

  7. ssh服务两句话

    ssh服务采用"非对称密钥系统":主要通过两把不一样的公钥和密钥来进行加密与解密的过程 公钥(Public Key):提供给远程主机进行数据加密 私钥(Private Key):远 ...

  8. 高校表白App-团队冲刺第十天

    今天要做什么 做一个类似于淘宝的小云播报 做了什么 没有完全实现,轮转实现,功能没有 遇到的问题 遇到的问题好多啊,感觉写一天都写不完,我还是好好学习一下再重新写吧

  9. Leetcode6. Z 字形变换

    > 简洁易懂讲清原理,讲不清你来打我~ 输入字符串,按下右上下右上排列后输出字符串![在这里插入图片描述](https://img-blog.csdnimg.cn/4578280a7c1848c ...

  10. Spring Boot的MyBatis注解:@MapperScan和@Mapper(十七)

    1.Spring Boot与MyBatis融合的矛盾问题: Spring家族的使命就是为了简化而生,但是随着Spring的发展壮大,有点事与愿违了.为了坚持初心,Spring家族祭出了一大杀器---S ...