]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - win/inspircd.nsi
vs2010 projects too.
[user/henk/code/inspircd.git] / win / inspircd.nsi
index 54ff9ede2028736f580be74f52714f6f45ea274a..8d394d7edccc2acf7f647512ae4fb457b482d60e 100644 (file)
-; *       +------------------------------------+\r
-; *       | Inspire Internet Relay Chat Daemon |\r
-; *       +------------------------------------+\r
-; *\r
-; *  InspIRCd: (C) 2002-2007 InspIRCd Development Team\r
-; * See: http://www.inspircd.org/wiki/index.php/Credits\r
-; *\r
-; * This program is free but copyrighted software; see\r
-; *            the file COPYING for details.\r
-; *\r
-; * ---------------------------------------------------\r
-\r
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
-\r
-                       ;;;; SET THE BUILD TO BE PACKAGED HERE ;;;;\r
-\r
-!define BUILD "release"\r
-\r
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
-\r
-; HM NIS Edit Wizard helper defines\r
-!define PRODUCT_NAME "InspIRCd"\r
-!define PRODUCT_VERSION "1.1"\r
-!define PRODUCT_PUBLISHER "InspIRCd Development Team"\r
-!define PRODUCT_WEB_SITE "http://www.inspircd.org/"\r
-!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\inspircd.exe"\r
-!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"\r
-!define PRODUCT_UNINST_ROOT_KEY "HKLM"\r
-!define DOT_MAJOR "2"\r
-!define DOT_MINOR "0"\r
-\r
-SetCompressor bzip2\r
-\r
-; MUI 1.67 compatible ------\r
-!include "MUI.nsh"\r
-\r
-; MUI Settings\r
-!define MUI_ABORTWARNING\r
-!define MUI_ICON "inspircd.ico"\r
-!define MUI_UNICON "inspircd.ico"\r
-\r
-; Welcome page\r
-!insertmacro MUI_PAGE_WELCOME\r
-; License page\r
-!define MUI_LICENSEPAGE_CHECKBOX\r
-!insertmacro MUI_PAGE_LICENSE "..\docs\COPYING"\r
-; directory page\r
-Page directory\r
-; Components page\r
-!insertmacro MUI_PAGE_COMPONENTS\r
-; Instfiles page\r
-!insertmacro MUI_PAGE_INSTFILES\r
-; Finish page\r
-!define MUI_FINISHPAGE_RUN "$INSTDIR\InspGUI.exe"\r
-!insertmacro MUI_PAGE_FINISH\r
-\r
-; Uninstaller pages\r
-!insertmacro MUI_UNPAGE_INSTFILES\r
-\r
-; Language files\r
-!insertmacro MUI_LANGUAGE "English"\r
-\r
-; Reserve files\r
-!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS\r
-\r
-; MUI end ------\r
-\r
-Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"\r
-OutFile "Setup.exe"\r
-InstallDir "$PROGRAMFILES\InspIRCd"\r
-InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""\r
-ShowInstDetails show\r
-ShowUnInstDetails show\r
-\r
-Function IsDotNetInstalled\r
\r
-  StrCpy $0 "0"\r
-  StrCpy $1 "SOFTWARE\Microsoft\.NETFramework" ;registry entry to look in.\r
-  StrCpy $2 0\r
\r
-  StartEnum:\r
-    ;Enumerate the versions installed.\r
-    EnumRegKey $3 HKLM "$1\policy" $2\r
-    \r
-    ;If we don't find any versions installed, it's not here.\r
-    StrCmp $3 "" noDotNet notEmpty\r
-    \r
-    ;We found something.\r
-    notEmpty:\r
-      ;Find out if the RegKey starts with 'v'.  \r
-      ;If it doesn't, goto the next key.\r
-      StrCpy $4 $3 1 0\r
-      StrCmp $4 "v" +1 goNext\r
-      StrCpy $4 $3 1 1\r
-      \r
-      ;It starts with 'v'.  Now check to see how the installed major version\r
-      ;relates to our required major version.\r
-      ;If it's equal check the minor version, if it's greater, \r
-      ;we found a good RegKey.\r
-      IntCmp $4 ${DOT_MAJOR} +1 goNext yesDotNetReg\r
-      ;Check the minor version.  If it's equal or greater to our requested \r
-      ;version then we're good.\r
-      StrCpy $4 $3 1 3\r
-      IntCmp $4 ${DOT_MINOR} yesDotNetReg goNext yesDotNetReg\r
\r
-    goNext:\r
-      ;Go to the next RegKey.\r
-      IntOp $2 $2 + 1\r
-      goto StartEnum\r
\r
-  yesDotNetReg:\r
-    ;Now that we've found a good RegKey, let's make sure it's actually\r
-    ;installed by getting the install path and checking to see if the \r
-    ;mscorlib.dll exists.\r
-    EnumRegValue $2 HKLM "$1\policy\$3" 0\r
-    ;$2 should equal whatever comes after the major and minor versions \r
-    ;(ie, v1.1.4322)\r
-    StrCmp $2 "" noDotNet\r
-    ReadRegStr $4 HKLM $1 "InstallRoot"\r
-    ;Hopefully the install root isn't empty.\r
-    StrCmp $4 "" noDotNet\r
-    ;build the actuall directory path to mscorlib.dll.\r
-    StrCpy $4 "$4$3.$2\mscorlib.dll"\r
-    IfFileExists $4 yesDotNet noDotNet\r
\r
-  noDotNet:\r
-    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."\r
\r
-  yesDotNet:\r
-    ;Everything checks out.  Go on with the rest of the installation.\r
-    \r
-FunctionEnd\r
-\r
-Section "Binary Executable" SEC01\r
-  Call IsDotNetInstalled\r
-  SetOutPath "$INSTDIR"\r
-  SetOverwrite ifnewer\r
-  File "..\bin\${BUILD}\InspGUI.exe"\r
-  CreateDirectory "$SMPROGRAMS\InspIRCd"\r
-  CreateShortCut "$SMPROGRAMS\InspIRCd\InspIRCd.lnk" "$INSTDIR\InspGUI.exe"\r
-  SetOutPath "$INSTDIR\bin"\r
-  SetOverwrite ifnewer\r
-  File "..\bin\${BUILD}\bin\inspircd.exe"\r
-SectionEnd\r
-\r
-Section "Config Files" SEC02\r
-  SetOutPath "$INSTDIR\conf"\r
-  File "..\conf\inspircd.motd.example"\r
-  File "..\conf\inspircd.helpop-full.example"\r
-  File "..\conf\inspircd.helpop.example"\r
-  File "..\conf\inspircd.filter.example"\r
-  File "..\docs\inspircd.conf.example"\r
-  File "..\conf\inspircd.censor.example"\r
-  File "..\conf\inspircd.rules.example"\r
-  File "..\conf\inspircd.quotes.example"\r
-SectionEnd\r
-\r
-Section "Command Handlers" SEC03\r
-  SetOutPath "$INSTDIR\lib"\r
-  File "..\bin\${BUILD}\lib\cmd_*.so"\r
-SectionEnd\r
-\r
-Section "Modules" SEC04\r
-  SetOutPath "$INSTDIR\modules"\r
-  File "..\bin\${BUILD}\modules\m_*.so"\r
-SectionEnd\r
-\r
-Section  "SSL Modules" SEC05\r
-  SetOutPath "$INSTDIR\bin"\r
-  SetOverwrite ifnewer\r
-  File "..\bin\${BUILD}\bin\*.dll"\r
-  SetOutPath "$INSTDIR\modules"\r
-  File "d:\temp\*.so"\r
-  SetOutPath "$INSTDIR\conf"\r
-  SetOverwrite off\r
-  File "key.pem"\r
-  File "cert.pem"\r
-SectionEnd\r
-\r
-Section -AdditionalIcons\r
-  SetOutPath $INSTDIR\r
-  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"\r
-  CreateShortCut "$SMPROGRAMS\InspIRCd\InspIRCd Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"\r
-  CreateShortCut "$SMPROGRAMS\InspIRCd\Uninstall.lnk" "$INSTDIR\uninst.exe"\r
-SectionEnd\r
-\r
-Section -Post\r
-  WriteUninstaller "$INSTDIR\uninst.exe"\r
-  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\bin\inspircd.exe"\r
-  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"\r
-  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"\r
-  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bin\inspircd.exe"\r
-  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"\r
-  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"\r
-  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"\r
-  MessageBox MB_ICONINFORMATION|MB_OK "InspIRCd was successfully installed. Remember to edit your configuration file in $INSTDIR\conf!"\r
-SectionEnd\r
-\r
-; Section descriptions\r
-!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN\r
-  !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Actual executable"\r
-  !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Command modules"\r
-  !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "Default configuration files"\r
-  !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "Optional non-SSL modules"\r
-  !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} "SSL modules and GnuTLS DLL libraries"\r
-!insertmacro MUI_FUNCTION_DESCRIPTION_END\r
-\r
-\r
-Function un.onUninstSuccess\r
-  HideWindow\r
-  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer."\r
-FunctionEnd\r
-\r
-Function .onInit\r
-  SectionSetFlags ${SEC01} 17\r
-  SectionSetFlags ${SEC03} 17\r
-  StrCpy $INSTDIR "$PROGRAMFILES\InspIRCd"\r
-FunctionEnd\r
-\r
-Function un.onInit\r
-  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2\r
-  Abort\r
-FunctionEnd\r
-\r
-Section Uninstall\r
-  Delete "$INSTDIR\${PRODUCT_NAME}.url"\r
-  Delete "$INSTDIR\uninst.exe"\r
-  Delete "$INSTDIR\modules\m_*.so"\r
-  Delete "$INSTDIR\lib\cmd_*.so"\r
-  Delete "$INSTDIR\conf\inspircd.quotes.example"\r
-  Delete "$INSTDIR\conf\inspircd.rules.example"\r
-  Delete "$INSTDIR\conf\inspircd.censor.example"\r
-  Delete "$INSTDIR\conf\inspircd.conf.example"\r
-  Delete "$INSTDIR\conf\inspircd.filter.example"\r
-  Delete "$INSTDIR\conf\inspircd.helpop.example"\r
-  Delete "$INSTDIR\conf\inspircd.helpop-full.example"\r
-  Delete "$INSTDIR\conf\inspircd.motd.example"\r
-  Delete "$INSTDIR\bin\inspircd.exe"\r
-  Delete "$INSTDIR\bin\*.dll"\r
-  Delete "$INSTDIR\InspGUI.exe"\r
-  Delete "$SMPROGRAMS\InspIRCd\Uninstall.lnk"\r
-  Delete "$SMPROGRAMS\InspIRCd\InspIRCd Website.lnk"\r
-  Delete "$SMPROGRAMS\InspIRCd\InspIRCd.lnk"\r
-\r
-  RMDir "$SMPROGRAMS\InspIRCd"\r
-  RMDir "$INSTDIR\modules"\r
-  RMDir "$INSTDIR\lib"\r
-  RMDir "$INSTDIR\conf"\r
-  RMDir "$INSTDIR\bin"\r
-  RMDir "$INSTDIR"\r
-\r
-  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"\r
-  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"\r
-  SetAutoClose true\r
-SectionEnd\r
+; *       +------------------------------------+
+; *       | Inspire Internet Relay Chat Daemon |
+; *       +------------------------------------+
+; *
+; *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
+; * See: http://wiki.inspircd.org/Credits
+; *
+; * This program is free but copyrighted software; see
+; *            the file COPYING for details.
+; *
+; * ---------------------------------------------------
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+                       ;;;; SET THE BUILD TO BE PACKAGED HERE ;;;;
+
+!define BUILD "release"
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; HM NIS Edit Wizard helper defines
+!define PRODUCT_NAME "InspIRCd"
+!define PRODUCT_VERSION "1.2"
+!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"
+!define DOT_MAJOR "2"
+!define DOT_MINOR "0"
+
+SetCompressor bzip2
+
+; MUI 1.67 compatible ------
+!include "MUI.nsh"
+
+; MUI Settings
+!define MUI_ABORTWARNING
+!define MUI_ICON "inspircd.ico"
+!define MUI_UNICON "inspircd.ico"
+
+; Welcome page
+!insertmacro MUI_PAGE_WELCOME
+; License page
+!define MUI_LICENSEPAGE_CHECKBOX
+!insertmacro MUI_PAGE_LICENSE "..\docs\COPYING"
+; directory page
+Page directory
+; Components page
+!insertmacro MUI_PAGE_COMPONENTS
+; Instfiles page
+!insertmacro MUI_PAGE_INSTFILES
+; Finish page
+!define MUI_FINISHPAGE_RUN "$INSTDIR\InspGUI.exe"
+!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
+
+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
+
+Section "Binary Executable" SEC01
+  Call IsDotNetInstalled
+  SetOutPath "$TEMP"
+  SetOverwrite ifnewer
+  File "vcredist_x86.exe"
+  ExecWait "$TEMP\vcredist_x86.exe"
+  SetOutPath "$INSTDIR"
+  SetOverwrite ifnewer
+  File "..\bin\${BUILD}\InspGUI.exe"
+  CreateDirectory "$SMPROGRAMS\InspIRCd"
+  CreateShortCut "$SMPROGRAMS\InspIRCd\InspIRCd.lnk" "$INSTDIR\InspGUI.exe"
+  SetOutPath "$INSTDIR\bin"
+  SetOverwrite ifnewer
+  File "..\bin\${BUILD}\bin\inspircd.exe"
+  DetailPrint "Installing InspIRCd service..."
+  nsExec::Exec /TIMEOUT=30000 '"$INSTDIR\bin\inspircd.exe" --installservice'
+SectionEnd
+
+Section "Config Files" SEC02
+  SetOutPath "$INSTDIR\conf"
+  File "..\conf\inspircd.motd.example"
+  File "..\conf\inspircd.helpop-full.example"
+  File "..\conf\inspircd.helpop.example"
+  File "..\conf\inspircd.filter.example"
+  File "..\conf\inspircd.conf.example"
+  File "..\conf\opers.conf.example"
+  File "..\conf\modules.conf.example"
+  File "..\conf\links.conf.example"
+  File "..\conf\inspircd.censor.example"
+  File "..\conf\inspircd.rules.example"
+  File "..\conf\inspircd.quotes.example"
+  SetOutPath "$INSTDIR\conf\test"
+  File "..\conf\test\test.conf"
+SectionEnd
+
+Section "Command Handlers" SEC03
+  SetOutPath "$INSTDIR\lib"
+  File "..\bin\${BUILD}\lib\cmd_*.so"
+SectionEnd
+
+Section "Modules" SEC04
+  SetOutPath "$INSTDIR\modules"
+  File "..\bin\${BUILD}\modules\m_*.so"
+SectionEnd
+
+Section  "SSL Modules" SEC05
+  SetOutPath "$INSTDIR\bin"
+  SetOverwrite ifnewer
+  File "..\bin\${BUILD}\bin\libgcrypt-11.dll"
+  File "..\bin\${BUILD}\bin\libgnutls-13.dll"
+  File "..\bin\${BUILD}\bin\libgnutls-extra-13.dll"
+  File "..\bin\${BUILD}\bin\libgnutls-openssl-13.dll"
+  File "..\bin\${BUILD}\bin\libgpg-error-0.dll"
+  File "..\bin\${BUILD}\bin\libopencdk-8.dll"
+  File "..\bin\${BUILD}\bin\libtasn1-3.dll"
+  SetOutPath "$INSTDIR\modules"
+  File "c:\temp\m_ssl_gnutls.so"
+  File "c:\temp\m_sslinfo.so"
+  File "c:\temp\m_ssl_oper_cert.so"
+  SetOutPath "$INSTDIR\conf"
+  SetOverwrite off
+  File "key.pem"
+  File "cert.pem"
+SectionEnd
+
+Section  "Regexp Modules" SEC06
+  SetOutPath "$INSTDIR\bin"
+  SetOverwrite ifnewer
+  File "..\bin\${BUILD}\bin\pcre.dll"
+  SetOutPath "$INSTDIR\modules"
+  File "c:\temp\m_filter_pcre.so"
+SectionEnd
+
+Section -AdditionalIcons
+  SetOutPath $INSTDIR
+  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
+  CreateShortCut "$SMPROGRAMS\InspIRCd\InspIRCd Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
+  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}"
+  MessageBox MB_ICONINFORMATION|MB_OK "InspIRCd was successfully installed. Remember to edit your configuration file in $INSTDIR\conf!"
+SectionEnd
+
+; Section descriptions
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Actual executable"
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Command modules"
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "Default configuration files"
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "Optional non-SSL modules"
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} "SSL modules and GnuTLS DLL libraries"
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} "Regular expression module and PCRE DLL library"
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+
+Function un.onUninstSuccess
+  HideWindow
+  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer."
+FunctionEnd
+
+Function .onInit
+  SectionSetFlags ${SEC01} 17
+  SectionSetFlags ${SEC03} 17
+  StrCpy $INSTDIR "$PROGRAMFILES\InspIRCd"
+FunctionEnd
+
+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
+  DetailPrint "Uninstalling InspIRCd service..."
+  nsExec::Exec /TIMEOUT=30000 '"$INSTDIR\bin\inspircd.exe" --removeservice'
+  Delete "$INSTDIR\${PRODUCT_NAME}.url"
+  Delete "$INSTDIR\uninst.exe"
+  Delete "$INSTDIR\modules\m_*.so"
+  Delete "$INSTDIR\lib\cmd_*.so"
+  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\bin\*.dll"
+  Delete "$INSTDIR\InspGUI.exe"
+  Delete "$SMPROGRAMS\InspIRCd\Uninstall.lnk"
+  Delete "$SMPROGRAMS\InspIRCd\InspIRCd Website.lnk"
+  Delete "$SMPROGRAMS\InspIRCd\InspIRCd.lnk"
+
+  RMDir "$SMPROGRAMS\InspIRCd"
+  RMDir "$INSTDIR\modules"
+  RMDir "$INSTDIR\lib"
+  RMDir "$INSTDIR\conf"
+  RMDir "$INSTDIR\bin"
+  RMDir "$INSTDIR"
+
+  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
+  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
+  SetAutoClose true
+SectionEnd