NSIS——InstallOption文件 自定义页面 数据库连接配置

注意:state是显示的文本或值、Flags是操作相关的,要取值有事件的必须写。

; Ini file generated by the HM NIS Edit IO designer.
[Settings]
NumFields=8
 
[Field 1]
Type=Groupbox
Text=连接到SQL Server
Left=0
Right=300
Top=0
Bottom=86
 
[Field 2]
Type=Text
State=sa
Left=55
Right=282
Top=40
Bottom=52
Flags=WANTRETURN
 
[Field 3]
Type=Password
State=sa
Left=55
Right=282
Top=60
Bottom=75
Flags=WANTRETURN
 
[Field 4]
Type=Label
Text=登录名:
Left=19
Right=51
Top=44
Bottom=52
 
[Field 5]
Type=Label
Text=密 码:
Left=19
Right=51
Top=65
Bottom=75
 
[Field 6]
Type=Button
Text=测试连接
Left=0
Right=299
Top=92
Bottom=108
Flags=NOTIFY
 
[Field 7]
Type=Label
Text=服务器:
Left=19
Right=51
Top=25
Bottom=35
 
[Field 8]
Type=Text
Flags=READONLY
State=本地服务器
Left=56
Right=282
Top=22
Bottom=35

2、将这个界面放到欢迎界面之后,代码如下:

; ------ 自定义页面 ------
Var hwnd ; 自定义页面的窗口句柄
 
Var SQL_SERVERNAME # 服务器名 例如: server ; user5 ...... 通常是计算机名
Var SQL_LOGINNAME # 登陆名 例如: sa ..... SQLServer 安全性属性那里的用户名
Var SQL_LOGINPASSWORD # 登陆密码, 如果你用的是 sa 登陆,这里就要 sa 的密码
Var SQL_isql_DIR # isql.exe 的所在位置
 
 
; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
Page custom PageInitFunc PageLeaveFunc # 自定义页面 ,这里一个是初始化的方法,一个时离开时的方法
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!define MUI_FINISHPAGE_RUN "$INSTDIR\YHK2005.exe"
!insertmacro MUI_PAGE_FINISH
 
; 安装卸载过程页面
!insertmacro MUI_UNPAGE_INSTFILES
 
; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"
 
;这里是生成的代码(非自定义界面的)
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${INSTALL_NAME}.exe"
InstallDir "${INSTALL_DIR}"
ShowInstDetails show
ShowUnInstDetails show
BrandingText "${INSTALL_WATER}"
 
; ------ 自定义页面 ------
ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll"
ReserveFile "C:\Documents and Settings\Administrator\桌面\Link2SQL.ini"
 
;安装.exe为你想检测的可执行文件
Function .onInit
 ; ------ 自定义页面 ------
 InitPluginsDir
 File /oname=$PLUGINSDIR\Link2SQL.ini "C:\Documents and Settings\Administrator\桌面\Link2SQL.ini"
FunctionEnd
 
Function PageInitFunc
 
 SendMessage $HWNDPARENT ${WM_SETTEXT} 0 "STR:数据库配置"
 !insertmacro MUI_HEADER_TEXT "连接数据库" "执行与数据库相关的操作,需要登录数据库的用户名及密码" ;通过宏 MUI_HEADER_TEXT 设置页面页眉
 GetDlgItem $0 $HWNDPARENT 1
 EnableWindow $0 0
 
;注册表中读取计算机名称
 ReadRegStr $SQL_SERVERNAME HKLM "SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" "ComputerName"
 WriteINIStr "$PLUGINSDIR\Link2SQL.ini" "Field 8" "State" "$SQL_SERVERNAME"
 InstallOptions::initDialog /NOUNLOAD "$PLUGINSDIR\Link2SQL.ini"
 Pop $hwnd ; 获取自定义页面的窗口句柄
 InstallOptions::show ; 显示自定义页面
 Pop $0
FunctionEnd
 
 
Function PageLeaveFunc
 ReadINIStr $0 "$PLUGINSDIR\Link2SQL.ini" "Settings" "State" ; 读取那个控件正在使用 state 就是 Field 后面的序数
 StrCmp $0 0 NextBtn ; 点击下一步按钮
 StrCmp $0 6 TestLinkBtn ; 点击 测试连接按钮 -- 6 为控件的 FieldNum
 Goto NextBtn
 TestLinkBtn:
 ReadINIStr $SQL_LOGINNAME "$PLUGINSDIR\Link2SQL.ini" "Field 2" "State" ; 获取用户名的状态
 ReadINIStr $SQL_LOGINPASSWORD "$PLUGINSDIR\Link2SQL.ini" "Field 3" "State" ; 获取密码的状态
 ReadRegStr $SQL_isql_DIR HKLM "SOFTWARE\Microsoft\Microsoft SQL Server\80\Tools\ClientSetup" "SQLPath"
 nsExec::ExecToStack `"$SQL_isql_DIR\Binn\isql" -S$SQL_SERVERNAME -U$SQL_LOGINNAME -P$SQL_LOGINPASSWORD -Q"select 'ok'" -o$PLUGINSDIR\result.txt`
# 这里只是简单的测试返回值 $0 为 0 则连接通过, 为其他值则连接出错,证明账号密码等参数输入错误, 这里只是很简单的检测,较为安全的操作是读取 result.txt 文件,如果里面第 3 行 显示为 ok 则连接正常且顺利运行了一个 SQL 语句。
Pop $0
StrCmp $0 0 pass
MessageBox MB_OK "连接错误,请重新输入连接信息,否则无法进行后面的操作!"
Abort
pass:
MessageBox MB_OK "连接成功!"
 GetDlgItem $0 $HWNDPARENT 1
 EnableWindow $0 1
 Abort ; 禁止进入下一页面,因为点击的并不是“下一步”按钮
 NextBtn:
FunctionEnd

点击测试连接后,连接正确后 安装可以用,断续安装。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容