功能需求
我们要实现以下功能:
1、运行时检测注册表中是否有指定的安装路径,如果有,直接进入安装过程,如果没有,给一个提示。
2、运行时检测程序是否运行,如果正在运行则可以选择强制结束。
3、升级过程中实现解压文件、运行BAT等操作,且有进度条提示。
4、升级结束时打开升级说明以便用户查看。
文件释放
!define PRODUCT_NAME "永恒心锁"
!define PRODUCT_VERSION "1.0.0.1"
SetCompressor lzma
SetFont "tahoma" 8
RequestExecutionLevel admin
!include "MUI2.nsh"
!insertmacro MUI_LANGUAGE "SimpChinese"
Name "${PRODUCT_NAME}_升级_${PRODUCT_VERSION}"
OutFile "${PRODUCT_NAME}_升级_${PRODUCT_VERSION}.exe"
InstallDirRegKey HKCU "Software永恒心锁" ""
Section "升级文件" SEC01
SetDetailsPrint textonly
DetailPrint "正在升级 ${PRODUCT_NAME},请单击关闭按钮完成升级!"
SetDetailsPrint listonly
SectionIn RO
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
;升级文件
File "Server永恒心锁.EXE"
File "Server永恒心锁.bat"
File "Server更新说明.txt"
;运行BTA
nsExec::Exec "$INSTDIR永恒心锁.bat"
;指定以记事本打开说明
Exec '"$SYSDIRnotepad.exe" "$INSTDIR更新说明.txt"'
SectionEnd
单例模式 第二步:禁止重复运行
Function .Oninit
InitPluginsDir
;创建互斥防止重复运行
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "永恒心锁") i .r1 ?e'
Pop $R0
StrCmp $R0 0 +3
MessageBox MB_OK|MB_ICONEXCLAMATION "有一个 ${PRODUCT_NAME} 升级程序已经运行!"
Abort
FunctionEnd
© 版权声明
THE END
暂无评论内容