制作软件升级安装包

功能需求

我们要实现以下功能:

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
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容