X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=win%2Finspircd.nsi;h=a0432eae57f705d8420da6f0aa5232929a4c611e;hb=2b38cad97751c7e9f82f3fa9ef516cae4be9102b;hp=fc4a54b23ef32acff80c447bad8262e0f701cfc5;hpb=c757f23b697fb861df2017893099bbb1f39ea9b1;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/win/inspircd.nsi b/win/inspircd.nsi index fc4a54b23..a0432eae5 100644 --- a/win/inspircd.nsi +++ b/win/inspircd.nsi @@ -1,4 +1,22 @@ -; Script generated by the HM NIS Edit Script Wizard. +; * +------------------------------------+ +; * | Inspire Internet Relay Chat Daemon | +; * +------------------------------------+ +; * +; * InspIRCd: (C) 2002-2007 InspIRCd Development Team +; * See: http://www.inspircd.org/wiki/index.php/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" @@ -8,6 +26,8 @@ !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 @@ -16,23 +36,22 @@ SetCompressor bzip2 ; MUI Settings !define MUI_ABORTWARNING -!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\arrow2-install.ico" -!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\arrow2-uninstall.ico" +!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 -; 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 @@ -53,13 +72,75 @@ 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 - SetOutPath "$INSTDIR\bin" + Call IsDotNetInstalled + SetOutPath "$INSTDIR" SetOverwrite ifnewer - File "..\bin\debug\InspGUI.exe" - File "..\bin\debug\bin\inspircd.exe" + 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" SectionEnd Section "Config Files" SEC02 @@ -68,7 +149,7 @@ Section "Config Files" SEC02 File "..\conf\inspircd.helpop-full.example" File "..\conf\inspircd.helpop.example" File "..\conf\inspircd.filter.example" - File "..\conf\inspircd.conf.example" + File "..\docs\inspircd.conf.example" File "..\conf\inspircd.censor.example" File "..\conf\inspircd.rules.example" File "..\conf\inspircd.quotes.example" @@ -76,92 +157,40 @@ SectionEnd Section "Command Handlers" SEC03 SetOutPath "$INSTDIR\lib" - File "..\bin\debug\lib\cmd_zline.so" - File "..\bin\debug\lib\cmd_whois.so" - File "..\bin\debug\lib\cmd_who.so" - File "..\bin\debug\lib\cmd_wallops.so" - File "..\bin\debug\lib\cmd_version.so" - File "..\bin\debug\lib\cmd_users.so" - File "..\bin\debug\lib\cmd_userhost.so" - File "..\bin\debug\lib\cmd_user.so" - File "..\bin\debug\lib\cmd_unloadmodule.so" - File "..\bin\debug\lib\cmd_trace.so" - File "..\bin\debug\lib\cmd_topic.so" - File "..\bin\debug\lib\cmd_time.so" - File "..\bin\debug\lib\cmd_summon.so" - File "..\bin\debug\lib\cmd_stats.so" - File "..\bin\debug\lib\cmd_squit.so" - File "..\bin\debug\lib\cmd_server.so" - File "..\bin\debug\lib\cmd_rules.so" - File "..\bin\debug\lib\cmd_restart.so" - File "..\bin\debug\lib\cmd_rehash.so" - File "..\bin\debug\lib\cmd_quit.so" - File "..\bin\debug\lib\cmd_qline.so" - File "..\bin\debug\lib\cmd_privmsg.so" - File "..\bin\debug\lib\cmd_pong.so" - File "..\bin\debug\lib\cmd_ping.so" - File "..\bin\debug\lib\cmd_pass.so" - File "..\bin\debug\lib\cmd_part.so" - File "..\bin\debug\lib\cmd_oper.so" - File "..\bin\debug\lib\cmd_notice.so" - File "..\bin\debug\lib\cmd_nick.so" - File "..\bin\debug\lib\cmd_names.so" - File "..\bin\debug\lib\cmd_motd.so" - File "..\bin\debug\lib\cmd_modules.so" - File "..\bin\debug\lib\cmd_mode.so" - File "..\bin\debug\lib\cmd_map.so" - File "..\bin\debug\lib\cmd_lusers.so" - File "..\bin\debug\lib\cmd_loadmodule.so" - File "..\bin\debug\lib\cmd_list.so" - File "..\bin\debug\lib\cmd_links.so" - File "..\bin\debug\lib\cmd_kline.so" - File "..\bin\debug\lib\cmd_kill.so" - File "..\bin\debug\lib\cmd_kick.so" - File "..\bin\debug\lib\cmd_join.so" - File "..\bin\debug\lib\cmd_ison.so" - File "..\bin\debug\lib\cmd_invite.so" - File "..\bin\debug\lib\cmd_info.so" - File "..\bin\debug\lib\cmd_gline.so" - File "..\bin\debug\lib\cmd_eline.so" - File "..\bin\debug\lib\cmd_die.so" - File "..\bin\debug\lib\cmd_connect.so" - File "..\bin\debug\lib\cmd_commands.so" - File "..\bin\debug\lib\cmd_clearcache.so" - File "..\bin\debug\lib\cmd_away.so" - File "..\bin\debug\lib\cmd_admin.so" + File "..\bin\${BUILD}\lib\cmd_*.so" SectionEnd Section "Modules" SEC04 SetOutPath "$INSTDIR\modules" - File "..\bin\debug\modules\m_showwhois.so" - File "..\bin\debug\modules\m_sha256.so" - File "..\bin\debug\modules\m_setname.so" - File "..\bin\debug\modules\m_setident.so" - File "..\bin\debug\modules\m_sethost.so" - File "..\bin\debug\modules\m_services_account.so" - File "..\bin\debug\modules\m_saquit.so" - File "..\bin\debug\modules\m_sapart.so" - File "..\bin\debug\modules\m_sanick.so" - File "..\bin\debug\modules\m_samode.so" - File "..\bin\debug\modules\m_sajoin.so" - File "..\bin\debug\modules\m_randquote.so" - File "..\bin\debug\modules\m_operchans.so" - File "..\bin\debug\modules\m_noctcp.so" - File "..\bin\debug\modules\m_md5.so" - File "..\bin\debug\modules\m_hideoper.so" - File "..\bin\debug\modules\m_hidechans.so" - File "..\bin\debug\modules\m_globops.so" - File "..\bin\debug\modules\m_globalload.so" - File "..\bin\debug\modules\m_devoice.so" - File "..\bin\debug\modules\m_conn_umodes.so" - File "..\bin\debug\modules\m_conn_lusers.so" - File "..\bin\debug\modules\m_cloaking.so" - File "..\bin\debug\modules\m_chghost.so" - File "..\bin\debug\modules\m_blockcolor.so" - File "..\bin\debug\modules\m_banexception.so" - File "..\bin\debug\modules\m_alltime.so" - File "..\bin\debug\modules\m_alias.so" - File "..\bin\debug\modules\m_spanningtree.so" + 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 "d:\temp\m_ssl_gnutls.so" + File "d:\temp\m_sslinfo.so" + File "d:\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 "d:\temp\m_filter_pcre.so" SectionEnd Section -AdditionalIcons @@ -180,14 +209,17 @@ Section -Post 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 ${SEC02} "Default Config Files" - !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Command Modules" - !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "Optional Modules" + !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 @@ -196,6 +228,12 @@ Function un.onUninstSuccess 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 @@ -204,88 +242,8 @@ FunctionEnd Section Uninstall Delete "$INSTDIR\${PRODUCT_NAME}.url" Delete "$INSTDIR\uninst.exe" - Delete "$INSTDIR\modules\m_spanningtree.so" - Delete "$INSTDIR\modules\m_alias.so" - Delete "$INSTDIR\modules\m_alltime.so" - Delete "$INSTDIR\modules\m_banexception.so" - Delete "$INSTDIR\modules\m_blockcolor.so" - Delete "$INSTDIR\modules\m_chghost.so" - Delete "$INSTDIR\modules\m_cloaking.so" - Delete "$INSTDIR\modules\m_conn_lusers.so" - Delete "$INSTDIR\modules\m_conn_umodes.so" - Delete "$INSTDIR\modules\m_devoice.so" - Delete "$INSTDIR\modules\m_globalload.so" - Delete "$INSTDIR\modules\m_globops.so" - Delete "$INSTDIR\modules\m_hidechans.so" - Delete "$INSTDIR\modules\m_hideoper.so" - Delete "$INSTDIR\modules\m_md5.so" - Delete "$INSTDIR\modules\m_noctcp.so" - Delete "$INSTDIR\modules\m_operchans.so" - Delete "$INSTDIR\modules\m_randquote.so" - Delete "$INSTDIR\modules\m_sajoin.so" - Delete "$INSTDIR\modules\m_samode.so" - Delete "$INSTDIR\modules\m_sanick.so" - Delete "$INSTDIR\modules\m_sapart.so" - Delete "$INSTDIR\modules\m_saquit.so" - Delete "$INSTDIR\modules\m_services_account.so" - Delete "$INSTDIR\modules\m_sethost.so" - Delete "$INSTDIR\modules\m_setident.so" - Delete "$INSTDIR\modules\m_setname.so" - Delete "$INSTDIR\modules\m_sha256.so" - Delete "$INSTDIR\modules\m_showwhois.so" - Delete "$INSTDIR\lib\cmd_admin.so" - Delete "$INSTDIR\lib\cmd_away.so" - Delete "$INSTDIR\lib\cmd_clearcache.so" - Delete "$INSTDIR\lib\cmd_commands.so" - Delete "$INSTDIR\lib\cmd_connect.so" - Delete "$INSTDIR\lib\cmd_die.so" - Delete "$INSTDIR\lib\cmd_eline.so" - Delete "$INSTDIR\lib\cmd_gline.so" - Delete "$INSTDIR\lib\cmd_info.so" - Delete "$INSTDIR\lib\cmd_invite.so" - Delete "$INSTDIR\lib\cmd_ison.so" - Delete "$INSTDIR\lib\cmd_join.so" - Delete "$INSTDIR\lib\cmd_kick.so" - Delete "$INSTDIR\lib\cmd_kill.so" - Delete "$INSTDIR\lib\cmd_kline.so" - Delete "$INSTDIR\lib\cmd_links.so" - Delete "$INSTDIR\lib\cmd_list.so" - Delete "$INSTDIR\lib\cmd_loadmodule.so" - Delete "$INSTDIR\lib\cmd_lusers.so" - Delete "$INSTDIR\lib\cmd_map.so" - Delete "$INSTDIR\lib\cmd_mode.so" - Delete "$INSTDIR\lib\cmd_modules.so" - Delete "$INSTDIR\lib\cmd_motd.so" - Delete "$INSTDIR\lib\cmd_names.so" - Delete "$INSTDIR\lib\cmd_nick.so" - Delete "$INSTDIR\lib\cmd_notice.so" - Delete "$INSTDIR\lib\cmd_oper.so" - Delete "$INSTDIR\lib\cmd_part.so" - Delete "$INSTDIR\lib\cmd_pass.so" - Delete "$INSTDIR\lib\cmd_ping.so" - Delete "$INSTDIR\lib\cmd_pong.so" - Delete "$INSTDIR\lib\cmd_privmsg.so" - Delete "$INSTDIR\lib\cmd_qline.so" - Delete "$INSTDIR\lib\cmd_quit.so" - Delete "$INSTDIR\lib\cmd_rehash.so" - Delete "$INSTDIR\lib\cmd_restart.so" - Delete "$INSTDIR\lib\cmd_rules.so" - Delete "$INSTDIR\lib\cmd_server.so" - Delete "$INSTDIR\lib\cmd_squit.so" - Delete "$INSTDIR\lib\cmd_stats.so" - Delete "$INSTDIR\lib\cmd_summon.so" - Delete "$INSTDIR\lib\cmd_time.so" - Delete "$INSTDIR\lib\cmd_topic.so" - Delete "$INSTDIR\lib\cmd_trace.so" - Delete "$INSTDIR\lib\cmd_unloadmodule.so" - Delete "$INSTDIR\lib\cmd_user.so" - Delete "$INSTDIR\lib\cmd_userhost.so" - Delete "$INSTDIR\lib\cmd_users.so" - Delete "$INSTDIR\lib\cmd_version.so" - Delete "$INSTDIR\lib\cmd_wallops.so" - Delete "$INSTDIR\lib\cmd_who.so" - Delete "$INSTDIR\lib\cmd_whois.so" - Delete "$INSTDIR\lib\cmd_zline.so" + 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" @@ -295,10 +253,10 @@ Section Uninstall 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\Website.lnk" + Delete "$SMPROGRAMS\InspIRCd\InspIRCd Website.lnk" Delete "$SMPROGRAMS\InspIRCd\InspIRCd.lnk" RMDir "$SMPROGRAMS\InspIRCd" @@ -306,6 +264,7 @@ Section Uninstall RMDir "$INSTDIR\lib" RMDir "$INSTDIR\conf" RMDir "$INSTDIR\bin" + RMDir "$INSTDIR" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"