杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2284|回复: 0

使用 NSIS 作安装程序时如何检测 SQLServer 的连接正确性

[复制链接]
发表于 2016-9-2 15:07:27 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  1. /*-----------------------------------------
  2. SQLServer 连接测试脚本,这是最简化的脚本,基本上只做了连接测试,其他的操作,例如 数据库还原操作等等这里都没有实现。
  3. -------------------------------------------*/

  4. !include "MUI.nsh"

  5. Name "SQLServer 连接操作"
  6. OutFile "Setup.exe"

  7. Page custom PageInitFunc PageLeaveFunc "" # 自定义页面
  8. !insertmacro MUI_PAGE_INSTFILES

  9. !insertmacro MUI_LANGUAGE "SimpChinese" # 设置安装界面语言

  10. ShowInstDetails show # 显示安装进度信息

  11. ReserveFile "io.ini" # 预先打包文件,方便安装加速释放 io.ini
  12. !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS # 预先打包文件,方便安装加速释放

  13. Var SERVERNAME # 服务器名 例如: server ; user5 ...... 通常是计算机名
  14. Var LOGINNAME # 登陆名 例如: sa ..... SQLServer 安全性属性那里的用户名
  15. Var LOGINPASSWORD # 登陆密码, 如果你用的是 sa 登陆,这里就要 sa 的密码
  16. Var isql_DIR # isql.exe 的所在位置

  17. Function .onInit
  18. !insertmacro MUI_INSTALLOPTIONS_EXTRACT "io.ini" # 初始化页面
  19. FunctionEnd

  20. Function PageInitFunc
  21. !insertmacro MUI_INSTALLOPTIONS_DISPLAY "io.ini" # 显示页面
  22. FunctionEnd

  23. Function PageLeaveFunc
  24. !insertmacro MUI_INSTALLOPTIONS_READ $SERVERNAME "io.ini" "Field 2" "State"
  25. !insertmacro MUI_INSTALLOPTIONS_READ $LOGINNAME "io.ini" "Field 3" "State"
  26. !insertmacro MUI_INSTALLOPTIONS_READ $LOGINPASSWORD "io.ini" "Field 4" "State"
  27. ReadRegStr $isql_DIR HKLM "SOFTWARE\Microsoft\Microsoft SQL Server\80\Tools\ClientSetup" "SQLPath"
  28. nsExec::ExecToStack `"$isql_DIR\Binn\isql" -S$SERVERNAME -U$LOGINNAME -P$LOGINPASSWORD -Q"select 'ok'" -o$PLUGINSDIR\result.txt`
  29. # 这里只是简单的测试返回值 $0 为 0 则连接通过, 为其他值则连接出错,证明账号密码等参数输入错误, 这里只是很简单的检测,较为安全的操作是读取 result.txt 文件,如果里面第 3 行 显示为 ok 则连接正常且顺利运行了一个 SQL 语句。
  30. Pop $0
  31. StrCmp $0 0 pass
  32. MessageBox MB_OK "连接错误,请重新输入连接信息,否则无法进行后面的操作"
  33. Abort
  34. pass:
  35. MessageBox MB_OK "输入连接信息正确,接下来执行其他操作"
  36. FunctionEnd

  37. Section "-SetupFunc" SEC1
  38. DetailPrint "这里执行你要做的数据库操作"
  39. DetailPrint "isql 可以完成所有数据库操作,请看SQLServer的相关帮助"
  40. SectionEnd
复制代码
ini 文件代码
  1. [Settings]
  2. NumFields=7

  3. [Field 1]
  4. Type=label
  5. Text=SQLServer 连接?
  6. Left=0
  7. Right=-1
  8. Top=0
  9. Bottom=9

  10. [Field 2]
  11. Type=Text
  12. Left=40
  13. Right=163
  14. Top=22
  15. Bottom=35

  16. [Field 3]
  17. Type=Text
  18. Left=39
  19. Right=163
  20. Top=43
  21. Bottom=54

  22. [Field 4]
  23. Type=Password
  24. Left=39
  25. Right=163
  26. Top=62
  27. Bottom=75

  28. [Field 5]
  29. Type=Label
  30. Text=密码:
  31. Left=8
  32. Right=36
  33. Top=65
  34. Bottom=75

  35. [Field 6]
  36. Type=Label
  37. Text=账号:
  38. Left=8
  39. Right=38
  40. Top=46
  41. Bottom=56

  42. [Field 7]
  43. Type=Label
  44. Text=服务器:
  45. Left=6
  46. Right=34
  47. Top=27
  48. Bottom=36
复制代码





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-17 08:49 , Processed in 0.117721 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表