VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

FirebirdSQL--製作安裝腳本

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> SQL 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
Ruey



註冊時間: 2003-03-12
文章: 1698
來自: tunglo

第 1 樓

發表發表於: 星期一 四月 26, 2004 12:57 am    文章主題: FirebirdSQL--製作安裝腳本 引言回覆

FirebirdSQL--製作安裝腳本
以NSIS為例.本篇整合FirebirdSQL及ODBC.
省去每次安裝要兩次步驟.



代碼:

; Script generated by the HM NIS Edit Script Wizard.

; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "FirebirdSQL"
!define PRODUCT_VERSION "1.5.0"
!define PRODUCT_PUBLISHER "Firebird Project"
!define PRODUCT_WEB_SITE "http://wiki.sunyear.com.tw/index.php?page=FirebirdSQL"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\FirebirdSQL\bin\fbguard.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define PRODUCT_SRC_DIR ""
!define PRODUCT_Firebird_DIR "D:\firebird\FirebirdSQL"
!define PRODUCT_ODBC_DIR "D:\firebird\ODBC_DLL"

; MUI 1.67 compatible ------
!include "MUI.nsh"

; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "D:\Firebird\FirebirdSQL\Firebird.ico"
!define MUI_UNICON "D:\Firebird\FirebirdSQL\Firebird.ico"

; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!insertmacro MUI_PAGE_LICENSE "${PRODUCT_Firebird_DIR}\讀我.txt"
; Components page
!insertmacro MUI_PAGE_COMPONENTS
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
;!define MUI_FINISHPAGE_RUN "$INSTDIR\bin\fbguard.exe -a"
;!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\Example.file"
;!insertmacro MUI_PAGE_FINISH

; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES

; Language files
!insertmacro MUI_LANGUAGE "TradChinese"


; MUI end ------
;--------------------------------




Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Firebird_Setup.exe"
;InstallDir "$PROGRAMFILES\FirebirdSQL"
InstallDir "C:\fb15"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show


InstType "單機版"
InstType "網路Server版"
InstType "網路Client版"
InstType /NOCUSTOM
Section "Firebird Server" SEC01
  SetOutPath "$INSTDIR"
  SetOverwrite on
  File /r "${PRODUCT_Firebird_DIR}\*.*"

  ExecShell open '$INSTDIR\bin\instclient.exe' 'install fbclient' SW_SHOWMINIMIZED
  ExecShell open '$INSTDIR\bin\instclient.exe' 'install gds32' SW_SHOWMINIMIZED
  ExecShell open '$INSTDIR\bin\instreg.exe' 'install ' SW_SHOWMINIMIZED
  ExecShell open '$INSTDIR\bin\instsvc.exe' 'install -auto -superserver -guardian -z' SW_SHOWMINIMIZED
  ;ExecShell open '$INSTDIR\bin\instsvc.exe' 'start' SW_SHOWMINIMIZED

  SectionIn 1 2
SectionEnd
Section "Firebird Client" SEC02
  SetOutPath "$INSTDIR"
  SetOverwrite on

  ExecShell open '$INSTDIR\bin\instclient.exe' 'install fbclient' SW_SHOWMINIMIZED
  ExecShell open '$INSTDIR\bin\instclient.exe' 'install gds32' SW_SHOWMINIMIZED

  SectionIn 1 3
SectionEnd

Section "Firebird ODBC" SEC03
  SetOutPath "$SYSDIR"
  SetOverwrite on
  File "${PRODUCT_ODBC_DIR}\IscDbc.dll"
  File "${PRODUCT_ODBC_DIR}\OdbcJdbc.dll"
  File "${PRODUCT_ODBC_DIR}\OdbcJdbcSetup.dll"
 
  ;ExecShell open  '$SYSDIR\regsvr32.exe ' '$SYSDIR\OdbcJdbcSetup.dll' SW_SHOWMINIMIZED
  ;SetOutPath "$INSTDIR"
  RegDLL "$INSTDIR\ODBC\OdbcJdbcSetup.dll"
  SectionIn 1 2 3
