2007-05-22 18:21:25 +00:00
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; SET THE BUILD TO BE PACKAGED HERE ;;;;
!define BUILD " release "
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2007-05-21 00:00:02 +00:00
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME " InspIRCd "
!define PRODUCT_VERSION " 1.1 "
!define PRODUCT_PUBLISHER " InspIRCd Development Team "
!define PRODUCT_WEB_SITE " http://www.inspircd.org/ "
!define PRODUCT_DIR_REGKEY " Software\Microsoft\Windows\CurrentVersion\App Paths\inspircd.exe "
!define PRODUCT_UNINST_KEY " Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME} "
!define PRODUCT_UNINST_ROOT_KEY " HKLM "
2007-05-21 21:23:49 +00:00
!define DOT_MAJOR " 2 "
!define DOT_MINOR " 0 "
2007-05-21 00:00:02 +00:00
SetCompressor bzip2
; MUI 1.67 compatible ------
!include " MUI.nsh "
; MUI Settings
!define MUI_ABORTWARNING
2007-05-26 13:54:17 +00:00
!define MUI_ICON " inspircd.ico "
!define MUI_UNICON " inspircd.ico "
2007-05-21 00:00:02 +00:00
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!define MUI_LICENSEPAGE_CHECKBOX
2007-05-21 00:01:32 +00:00
!insertmacro MUI_PAGE_LICENSE " ..\docs\COPYING "
2007-05-21 00:00:02 +00:00
; 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 \InspGUI.exe "
!define MUI_FINISHPAGE_RUN_PARAMETERS " --nofork "
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE " English "
; Reserve files
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; MUI end ------
Name " ${PRODUCT_NAME} ${PRODUCT_VERSION} "
OutFile " Setup.exe "
InstallDir " $PROGRAMFILES \InspIRCd "
InstallDirRegKey HKLM " ${PRODUCT_DIR_REGKEY} " " "
ShowInstDetails show
ShowUnInstDetails show
2007-05-21 21:23:49 +00:00
Function IsDotNetInstalled
StrCpy $0 " 0 "
StrCpy $1 " SOFTWARE\Microsoft\.NETFramework " ;registry entry to look in.
StrCpy $2 0
StartEnum :
;Enumerate the versions installed.
EnumRegKey $3 HKLM " $1 \policy " $2
;If we don't find any versions installed, it's not here.
StrCmp $3 " " noDotNet notEmpty
;We found something.
notEmpty :
;Find out if the RegKey starts with 'v'.
;If it doesn't, goto the next key.
StrCpy $4 $3 1 0
StrCmp $4 " v " + 1 goNext
StrCpy $4 $3 1 1
;It starts with 'v'. Now check to see how the installed major version
;relates to our required major version.
;If it's equal check the minor version, if it's greater,
;we found a good RegKey.
IntCmp $4 ${DOT_MAJOR} + 1 goNext yesDotNetReg
;Check the minor version. If it's equal or greater to our requested
;version then we're good.
StrCpy $4 $3 1 3
IntCmp $4 ${DOT_MINOR} yesDotNetReg goNext yesDotNetReg
goNext :
;Go to the next RegKey.
IntOp $2 $2 + 1
goto StartEnum
yesDotNetReg :
;Now that we've found a good RegKey, let's make sure it's actually
;installed by getting the install path and checking to see if the
;mscorlib.dll exists.
EnumRegValue $2 HKLM " $1 \policy\$3 " 0
;$2 should equal whatever comes after the major and minor versions
;(ie, v1.1.4322)
StrCmp $2 " " noDotNet
ReadRegStr $4 HKLM $1 " InstallRoot "
;Hopefully the install root isn't empty.
StrCmp $4 " " noDotNet
;build the actuall directory path to mscorlib.dll.
StrCpy $4 " $4 $3 .$2\mscorlib.dll "
IfFileExists $4 yesDotNet noDotNet
noDotNet :
MessageBox MB_OK " You do not have have v${DOT_MAJOR}.${DOT_MINOR} or greater of the .NET framework installed. This is required for the InspIRCd Monitor, however you can still launch the IRCd manually. "
yesDotNet :
;Everything checks out. Go on with the rest of the installation.
FunctionEnd
2007-05-21 00:00:02 +00:00
Section " Binary Executable " SEC01
2007-05-21 21:23:49 +00:00
Call IsDotNetInstalled
2007-05-21 00:12:54 +00:00
SetOutPath " $INSTDIR "
2007-05-21 00:00:02 +00:00
SetOverwrite ifnewer
2007-05-22 18:21:25 +00:00
File " ..\bin\${BUILD}\InspGUI.exe "
2007-05-21 15:52:42 +00:00
CreateDirectory " $SMPROGRAMS \InspIRCd "
CreateShortCut " $SMPROGRAMS \InspIRCd\InspIRCd.lnk " " $INSTDIR \InspGUI.exe "
2007-05-21 00:12:54 +00:00
SetOutPath " $INSTDIR \bin "
SetOverwrite ifnewer
2007-05-22 18:21:25 +00:00
File " ..\bin\${BUILD}\bin\inspircd.exe "
2007-05-21 00:00:02 +00:00
SectionEnd
Section " Config Files " SEC02
SetOutPath " $INSTDIR \conf "
2007-05-21 00:04:09 +00:00
File " ..\conf\inspircd.motd.example "
File " ..\conf\inspircd.helpop-full.example "
File " ..\conf\inspircd.helpop.example "
File " ..\conf\inspircd.filter.example "
2007-05-21 00:04:53 +00:00
File " ..\docs\inspircd.conf.example "
2007-05-21 00:04:09 +00:00
File " ..\conf\inspircd.censor.example "
File " ..\conf\inspircd.rules.example "
File " ..\conf\inspircd.quotes.example "
2007-05-21 00:00:02 +00:00
SectionEnd
Section " Command Handlers " SEC03
SetOutPath " $INSTDIR \lib "
2007-05-22 18:21:25 +00:00
File " ..\bin\${BUILD}\lib\cmd_*.so "
2007-05-21 00:00:02 +00:00
SectionEnd
Section " Modules " SEC04
SetOutPath " $INSTDIR \modules "
2007-05-22 18:21:25 +00:00
File " ..\bin\${BUILD}\modules\*.so "
2007-05-21 00:00:02 +00:00
SectionEnd
Section - AdditionalIcons
SetOutPath $INSTDIR
WriteIniStr " $INSTDIR \${PRODUCT_NAME}.url " " InternetShortcut " " URL " " ${PRODUCT_WEB_SITE} "
2007-05-21 00:04:09 +00:00
CreateShortCut " $SMPROGRAMS \InspIRCd\InspIRCd Website.lnk " " $INSTDIR \${PRODUCT_NAME}.url "
2007-05-21 00:00:02 +00:00
CreateShortCut " $SMPROGRAMS \InspIRCd\Uninstall.lnk " " $INSTDIR \uninst.exe "
SectionEnd
Section - Post
WriteUninstaller " $INSTDIR \uninst.exe "
WriteRegStr HKLM " ${PRODUCT_DIR_REGKEY} " " " " $INSTDIR \bin\inspircd.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\inspircd.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} "
2007-05-26 13:50:52 +00:00
MessageBox MB_ICONINFORMATION | MB_OK " InspIRCd was successfully installed. Remember to edit your configuration file in $INSTDIR\conf! "
2007-05-21 00:00:02 +00:00
SectionEnd
; Section descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SEC01} " Actual Executable "
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02} " Default Config Files "
!insertmacro MUI_DESCRIPTION_TEXT ${SEC03} " Command Modules "
!insertmacro MUI_DESCRIPTION_TEXT ${SEC04} " Optional Modules "
!insertmacro MUI_FUNCTION_DESCRIPTION_END
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION | MB_OK " $(^Name) was successfully removed from your computer. "
FunctionEnd
2007-05-26 13:58:28 +00:00
Function .onInit
SectionSetFlags ${SEC01} 17
SectionSetFlags ${SEC03} 17
FunctionEnd
2007-05-21 00:00:02 +00:00
Function un.onInit
MessageBox MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2 " Are you sure you want to completely remove $(^Name) and all of its components? " IDYES + 2
Abort
FunctionEnd
Section Uninstall
Delete " $INSTDIR \${PRODUCT_NAME}.url "
Delete " $INSTDIR \uninst.exe "
2007-05-21 20:00:52 +00:00
Delete " $INSTDIR \modules\m_*.so "
Delete " $INSTDIR \lib\cmd_*.so "
2007-05-21 00:00:02 +00:00
Delete " $INSTDIR \conf\inspircd.quotes.example "
Delete " $INSTDIR \conf\inspircd.rules.example "
Delete " $INSTDIR \conf\inspircd.censor.example "
Delete " $INSTDIR \conf\inspircd.conf.example "
Delete " $INSTDIR \conf\inspircd.filter.example "
Delete " $INSTDIR \conf\inspircd.helpop.example "
Delete " $INSTDIR \conf\inspircd.helpop-full.example "
Delete " $INSTDIR \conf\inspircd.motd.example "
Delete " $INSTDIR \bin\inspircd.exe "
Delete " $INSTDIR \InspGUI.exe "
Delete " $SMPROGRAMS \InspIRCd\Uninstall.lnk "
2007-05-21 20:00:52 +00:00
Delete " $SMPROGRAMS \InspIRCd\InspIRCd Website.lnk "
2007-05-21 00:00:02 +00:00
Delete " $SMPROGRAMS \InspIRCd\InspIRCd.lnk "
RMDir " $SMPROGRAMS \InspIRCd "
RMDir " $INSTDIR \modules "
RMDir " $INSTDIR \lib "
RMDir " $INSTDIR \conf "
RMDir " $INSTDIR \bin "
2007-05-21 20:00:52 +00:00
RMDir " $INSTDIR "
2007-05-21 00:00:02 +00:00
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} " ${PRODUCT_UNINST_KEY} "
DeleteRegKey HKLM " ${PRODUCT_DIR_REGKEY} "
SetAutoClose true
SectionEnd