Telepítőprogram készítése Windows rendszerekre a futtatókörnyezethez és az adatbázishoz
A RoolWikiBÓL
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ó:
- roolnet Start futtatókörnyezet telepítő szkript
- PostgreSQL adatbáziskezelő + roolnet adatbázis telepítése
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