SectionEnd

Section -AdditionalIcons
  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
  CreateDirectory "$SMPROGRAMS\FirebirdSQL"
  CreateShortCut "$SMPROGRAMS\FirebirdSQL\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
  CreateShortCut "$SMPROGRAMS\FirebirdSQL\Uninstall.lnk" "$INSTDIR\uninst.exe"
  CreateShortCut "$SMPROGRAMS\FirebirdSQL\fbguard.lnk" "$INSTDIR\bin\fbguard.exe" "-a"

SectionEnd

Section -Post
  WriteUninstaller "$INSTDIR\uninst.exe"
  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\fbguard.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bin\fbguard.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd

; Section descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "FirebirdSQL DataBase Server"
  !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "FierbirdSQL Client"
  !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Firebird ODBC"
!insertmacro MUI_FUNCTION_DESCRIPTION_END

;=======================================================
;安裝前的動作
;=======================================================
Function .onInit
  ExecShell open '$INSTDIR\bin\instsvc.exe' 'stop' SW_SHOWMINIMIZED
  ExecShell open '$INSTDIR\bin\instsvc.exe' 'remove -z' SW_SHOWMINIMIZED
  ExecShell open '$INSTDIR\bin\instreg.exe' 'remove -z' SW_SHOWMINIMIZED

FunctionEnd

;=======================================================
;安裝後的動作
;=======================================================
Function .onInstSuccess
   ;ExecShell open '$INSTDIR\bin\instclient.exe' 'install fbclient' SW_SHOWMINIMIZED
   ;ExecShell open '$INSTDIR\bin\instclient.exe' 'install gds32' SW_SHOWMINIMIZED
   ;ExecShell open '$INSTDIR\bin\instreg.exe' 'install ' SW_SHOWMINIMIZED
   ;ExecShell open '$INSTDIR\bin\instsvc.exe' 'install -auto -superserver -guardian -z' SW_SHOWMINIMIZED
   ExecShell open '$INSTDIR\bin\instsvc.exe' 'start' SW_SHOWMINIMIZED
   
   ;ExecShell open 'c:\fb15\bin\fbguard.exe -a'
   ;Exec 'c:\fb15\bin\fbguard.exe -a'
   ;Exec 'c:\fb15\bin\instsvc start'
  ;!insertmacro MUI_INSTALLOPTIONS_EXTRACT "ioA.ini"
  ;!insertmacro MUI_INSTALLOPTIONS_EXTRACT "ioB.ini"
  ;!insertmacro MUI_INSTALLOPTIONS_EXTRACT "test.ini"
FunctionEnd

;=======================================================
;反安裝後的動作
;=======================================================
Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地從你的電腦移除。"
FunctionEnd

;=======================================================
;反安裝前的動作
;=======================================================
Function un.onInit
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你確定要完全移除 $(^Name) ,其及所有的元件?" IDYES +2
  Abort
FunctionEnd

