⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ejabberd.nsi

📁 ejabberd-0.7.5 分布式Jabber服务器
💻 NSI
📖 第 1 页 / 共 2 页
字号:
; NSIS Modern User Interface; Ejabberd installation script;--------------------------------;Include Modern UI    !include "MUI.nsh"    !include "ejabberd.nsh" ; All release specific parameters come from this;--------------------------------;General    ;Name and file    !define PRODUCT "Ejabberd"    Name ${PRODUCT}    OutFile "${OUTFILEDIR}\${PRODUCT}-${VERSION}.exe"    ShowInstDetails show    ShowUninstDetails show    !define MUI_ICON "ejabberd.ico"    !define MUI_UNICON "ejabberd.ico";--------------------------------;Configuration    SetCompressor lzma;--------------------------------;Reserve Files      !ifdef HACKED_INSTALLOPTIONS	ReserveFile "CheckUserH.ini"	ReserveFile "CheckReqs1H.ini"    !else	ReserveFile "CheckUser.ini"	ReserveFile "CheckReqs1.ini"    !endif    ReserveFile "CheckReqs.ini"    ReserveFile "CheckService.ini"    !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS;--------------------------------;Variables    Var MUI_TEMP    Var STARTMENU_FOLDER    Var ADMIN    Var ENABLE_SERVICE    Var ERLANG_PATH    Var ERLANG_VERSION    Var REQUIRED_ERLANG_VERSION    Var OPENSSL_PATH    Var OPENSSL_VERSION    Var REQUIRED_OPENSSL_VERSION    Var ERLSRV;----------------------------------------------------------;.onInit uses UserInfo plugin, so it's as high as possibleFunction .onInit    StrCpy $REQUIRED_ERLANG_VERSION "5.3.6.2"    StrCpy $REQUIRED_OPENSSL_VERSION "0.9.7c"    ;Default installation folder    StrCpy $INSTDIR "$PROGRAMFILES\${PRODUCT}"    ;Get installation folder from registry if available    ClearErrors    ReadRegStr $0 HKLM "SOFTWARE\${PRODUCT}" ""    IfErrors 0 copydir    ReadRegStr $0 HKCU "SOFTWARE\${PRODUCT}" ""    IfErrors skipdir    copydir:	StrCpy $INSTDIR "$0"    skipdir:    ;Extract InstallOptions INI files    !ifdef HACKED_INSTALLOPTIONS	!insertmacro MUI_INSTALLOPTIONS_EXTRACT "CheckUserH.ini"	!insertmacro MUI_INSTALLOPTIONS_EXTRACT "CheckReqs1H.ini"    !else	!insertmacro MUI_INSTALLOPTIONS_EXTRACT "CheckUser.ini"	!insertmacro MUI_INSTALLOPTIONS_EXTRACT "CheckReqs1.ini"    !endif    !insertmacro MUI_INSTALLOPTIONS_EXTRACT "CheckReqs.ini"    !insertmacro MUI_INSTALLOPTIONS_EXTRACT "CheckService.ini"      ClearErrors    UserInfo::GetName    IfErrors admin    Pop $0    UserInfo::GetAccountType    Pop $1    StrCmp $1 "Admin" admin user    admin:	StrCpy $ADMIN 1	Goto skip    user:	StrCpy $ADMIN 0    skip:FunctionEnd;--------------------------------;Interface Settings    !define MUI_ABORTWARNING;--------------------------------;Pages    !insertmacro MUI_PAGE_WELCOME    Page custom CheckUser LeaveCheckUser    Page custom CheckService LeaveCheckService    !insertmacro MUI_PAGE_LICENSE "..\..\COPYING"    Page custom CheckReqs LeaveCheckReqs    Page custom CheckReqs1 LeaveCheckReqs1    ;!insertmacro MUI_PAGE_COMPONENTS    !insertmacro MUI_PAGE_DIRECTORY    !insertmacro MUI_PAGE_STARTMENU ${PRODUCT} $STARTMENU_FOLDER    !insertmacro MUI_PAGE_INSTFILES      !insertmacro MUI_UNPAGE_WELCOME    !insertmacro MUI_UNPAGE_CONFIRM    !insertmacro MUI_UNPAGE_INSTFILES;--------------------------------;Languages     !insertmacro MUI_LANGUAGE "English"  ;--------------------------------;Language Strings;Description    LangString DESC_SecEjabberd ${LANG_ENGLISH} "Erlang jabber server.";--------------------------------;Installer SectionsSection "Ejabberd" SecEjabberdSectionIn 1 RO    SetOutPath "$INSTDIR"    File /r "${TESTDIR}\doc"    File /r "${TESTDIR}\ebin"    File /r "${TESTDIR}\priv"    File /r "${TESTDIR}\win32"    File "${TESTDIR}\libeay32.dll"    File "${TESTDIR}\ssleay32.dll"    File /oname=ejabberd.cfg.example "${TESTDIR}\ejabberd.cfg"    SetOverwrite off    File "${TESTDIR}\ejabberd.cfg"    SetOverwrite on    ;File /r "${TESTDIR}\src"    CreateDirectory "$INSTDIR\log"  ;The startmenu stuff    !insertmacro MUI_STARTMENU_WRITE_BEGIN ${PRODUCT}    ;Create shortcuts    StrCpy $0 "$SMPROGRAMS\$STARTMENU_FOLDER"    CreateDirectory "$0"    CreateShortCut "$0\Start Ejabberd.lnk" "$ERLANG_PATH\bin\werl.exe" \	'-sname ejabberd -pa ebin \	-env EJABBERD_SO_PATH priv/lib -env EJABBERD_MSGS_PATH msgs \	-env EJABBERD_LOG_PATH log/ejabberd.log \	-s ejabberd -ejabberd config \"ejabberd.cfg\" -mnesia dir \"spool\" \	-sasl sasl_error_logger {file,\"log/sasl.log\"}' \	$INSTDIR\win32\ejabberd.ico    CreateShortCut "$0\Edit Config.lnk" "%SystemRoot%\system32\notepad.exe" \	"$INSTDIR\ejabberd.cfg"    CreateShortCut "$0\Read Docs.lnk" "$INSTDIR\doc\guide.html"    CreateShortCut "$0\Uninstall.lnk" "$INSTDIR\Uninstall.exe"      !insertmacro MUI_STARTMENU_WRITE_END;Create Windows service    StrCmp $ADMIN 1 0 skipservice    StrCpy $ERLSRV ""    Push $ERLANG_PATH    Push erlsrv.exe    GetFunctionAddress $0 FFCallback    Push $0    Call FindFiles    StrCmp $ERLSRV "" skipservice    nsExec::Exec '"$ERLSRV" list ejabberd'    Pop $0    StrCmp $0 "error" skipservice    StrCmp $0 "0" 0 installsrv    nsExec::ExecToLog '"$ERLSRV" remove ejabberd'    Pop $0    installsrv:    nsExec::ExecToLog '"$ERLSRV" add ejabberd -stopaction "init:stop()." \	-onfail restart -workdir "$INSTDIR" \	-args "-s ejabberd -pa ebin \	-ejabberd config \\\"ejabberd.cfg\\\" \	-env EJABBERD_SO_PATH priv/lib -env EJABBERD_MSGS_PATH msgs \	-env EJABBERD_LOG_PATH log/ejabberd.log \	-sasl sasl_error_logger {file,\\\"log/sasl.log\\\"} \	-mnesia dir \\\"spool\\\"" -d'    Pop $0    StrCmp $ENABLE_SERVICE 0 0 skipservice    nsExec::ExecToLog '"$ERLSRV" disable ejabberd'    Pop $0    skipservice:    ;Create uninstaller    WriteUninstaller "$INSTDIR\Uninstall.exe"    StrCpy $1 "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}"    StrCmp $ADMIN 1 admin2    WriteRegStr HKCU "Software\${PRODUCT}" "" "$INSTDIR"    WriteRegStr HKCU "$1" "DisplayName" "${PRODUCT} ${VERSION}"    WriteRegStr HKCU "$1" "UninstallString" "$INSTDIR\Uninstall.exe"    WriteRegDWORD HKCU "$1" "NoModify" 1    WriteRegDWORD HKCU "$1" "NoRepair" 1    Goto done2    admin2:    WriteRegStr HKLM "Software\${PRODUCT}" "" "$INSTDIR"    WriteRegStr HKLM "Software\${PRODUCT}" "Erlsrv" "$ERLSRV"    WriteRegStr HKLM "$1" "DisplayName" "${PRODUCT} ${VERSION}"    WriteRegStr HKLM "$1" "UninstallString" "$INSTDIR\Uninstall.exe"    WriteRegDWORD HKLM "$1" "NoModify" 1    WriteRegDWORD HKLM "$1" "NoRepair" 1    done2:SectionEnd ; SecEjabberdFunction FFCallback    Exch $0    StrCpy $ERLSRV $0    Pop $0    Push "stop"FunctionEnd;--------------------------------;Descriptions    !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN    !insertmacro MUI_DESCRIPTION_TEXT ${SecEjabberd} $(DESC_SecEjabberd)    !insertmacro MUI_FUNCTION_DESCRIPTION_END ;--------------------------------;Uninstaller SectionSection "Uninstall"    ClearErrors    UserInfo::GetName    IfErrors admin    Pop $0    UserInfo::GetAccountType    Pop $1    StrCmp $1 "Admin" admin    StrCpy $ADMIN 0    Goto skipservice        admin:	StrCpy $ADMIN 1	ReadRegStr $ERLSRV HKLM "Software\${PRODUCT}" "Erlsrv"	nsExec::Exec '"$ERLSRV" list ejabberd'	Pop $0	StrCmp $0 "error" skipservice	StrCmp $0 "0" 0 skipservice		nsExec::ExecToLog '"$ERLSRV" remove ejabberd'	Pop $0    skipservice:    RMDir /r "$INSTDIR\doc"    RMDir /r "$INSTDIR\ebin"    RMDir /r "$INSTDIR\priv"    RMDir /r "$INSTDIR\win32"    ;RMDir /r "$INSTDIR\src"    RMDir /r "$INSTDIR\log"    Delete "$INSTDIR\libeay32.dll"    Delete "$INSTDIR\ssleay32.dll"    Delete "$INSTDIR\Uninstall.exe"    RMDir "$INSTDIR"      !insertmacro MUI_STARTMENU_GETFOLDER ${PRODUCT} $MUI_TEMP        Delete "$SMPROGRAMS\$MUI_TEMP\Start Ejabberd.lnk"    Delete "$SMPROGRAMS\$MUI_TEMP\Edit Config.lnk"    Delete "$SMPROGRAMS\$MUI_TEMP\Read Docs.lnk"    Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"      ;Delete empty start menu parent diretories    StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"     startMenuDeleteLoop:	RMDir $MUI_TEMP	GetFullPathName $MUI_TEMP "$MUI_TEMP\.."    	IfErrors startMenuDeleteLoopDone  	StrCmp $MUI_TEMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop    startMenuDeleteLoopDone:    StrCpy $1 "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}"    StrCmp $ADMIN 1 admin1    DeleteRegKey HKCU "Software\${PRODUCT}"    DeleteRegKey HKCU $1    Goto done    admin1:    DeleteRegKey HKLM "Software\${PRODUCT}"    DeleteRegKey HKLM $1    done:SectionEndLangString TEXT_CU_TITLE ${LANG_ENGLISH} "Checking User Privileges"LangString TEXT_CU_SUBTITLE ${LANG_ENGLISH} "Checking user privileged required to install Ejabberd."Function CheckUser    StrCmp $ADMIN 1 0 showpage    Abort    showpage:	!insertmacro MUI_HEADER_TEXT $(TEXT_CU_TITLE) $(TEXT_CU_SUBTITLE)	!ifdef HACKED_INSTALLOPTIONS	    !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "CheckUserH.ini"	    !insertmacro MUI_INSTALLOPTIONS_READ $0 "CheckUserH.ini" "Field 2" "State"	    GetDlgItem $1 $HWNDPARENT 1	    EnableWindow $1 $0	!else	    !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "CheckUser.ini"	!endif		!insertmacro MUI_INSTALLOPTIONS_SHOWFunctionEndFunction LeaveCheckUser    !ifdef HACKED_INSTALLOPTIONS	!insertmacro MUI_INSTALLOPTIONS_READ $0 "CheckUserH.ini" "Settings" "State"	StrCmp $0 0 validate  ;Next button?	StrCmp $0 2 checkbox  ;checkbox?	Abort                 ;Return to the page	checkbox:	    !insertmacro MUI_INSTALLOPTIONS_READ $0 "CheckUserH.ini" "Field 2" "State"	    GetDlgItem $1 $HWNDPARENT 1	    EnableWindow $1 $0	    Abort	validate:    !endifFunctionEndLangString TEXT_CU_TITLE ${LANG_ENGLISH} "Configuring Ejabberd Service"LangString TEXT_CU_SUBTITLE ${LANG_ENGLISH} "Configuring Ejabberd Service."Function CheckService

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -