Telepítőprogram készítése Windows rendszerekre a futtatókörnyezethez és az adatbázishoz

A RoolWikiBÓL

Revision as of 2009. január 21., 09:36 by Rozsahegyil (Vita | szerkesztései)
(eltér) ←Régebbi változat | legfrissebb változat (eltér) | Újabb változat→ (eltér)

A telepítőt a NullSoft NSIS [1] rendszerével, a 2.42-es verzióval készítettem. Ehhez programot kell írni, melyet az NSIS lefordít, mely eredménye a telepítő lesz. Alábbiakban a program egyes részletei láthatók. A teljes program szövege itt található:

Tartalomjegyzék

Fejlesztőkörnyezet telepítője

A telepítés néhány fő részre bontható:

  • Globális beállítások
  • Licensz elfogadása
  • Az adatbázis gép címének bekérése
  • Telepítési célmappa kiválasztása
  • Fájlok másolása
  • Ikon készítése az asztalra
  • Start menübe bejegyzés
  • Eltávolító készítése

Globális beállítások

XPStyle on
ShowInstDetails hide
ShowUninstDetails hide

; The name of the installer
Name "${prodname}"
Caption "${prodname}"

; The file to write by  compiler
OutFile "${setup}"

SetDateSave on
SetDatablockOptimize on
CRCCheck on
SilentInstall normal

; The default installation directory
InstallDir "$PROGRAMFILES\${company}\${prodname}"
InstallDirRegKey HKLM "${regkey}" ""

; Request application privileges for Windows Vista
RequestExecutionLevel admin

LoadLanguageFile "${NSISDIR}\Contrib\Language files\Hungarian.nlf"

Licensz elfogadása

LicenseData <fájlnév>
Page license

Az adatbázis gép címének bekérése

# hostname paraméterhet
Var Dialog
Var hostLabel
Var hostText
Var hostText_State
Var hostImage
Var hostImageHandle
# end of hostname paraméterhet
...
Page custom nsDialogsPage_hostParam nsDialogsPageLeave_hostParam
...
# host bekérése, a parancsikon készítéséhez
Function nsDialogsPage_hostParam
  nsDialogs::Create 1018
  Pop $Dialog

  ${If} $Dialog == error
    Abort
  ${EndIf}

  ${NSD_CreateLabel} 0 70u 100% 12u "Kérem adja meg a roolnet adatbázist szolgáltató gép nevét (vagy IP címét)!"
    Pop $hostLabel

  ${NSD_CreateText} 0 83u 100% 13u $hostText_State
    Pop $hostText
 
  ${NSD_CreateBitmap} 0 0 100% 100% ""
    Pop $hostImage
  ${NSD_SetImage} $hostImage $PLUGINSDIR\hostimage.bmp $hostImageHandle
 
  nsDialogs::Show
FunctionEnd

Function nsDialogsPageLeave_hostParam
 ${NSD_GetText} $hostText $hostText_State
FunctionEnd

Telepítési célmappa kiválasztása

Page directory

Fájlok másolása

Page instfiles
...
Section "" ;No components page, name is not important

 ; Set output path to the installation directory.
 SetOutPath $INSTDIR
 
 ; Put file there
 File vrt.exe
 File vrtsblib.dll
 File libpq.dll
 File qsqlpsql.dll
 File qt-mt331.dll
 File odbc.dll
 File lpsolve55.dll
 File vrtlibdevice.dll
 File vrtlibglp58hw.dll
 File vrtlibglp58mcs.dll
 File vrtlibite.dll
 File vrtlibserial.dll
 File vrtlibsocket.dll
 File vrtlibstmcs.dll

 ; ikon létrehozása
 CreateShortCut "$INSTDIR\${prodname}.lnk" \
 "$INSTDIR\vrt.exe" \
 "${execparam}" \
 "$INSTDIR\vrt.exe" 0 \
 SW_SHOWNORMAL \
 ALT|CONTROL|SHIFT|F5 \
 "roolnet futtatókörnyezet"
 
SectionEnd ; end the section

Ikon készítése az asztalra

 CopyFiles "$INSTDIR\${prodname}.lnk" "$DESKTOP\${prodname}.lnk"

Start menübe bejegyzés

 CreateDirectory "${startmenu}"
 CopyFiles "$INSTDIR\${prodname}.lnk" "${startmenu}\${prodname}.lnk"
 CreateShortCut "${startmenu}\roolnet Start Eltávolítás.lnk" "$INSTDIR\$uninstallerName"
 !ifdef website
   WriteINIStr "${startmenu}\roolnet Start Honlap.url" "InternetShortcut" "URL" ${website}
   WriteINIStr "${startmenu}\roolnet Start Dokumentáció.url" "InternetShortcut" "URL" "www.elelmiszerbiztonsag.hu/mediawiki"
 !endif

Eltávolító készítése

UninstPage uninstConfirm
UninstPage instfiles

A Section-ben:

writeUninstaller $INSTDIR\$uninstallerName
UninstallText "${prodname} eltávolítása."
Section "Uninstall"
 RMDir /r "$SMPROGRAMS\${company}"

 delete $INSTDIR\uninstaller.exe

 delete "$SMPROGRAMS\roolnet Start"
 
 delete $INSTDIR\vrt.exe
 delete $INSTDIR\vrtsblib.dll
 delete $INSTDIR\libpq.dll
 delete $INSTDIR\qsqlpsql.dll
 delete $INSTDIR\qt-mt331.dll
 delete $INSTDIR\odbc.dll
 delete $INSTDIR\lpsolve55.dll
 delete $INSTDIR\vrtlibdevice.dll
 delete $INSTDIR\vrtlibglp58hw.dll
 delete $INSTDIR\vrtlibglp58mcs.dll
 delete $INSTDIR\vrtlibite.dll
 delete $INSTDIR\vrtlibserial.dll
 delete $INSTDIR\vrtlibsocket.dll
 delete $INSTDIR\vrtlibstmcs.dll
 
 delete "$INSTDIR\${prodname}.lnk"

 RMDir $INSTDIR
 RMDir "$PROGRAMFILES\${company}"

 delete "$DESKTOP\${prodname}.lnk"
 
SectionEnd ; end the section Uninstall
Személyes eszközök