1、用HM VNISEdit 2.0.3 中建立InstallOption檔案,通過圖形介面,來添加相應的控制項。
注意:state是顯示的文本或值、Flags是操作相關的,要取值有事件的必須寫。介面如下:
代碼如下:
; Ini file generated by the HM NIS Edit IO designer.[Settings]NumFields=8 [Field 1]Type=GroupboxText=串連到SQL ServerLeft=0Right=300Top=0Bottom=86 [Field 2]Type=TextState=saLeft=55Right=282Top=40Bottom=52Flags=WANTRETURN [Field 3]Type=PasswordState=saLeft=55Right=282Top=60Bottom=75Flags=WANTRETURN [Field 4]Type=LabelText=登入名稱:Left=19Right=51Top=44Bottom=52 [Field 5]Type=LabelText=密 碼:Left=19Right=51Top=65Bottom=75 [Field 6]Type=ButtonText=測試連接Left=0Right=299Top=92Bottom=108Flags=NOTIFY [Field 7]Type=LabelText=伺服器:Left=19Right=51Top=25Bottom=35 [Field 8]Type=TextFlags=READONLYState=本機伺服器Left=56Right=282Top=22Bottom=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_WELCOMEPage 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 showShowUnInstDetails showBrandingText "${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 $0FunctionEnd 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 $0StrCmp $0 0 passMessageBox MB_OK "串連錯誤,請重新輸入串連資訊,否則無法進行後面的操作!"Abortpass:MessageBox MB_OK "串連成功!" GetDlgItem $0 $HWNDPARENT 1 EnableWindow $0 1 Abort ; 禁止進入下一頁面,因為點擊的並不是“下一步”按鈕 NextBtn:FunctionEnd 介面如下: 點擊測試連接後,串連正確後 安裝可以用,斷續安裝。