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