summaryrefslogtreecommitdiff
path: root/src/win32
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2004-05-17 20:36:41 +0000
committerAlexey Shchepin <alexey@process-one.net>2004-05-17 20:36:41 +0000
commit78a673f526055c3146a01df4725aab7baa5fbb83 (patch)
treedaf5813b7f348ed8f6508b1ed6a5eba2d6b63636 /src/win32
parent* src/web/ejabberd_web_admin.erl: Updated (diff)
* src/mod_muc/mod_muc.erl: Added access rules for using serveice
and creating rooms (thanks to Sergei Golovan) * src/win32/ejabberd.nsi: Updated (thanks to Sergei Golovan) * src/win32/CheckUserH.ini: Likewise * src/translate.erl: Search translations in priv_dir instead of lib_dir (thanks to Sergei Golovan) * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) * src/ejabberd.cfg.example: Updated (thanks to Sergei Golovan) * src/**/Makefile.in: Updated (thanks to Sergei Golovan) * src/**/Makefile.win32: Likewise 2004-05-16 Alexey Shchepin <alexey@sevcom.net> * src/web/ejabberd_web_admin.erl: Updated SVN Revision: 235
Diffstat (limited to 'src/win32')
-rw-r--r--src/win32/CheckUserH.ini20
-rw-r--r--src/win32/ejabberd.nsi143
2 files changed, 119 insertions, 44 deletions
diff --git a/src/win32/CheckUserH.ini b/src/win32/CheckUserH.ini
new file mode 100644
index 00000000..63b2589b
--- /dev/null
+++ b/src/win32/CheckUserH.ini
@@ -0,0 +1,20 @@
+[Settings]
+NumFields=2
+
+[Field 1]
+Type=label
+Left=0
+Right=-1
+Top=10
+Bottom=50
+Text="Administrator privileges are recommended for Ejabberd install.\r\n\r\nOtherwise installing Ejabberd as a service will be impossible."
+
+[Field 2]
+Type=checkbox
+Left=0
+Right=-1
+Top=50
+Bottom=-10
+Text="Proceed with install"
+State=0
+Flags=NOTIFY
diff --git a/src/win32/ejabberd.nsi b/src/win32/ejabberd.nsi
index 62db6766..e0b23c97 100644
--- a/src/win32/ejabberd.nsi
+++ b/src/win32/ejabberd.nsi
@@ -14,6 +14,8 @@
!define PRODUCT "Ejabberd"
Name ${PRODUCT}
OutFile "${OUTFILEDIR}\${PRODUCT}-${VERSION}.exe"
+ ShowInstDetails show
+ ShowUninstDetails show
!define MUI_ICON "ejabberd.ico"
!define MUI_UNICON "ejabberd.ico"
@@ -26,7 +28,11 @@
;--------------------------------
;Reserve Files
- ReserveFile "CheckUser.ini"
+ !ifdef HACKED_INSTALLOPTIONS
+ ReserveFile "CheckUserH.ini"
+ !else
+ ReserveFile "CheckUser.ini"
+ !endif
ReserveFile "CheckReqs.ini"
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
@@ -41,6 +47,53 @@
Var REQUIRED_ERLANG_VERSION
Var ERLSRV
+;----------------------------------------------------------
+;.onInit uses UserInfo plugin, so it's as high as possible
+
+Function .onInit
+
+ StrCpy $REQUIRED_ERLANG_VERSION "5.3"
+
+ ;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"
+ !else
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT "CheckUser.ini"
+ !endif
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT "CheckReqs.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
@@ -85,9 +138,10 @@ SectionIn 1 RO
SetOutPath "$INSTDIR"
File /r "${TESTDIR}\doc"
File /r "${TESTDIR}\ebin"
- File /r "${TESTDIR}\msgs"
File /r "${TESTDIR}\priv"
File /r "${TESTDIR}\win32"
+ File "${TESTDIR}\libeay32.dll"
+ File "${TESTDIR}\ssleay32.dll"
SetOverwrite off
File "${TESTDIR}\ejabberd.cfg"
SetOverwrite on
@@ -125,8 +179,15 @@ SectionIn 1 RO
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 reboot -workdir "$INSTDIR" \
-args "-s ejabberd -pa ebin -pa win32/$ERLANG_VERSION \
@@ -136,11 +197,12 @@ SectionIn 1 RO
-sasl sasl_error_logger {file,\\\"log/sasl.log\\\"} \
-mnesia dir \\\"spool\\\"" -d'
Pop $0
- nsExec::ExecToLog '"$ERLSRV" disable ejabberd'
+ ;nsExec::ExecToLog '"$ERLSRV" disable ejabberd'
+ ;Pop $0
skipservice:
-;Create uninstaller
+ ;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
StrCpy $1 "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}"
@@ -201,17 +263,23 @@ Section "Uninstall"
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\msgs"
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"
@@ -247,53 +315,25 @@ Section "Uninstall"
SectionEnd
-Function .onInit
-
- StrCpy $REQUIRED_ERLANG_VERSION "5.3"
-
- ;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
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "CheckUser.ini"
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "CheckReqs.ini"
-
-FunctionEnd
-
LangString TEXT_CU_TITLE ${LANG_ENGLISH} "Checking User Privileges"
LangString TEXT_CU_SUBTITLE ${LANG_ENGLISH} "Checking user privileged required to install Ejabberd."
Function CheckUser
- ClearErrors
- UserInfo::GetName
- IfErrors Abort
- Pop $0
- UserInfo::GetAccountType
- Pop $1
- StrCmp $1 "Admin" Abort User
-
- Abort:
- StrCpy $ADMIN 1
- Abort
-
- User:
- StrCpy $ADMIN 0
+ StrCmp $ADMIN 1 0 showpage
+ Abort
+ showpage:
!insertmacro MUI_HEADER_TEXT $(TEXT_CU_TITLE) $(TEXT_CU_SUBTITLE)
- !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "CheckUser.ini"
+ !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_SHOW
@@ -301,6 +341,21 @@ FunctionEnd
Function 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:
+ !endif
+
FunctionEnd
LangString TEXT_CR_TITLE ${LANG_ENGLISH} "Unsatisfied Requirements"