zoukankan      html  css  js  c++  java
  • NSIS——InstallOption文件 自定义页面 数据库连接配置

    1、用HM VNISEdit 2.0.3 中新建InstallOption文件,通过图形界面,来添加相应的控件。

    注意:state是显示的文本或值、Flags是操作相关的,要取值有事件的必须写。
    界面如下:
    NSIS——InstallOption文件 自定义页面 数据库连接配置 - 无忧 - 拓
     代码如下:
    ; 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
     
    界面如下:
    NSIS——InstallOption文件 自定义页面 数据库连接配置 - 无忧 - 拓
     
    NSIS——InstallOption文件 自定义页面 数据库连接配置 - 无忧 - 拓
     
    点击测试连接后,连接正确后 安装可以用,断续安装。
     
  • 相关阅读:
    【社工】社会工程学框架
    改用MyAnalyzer的KMeans聚类算法
    Ubuntu系统经常使用操作指令说明
    phonegap(cordova) 自己定义插件代码篇(三)----支付宝支付工具整合
    虚幻4 碰撞过滤
    java怎样将一个List传入Oracle存储过程
    Android 基于Retrofit+Rxjava搭建的简单易用的网络架构
    WIN SERVER8更改MYSQL的datadir后,数据库启动不起来
    Chord算法实现具体
    内存溢出与内存泄漏
  • 原文地址:https://www.cnblogs.com/juin/p/2577519.html
Copyright © 2011-2022 走看看