Files
elog/elog.nsi
T
ritt bd7ff5eeba Point to index_d.html
SVN revision: 2001
2008-01-21 20:17:13 +00:00

256 lines
7.6 KiB
NSIS
Executable File

; elog.nsi
;
; This script will install the elog system
;
; The name of the installer
;--------------------------------
;Include Modern UI
!include "MUI.nsh"
;--------------------------------
;General
Name "ELOG"
; The file to write
OutFile "elog${VERSION}.exe"
; Overwrite setting
SetOverwrite on
; The default installation directory
InstallDir $PROGRAMFILES\ELOG
; Registry key to check for directory (so if you install again, it will
; overwrite the old one automatically)
InstallDirRegKey HKLM SOFTWARE\ELOG "Install_Dir"
; The text to prompt the user to enter a directory
ComponentText "This will install the ELOG electronic logbook server on your computer. Select which optional things you want installed."
; The text to prompt the user to enter a directory
DirText "Choose a directory to install in to:"
;--------------------------------
;Pages
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "COPYING"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
;--------------------------------
;Languages
!insertmacro MUI_LANGUAGE "English"
;--------------------------------
;Installer Sections
!define MUI_ABORTWARNING
;----------------------------------------------
; Main system
Section "ELOG system (required)" SecSystem
; root directory
SetOutPath $INSTDIR
File COPYING
File README
; stop service to replace elogd.exe
ExecWait 'net stop "ELOG server"'
ExecWait 'net stop elogd'
Sleep 2000
File nt\release\elogd.exe
File nt\release\elog.exe
File nt\release\elconv.exe
; doc directory
SetOutPath $INSTDIR\doc
File doc\*.*
; script directory
SetOutPath $INSTDIR\scripts
File /r /x .svn /x fckeditor.zip scripts\*.*
; resources directory
SetOutPath $INSTDIR\resources
File resources\eloghelp_english.html
; src directory
SetOutPath $INSTDIR\src
File src\*.c
File \mxml\mxml.c
File \mxml\mxml.h
File \mxml\strlcpy.c
File \mxml\strlcpy.h
; config file
SetOutPath $INSTDIR
IfFileExists $INSTDIR\elogd.cfg 0 cfgNotExist
MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to overwrite your existing elogd.cfg?" IDNO cfgNotOverwrite
cfgNotExist:
File elogd.cfg ; overwrite file
cfgNotOverwrite:
; themes
SetOutPath $INSTDIR\themes\default
IfFileExists $INSTDIR\themes\default\default.css 0 themesNotExist
MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to overwrite your existing theme files?" IDNO themesNotOverwrite
themesNotExist:
File themes\default\*.css
File themes\default\*.png
File themes\default\*.ico
File themes\default\*.png
SetOutPath $INSTDIR\themes\default\icons
File themes\default\icons\*.*
themesNotOverwrite:
; demo logbook
IfFileExists $INSTDIR\logbooks\demo\011108a.log 0 logbNotExist
MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to overwrite your existing demo logbook?" IDNO logbNotOverwrite
logbNotExist:
SetOutPath $INSTDIR\logbooks\demo
File logbooks\demo\*
logbNotOverwrite:
SetOutPath $INSTDIR
; Write the installation path into the registry
WriteRegStr HKLM SOFTWARE\ELOG "Install_Dir" "$INSTDIR"
; Write the uninstall keys for Windows
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ELOG" "DisplayName" "ELOG electronic logbook (remove only)"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ELOG" "UninstallString" '"$INSTDIR\uninst_elog.exe"'
WriteUninstaller "uninst_elog.exe"
SectionEnd
; optional section
Section "Multi-language support" SecLang
SetOutPath $INSTDIR\resources
File resources\*.*
SectionEnd
; optional section
Section "Start Menu Shortcuts" SecStart
CreateDirectory "$SMPROGRAMS\ELOG"
CreateDirectory "$SMPROGRAMS\ELOG\ELOG Server"
CreateShortCut "$SMPROGRAMS\ELOG\ELOG Server\Start ELOG server manually.lnk" "$INSTDIR\elogd.exe" "$INSTDIR\elogd.exe" "$INSTDIR\themes\default\favicon.ico"
CreateShortCut "$SMPROGRAMS\ELOG\ELOG Server\Register ELOG server service.lnk" "$INSTDIR\elogd.exe" "$INSTDIR\elogd.exe -install" "$INSTDIR\themes\default\favicon.ico"
CreateShortCut "$SMPROGRAMS\ELOG\ELOG Server\Unregister ELOG server service.lnk" "$INSTDIR\elogd.exe" "$INSTDIR\elogd.exe -remove" "$INSTDIR\themes\default\favicon.ico"
Delete "$SMPROGRAMS\ELOG\Demo Logbook (requires running server).lnk"
WriteINIStr "$SMPROGRAMS\ELOG\Demo Logbook (requires running server).url" \
"InternetShortcut" "URL" "http://localhost:8080/demo/"
CreateShortCut "$SMPROGRAMS\ELOG\ELOG Documentation.lnk" "$INSTDIR\doc\index_d.html"
CreateShortCut "$SMPROGRAMS\ELOG\Uninstall ELOG.lnk" "$INSTDIR\uninst_elog.exe" "" "$INSTDIR\uninst_elog.exe" 0
SectionEnd
; optional section
Section "Register ELOG Server Service" SecService
; WriteRegExpandStr HKLM SYSTEM\CurrentControlSet\Services\elogd ImagePath '"$INSTDIR\elogd.exe" -D -c "$INSTDIR\elogd.cfg"'
ExecWait "$INSTDIR\elogd.exe -install"
SectionEnd
; display readme file
Function .onInstSuccess
MessageBox MB_YESNO|MB_ICONQUESTION \
"Setup has completed. View readme file now?" \
IDNO NoReadme
ExecShell open '$INSTDIR\doc\index_d.html'
NoReadme:
FunctionEnd
; uninstall stuff
UninstallText "This will uninstall ELOG."
; special uninstall section.
Section "Uninstall"
; remove service
ExecWait "$INSTDIR\elogd.exe -remove"
; remove registry keys
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ELOG"
DeleteRegKey HKLM SOFTWARE\ELOG
; remove files
Delete $INSTDIR\COPYING
Delete $INSTDIR\README
Delete $INSTDIR\elog.exe
Delete $INSTDIR\elogd.exe
Delete $INSTDIR\elconv.exe
Delete $INSTDIR\elogd.cfg
Delete $INSTDIR\eloghelp_*.html
Delete $INSTDIR\eloglang.*
Delete $INSTDIR\doc\*
RMDir $INSTDIR\doc
Delete $INSTDIR\scripts\*
RMDir $INSTDIR\scripts
Delete $INSTDIR\resources\*
RMDir $INSTDIR\resources
Delete $INSTDIR\src\*
RMDir $INSTDIR\src
Delete $INSTDIR\themes\default\icons\*.*
RMDir $INSTDIR\themes\default\icons
Delete $INSTDIR\themes\default\*.*
RMDir $INSTDIR\themes\default
RMDir $INSTDIR\themes
Delete $INSTDIR\logbooks\demo\*.*
RMDir $INSTDIR\logbooks\demo
RMDir $INSTDIR\logbooks
; MUST REMOVE UNINSTALLER, too
Delete $INSTDIR\uninst_elog.exe
; remove shortcuts, if any.
Delete "$SMPROGRAMS\ELOG\ELOG Server\*.*"
RMDir "$SMPROGRAMS\ELOG\ELOG Server"
Delete "$SMPROGRAMS\ELOG\*.*"
RMDir "$SMPROGRAMS\ELOG"
; remove directories used.
RMDir "$INSTDIR"
; if $INSTDIR was removed, skip these next ones
IfFileExists $INSTDIR 0 Removed
MessageBox MB_YESNO|MB_ICONQUESTION \
"Remove all files in your ELOG directory? (If you have anything\
you created that you want to keep, click No)" IDNO Removed
Delete $INSTDIR\*.* ; this would be skipped if the user hits no
RMDir /r $INSTDIR
IfFileExists $INSTDIR 0 Removed
MessageBox MB_OK|MB_ICONEXCLAMATION \
"Note: $INSTDIR could not be removed."
Removed:
SectionEnd
;--------------------------------
;Descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SecSystem} "Installs ELOG system, documentation, source code and an example logbook"
!insertmacro MUI_DESCRIPTION_TEXT ${SecLang} "Installs support for different languages which can be switched during runtime"
!insertmacro MUI_DESCRIPTION_TEXT ${SecStart} "Installs start menu shortcuts for ELOG"
!insertmacro MUI_DESCRIPTION_TEXT ${SecService} "Installs ELOG server as a Windows Service, so that it gets started automatically when Windows boots"
!insertmacro MUI_FUNCTION_DESCRIPTION_END
; eof