NSIS 制作自动升级包
Posted zt199510
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSIS 制作自动升级包相关的知识,希望对你有一定的参考价值。
1:首先定义基础变量
!define PRODUCT_NAME "XXX"//补丁名称 !define PRODUCT_VERSION "3"//版本号 !define PRODUCT_PUBLISHER "BBB" !define PRODUCT_UNINST_KEY "SoftwareMicrosoftWindowsCurrentVersionUninstallHymson3.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 "SoftwareMicrosoftWindowsCurrentVersionUninstallHymson3.0" "DisplayIcon" Section "升级文件" SEC01 SetDetailsPrint textonly DetailPrint "正在升级 ${PRODUCT_NAME},请单击关闭按钮完成升级!" SetDetailsPrint listonly SectionIn RO SetOutPath "$INSTDIR" SetOverwrite on File "E:xxxxxxxxinDebugxx.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 "SoftwareMicrosoftWindowsCurrentVersionUninstallHymson3.0" "DisplayVersion" StrCmp $0 "" 0 NoAbort MessageBox MB_OK|MB_ICONEXCLAMATION "您未正确安装Hymson3.0的软件,不能使用此升级程序!" Abort ;退出安装程序 NoAbort: ReadRegStr $1 HKLM "SoftwareMicrosoftWindowsCurrentVersionUninstallHymson3.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
以上是关于NSIS 制作自动升级包的主要内容,如果未能解决你的问题,请参考以下文章
NSIS安装包开发笔记:NSIS使用NSIS+Qt界面制作安装包流程
NSIS安装包开发笔记:NSIS使用NSIS+Qt界面制作安装包流程