;=======================================================
;反安裝的動作
;=======================================================
Section Uninstall
  ;Firebird反安裝
  ExecShell open 'net ' 'stop "firebird guardian"'
  ExecShell open '$INSTDIR\bin\instsvc.exe' 'stop'
  ExecShell open '$INSTDIR\bin\instsvc.exe' 'remove -z'
  ExecShell open '$INSTDIR\bin\instreg.exe' 'remove -z'

  Delete "$INSTDIR\${PRODUCT_NAME}.url"
  Delete "$INSTDIR\uninst.exe"
  ;Delete "$INSTDIR\Example.file"
  ;Delete "$INSTDIR\AppMainExe.exe"
 
 
  ;ODBC反安裝
  UnRegDLL "$INSTDIR\ODBC\OdbcJdbcSetup.dll"
  ;SetOutPath "$SYSDIR"
  ;ExecShell open 'regsvr32.exe' '/u .\OdbcJdbcSetup.dll' SW_SHOWMINIMIZED
  Delete "$SYSDIR\OdbcJdbcSetup.dll"
  Delete "$SYSDIR\OdbcJdbc.dll"
  Delete "$SYSDIR\IscDbc.dll"
 
 
  RMDir /r "$INSTDIR"
 
  ;?#123;式集--反安裝
  Delete "$SMPROGRAMS\FirebirdSQL\Uninstall.lnk"
  Delete "$SMPROGRAMS\FirebirdSQL\Website.lnk"

  RMDir "$SMPROGRAMS\FirebirdSQL"
  RMDir /r "$SMPROGRAMS\FirebirdSQL"
  ;RMDir "$INSTDIR"

  ;註冊碼移除
  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
  SetAutoClose true
SectionEnd

_________________
#############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!

學會VFP使用者社區的搜尋,Code才會更有趣~
#############################
回頂端
檢視會員個人資料 發送私人訊息
goto-dream



註冊時間: 2004-05-11
文章: 909


第 2 樓

發表發表於: 星期一 六月 28, 2004 12:19 pm    文章主題: 引言回覆

一樓的安裝後會以Services方式執行.這只適用於非Win98/WinMe

所以安裝程式要略作修正.可依照作業系統安裝.函數應用如下:
代碼:
B.5 Get Windows version
 ; GetWindowsVersion
 ;
 ; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
 ; Updated by Joost Verburg
 ;
 ; Returns on top of stack
 ;
 ; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003)
 ; or
 ; '' (Unknown Windows Version)
 ;
 ; Usage:
 ;   Call GetWindowsVersion
 ;   Pop $R0
 ;   ; at this point $R0 is "NT 4.0" or whatnot
 
 Function GetWindowsVersion
 
   Push $R0
   Push $R1
 
   ReadRegStr $R0 HKLM \
   "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion

   IfErrors 0 lbl_winnt
   
   ; we are not NT
   ReadRegStr $R0 HKLM \
   "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
 
   StrCpy $R1 $R0 1
   StrCmp $R1 '4' 0 lbl_error
 
   StrCpy $R1 $R0 3
 
   StrCmp $R1 '4.0' lbl_win32_95
   StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
 
   lbl_win32_95:
     StrCpy $R0 '95'
   Goto lbl_done
 
   lbl_win32_98:
     StrCpy $R0 '98'
   Goto lbl_done
 
   lbl_win32_ME:
     StrCpy $R0 'ME'
   Goto lbl_done
 
   lbl_winnt:
 
   StrCpy $R1 $R0 1
 
   StrCmp $R1 '3' lbl_winnt_x
   StrCmp $R1 '4' lbl_winnt_x
 
   StrCpy $R1 $R0 3
 
   StrCmp $R1 '5.0' lbl_winnt_2000
   StrCmp $R1 '5.1' lbl_winnt_XP
   StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error
 
   lbl_winnt_x:
     StrCpy $R0 "NT $R0" 6
   Goto lbl_done
 
   lbl_winnt_2000:
     Strcpy $R0 '2000'
   Goto lbl_done
 
   lbl_winnt_XP:
     Strcpy $R0 'XP'
   Goto lbl_done
 
   lbl_winnt_2003:
     Strcpy $R0 '2003'
   Goto lbl_done
 
   lbl_error:
     Strcpy $R0 ''
   lbl_done:
 
   Pop $R1
   Exch $R0
 
 FunctionEnd



其實若不會修改.可以去下載Controls Centers軟體.
設定後依樣可執行.......

感覺FirebirdSQL包含管理/控制台等軟體.可放置於64MB隨身跌上.
比MSSQL太方便拉!!!

_________________
福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!

想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.

          愛作夢
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> SQL 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作