NSIS 制作自动升级包
1:首先定义基础变量
- !define PRODUCT_NAME "XXX"//补丁名称
- !define PRODUCT_VERSION "3"//版本号
- !define PRODUCT_PUBLISHER "BBB"
- !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\Hymson3.0"//注册表位置
- !define PRODUCT_UNINST_ROOT_KEY "HKLM"
//压缩方式
SetCompressor lzma
2:引用界面UI并赋值,编写补丁路径和是否覆盖
- SetFont "tahome" 8
- RequestExecutionLevel admin
- !include "MUI2.nsh"
- !insertmacro MUI_LANGUAGE "SimpChinese"
- Name "${PRODUCT_NAME}_升级_${PRODUCT_VERSION}"
- OutFile "${PRODUCT_NAME}_升级_${PRODUCT_VERSION}.exe"
- InstallDirRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Hymson3.0" "DisplayIcon"
- Section "升级文件" SEC01
- SetDetailsPrint textonly
- DetailPrint "正在升级 ${PRODUCT_NAME},请单击关闭按钮完成升级!"
- SetDetailsPrint listonly
- SectionIn RO
- SetOutPath "$INSTDIR"
- SetOverwrite on
- File "E:\xx\xx\xx\xx\bin\Debug\xx.exe"
- WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
- SectionEnd
3:初始化判断
- ;升级文件
- Function .onInit
- FindProcDLL::FindProc "Hymlaser.exe"
- Pop $R0
- IntCmp $R0 1 0 no_run
- MessageBox MB_ICONSTOP "安装程序检测到Hymlaser.exe正在运行,请退出程序后重试"
- Quit
- no_run:
- ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Hymson3.0" "DisplayVersion"
- StrCmp $0 "" 0 NoAbort
- MessageBox MB_OK|MB_ICONEXCLAMATION "您未正确安装Hymson3.0的软件,不能使用此升级程序!"
- Abort ;退出安装程序
- NoAbort:
- ReadRegStr $1 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Hymson3.0" "DisplayVersion"//取注册表键值
- IntCmp $1 "${PRODUCT_VERSION} " is5 lessthan5 morethan5
- is5:
- DetailPrint "$1 == ${PRODUCT_VERSION} "
- Goto int
- lessthan5:
- DetailPrint "$1 < ${PRODUCT_VERSION} "
- Goto error2
- morethan5:
- DetailPrint "$1 > ${PRODUCT_VERSION} "
- Goto error1
- int:
- MessageBox MB_OK "你系统中现有版本为$1,为最新当前补丁最新版本" IDOK
- Abort
- DetailPrint "安装版本为: $1"
- goto done
- error1:
- MessageBox MB_ICONSTOP|MB_OK "你系统中版本$1高于更新版本${PRODUCT_VERSION}" IDOK
- Abort
- error2:
- MessageBox MB_ICONSTOP|MB_OK "你系统中版本$1低于更新版本${PRODUCT_VERSION}" IDOK
- done:
- FunctionEnd
补充上面的版本对比只能比较整数在此补充上带小数点的版本对比
- ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Hymson3.0" "DisplayVersion" ;PRODUCT_VERSION ;用户变量(输出) 根键 子键 项
- ${IF} $0 != ""
- IntCmp ${PRODUCT_VERSION} $0 0 Old New // 第一个为参数1 第二个为参数2 第三个0代表前2的相减 是否等于0 Old与new 为方法
- MessageBox MB_YESNO "安装程序检测到 Hymlaser 已经安装,是否覆盖安装" IDYES Y IDNO N
- N:
- Quit
- Old:
- MessageBox MB_ICONSTOP "安装程序检测到 Hymlaser 已经安装了更新版本"
- Quit
- New:
- MessageBox MB_ICONSTOP "安装程序检测到 Hymlaser 已经安装了旧版本,继续更新安装"
- ${ENDIF}
- Y:
NSIS 制作自动升级包的更多相关文章
- 制作OTA升级包
OTA 软件包工具 本文地址http://wossoneri.github.io/2018/09/21/%5BAndroid%5D%5BFramework%5Dcreate-ota-update-zi ...
- Hbuider制作app升级包的简单办法 (升级官方提供的案例)
源文档:http://ask.dcloud.net.cn/question/11795 http://ask.dcloud.net.cn/article/199 一.生成移动App资源升级包 5+应用 ...
- 使用NSIS制作可执行程序的安装包
使用NSIS制作可执行程序的安装包: 1,NSIS下载地址:https://pan.baidu.com/s/1GzzQNXgAlJPJWgjBzVwceA 下载完成之后解压缩,打开安装程序,默认安装即 ...
- NSIS制作安装包笔记(一):NSIS介绍、使用NSIS默认向导脚本制作Windows安装包
前言 做产品时,定制的自定义安装界面常有的,使用NSIS + Qt可以完美的定制基于QT的安装界面,先从纯NSIS开始,制作常规的安装包. 应用程序的发布方式 应用程序发布的时候,具备以下 ...
- nsis制作启动Tomcat服务的exe安装包教程
一. 准备工作 下载nsis相关工具包,点击此下载 1. 安装程序:nsis-2.46-setup.exe 2. 编辑程序:cnisedit203.exe 3. 帮助文档:NSIS205帮助文档.ra ...
- NSIS 制作简单安装包
;replace NSIS/Contrib/zip2exe/Modern.nsh;NSI format: Asni;http://nsis.sourceforge.net/ ;UAC级别Request ...
- 使用NSIS制作安装包
nsis下载地址:http://www.pc6.com/softview/SoftView_14342.html nsis使用: 启动NSIS程序主界面,选择“可视化脚本编辑器(VNISEdit)”菜 ...
- iOS 制作自动打包脚本 Xcode8.3.2
本文包含以下内容: 前言 1.shell脚本的编写 2.xcodebuild命令 3.完整的可用示例 参考资料 前言 做iOS开发,打包APP是比较频繁的事情,每次都手动去配置一堆东西确实是比较乏味. ...
- [转]NSIS 制作安装包无法创建桌面快捷方式或无法删除开始菜单项
用户将桌面文件转移了,如: D:\Doc\Desktop ,安装程序后,桌面不会生成快捷方式, 或者卸载后,开始菜单中的文件也不会被删除 NSIS卸载后无法删除开始菜单中的内容原因:因为NSIS中使 ...
随机推荐
- 资源:Postgresql数据库下载路径
postgresql下载路径: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
- MyBatis:Mybatis逆向工程问题记录
近日我在搭建springboot+mybatis+mysql 的整合项目(自己测试玩)的时候用到了mybatis的逆向工程,来这里记录一下我的菜鸟编码过程 首先我在maven中引入这些依赖 <d ...
- TestComplete 64位和32位之间的区别
在64位系统上,有两种版本的TestComplete:32位和64位.本主题描述了TestComplete x64及其32位版本之间的区别.关于TestComplete x64启动TestComple ...
- webpack(11)配置文件分离为开发配置、生成配置和基础配置
前言 上篇我们已经配置好了本地开发服务器,但是配置的相对比较凌乱,一个文件中有些是开发时用到的配置,有些是生成时用到的配置,有些是开发和生成都要用到的配置,所以我们这里把环境分为3个环境 webpac ...
- 「CF446C」 DZY Loves Fibonacci Numbers
「CF446C」 DZY Loves Fibonacci Numbers 这里提供一种优美的根号分治做法. 首先,我们考虑一种不太一样的暴力.对于一个区间加斐波那契数的操作 \([a,b]\),以及一 ...
- L inux系统安全及应用---暴力破解密码
系统安全及应用一.开关机安全控制① 调整BIOS引导设置② GRUB限制二.终端登录安全控制① 限制root只在安全终端登录② 禁止普通用户登录举例三.系统弱口令检测① Joth the Ripper ...
- ssh服务两句话
ssh服务采用"非对称密钥系统":主要通过两把不一样的公钥和密钥来进行加密与解密的过程 公钥(Public Key):提供给远程主机进行数据加密 私钥(Private Key):远 ...
- 高校表白App-团队冲刺第十天
今天要做什么 做一个类似于淘宝的小云播报 做了什么 没有完全实现,轮转实现,功能没有 遇到的问题 遇到的问题好多啊,感觉写一天都写不完,我还是好好学习一下再重新写吧
- Leetcode6. Z 字形变换
> 简洁易懂讲清原理,讲不清你来打我~ 输入字符串,按下右上下右上排列后输出字符串
1.Spring Boot与MyBatis融合的矛盾问题: Spring家族的使命就是为了简化而生,但是随着Spring的发展壮大,有点事与愿违了.为了坚持初心,Spring家族祭出了一大杀器---S ...