01_NSIS_设置密码卸载

01_NSIS_设置密码卸载

1. 密码卸载

1.1 添加卸载相关页面

;--------------------引入文件,声明变量----------------------------------
!include "nsDialogs.nsh"
Var Dialog
Var Label
Var Text
;--------------------添加卸载界面-----------------------------------
;卸载欢迎界面
!insertmacro MUI_UNPAGE_WELCOME
;定义卸载密码
!define Password "123"
;un.PasswordPageShow为密码输入页面,un.PasswordPageLeave为离开函数,验证密码
UninstPage Custom un.PasswordPageShow un.PasswordPageLeave
!insertmacro MUI_UNPAGE_INSTFILES

1.2 定义卸载密码页面

;显示卸载密码对话框
Function un.PasswordPageShow
  !insertmacro MUI_HEADER_TEXT "输入密码" "请联系管理员获取卸载密码。"
  ;在该页面中创建一个对话框、并在堆栈中返回其HWND值
  nsDialogs::Create /NOUNLOAD 1018
  ;从堆栈里弹出一个字串到用户变量
  Pop $Dialog
  
  ;如果结果错误,则在下一行退出
  ${If} $Dialog == error
    Abort
  ${EndIf}

  ${NSD_CreateLabel} 15u 10u 100% 12u "管理员tel:88888888"
  Pop $Label

  ${NSD_CreateGroupBox} 15u 45u -35u 70u "密码输入框"

  ${NSD_CreateText} 25u 75u -60u 12u ...
  Pop $Text
  ${NSD_SetFocus} $Text
  ;显示自定义界面
 nsDialogs::Show
FunctionEnd

1.3 定义离开时验证卸载密码函数

;离开时验证卸载密码函数
Function un.PasswordPageLeave
  ;获取用户输入的数据到变量R1
  ${NSD_GetText} $Text $R1
  StrCmp $R1 '${Password}' +3
  ;验证密码
  MessageBox MB_OK|MB_ICONEXCLAMATION "密码输入错误!请输入正确的卸载密码!"
  Abort
  ;密码正确
  MessageBox MB_OK|MB_ICONEXCLAMATION "密码正确!"
  ;Abort
FunctionEnd

2. 相关函数介绍

2.1 StrCmp

https://nsis.sourceforge.io/Reference/StrCmp

2.2 函数声明

str1 str2 jump_if_equal [jump_if_not_equal]

比较(不区分大小写)str1和str2。如果str1和str2相等,则转到jump_if_equal,否则转到jump_if_no_equal

2.3 例子

StrCmp $0 "a string" 0 +3
DetailPrint '$$0 == "a string"'
Goto +2
DetailPrint '$$0 != "a string"'

参考网址

https://www.flighty.cn/html/bushu/20140921_254.html?t=1506424277467

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


下一篇:NSIS FileOpen打开读写文件操作