diff options
| author | Ryan Zink <ryanzink@gmail.com> | 2015-10-20 09:53:02 -0500 |
|---|---|---|
| committer | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2015-11-20 15:23:09 +0100 |
| commit | a3687fb814d3d2f9774bb3bbbedf480e1db0b92e (patch) | |
| tree | 14feb32793c283ef5b8db70329b5017eb21dc2e2 /packaging | |
| parent | 4dd361c460d3ac913ca71eefeeafe3475b43a161 (diff) | |
| download | rabbitmq-server-git-a3687fb814d3d2f9774bb3bbbedf480e1db0b92e.tar.gz | |
packaging/windows-exe: Allow silent install
While here, do not remove `ERLANG_HOME` on a reinstall/upgrade process.
Fixes #264.
Diffstat (limited to 'packaging')
| -rw-r--r-- | packaging/windows-exe/rabbitmq_nsi.in | 66 |
1 files changed, 63 insertions, 3 deletions
diff --git a/packaging/windows-exe/rabbitmq_nsi.in b/packaging/windows-exe/rabbitmq_nsi.in index 168f3da612..2a6190b704 100644 --- a/packaging/windows-exe/rabbitmq_nsi.in +++ b/packaging/windows-exe/rabbitmq_nsi.in @@ -10,6 +10,57 @@ !define uninstall "Software\Microsoft\Windows\CurrentVersion\Uninstall\RabbitMQ" ;-------------------------------- +; Third-party functions +; StrContains +; This function does a case sensitive searches for an occurrence of a substring in a string. +; It returns the substring if it is found. +; Otherwise it returns null(""). +; Written by kenglish_hi +; Adapted from StrReplace written by dandaman32 + + +Var STR_HAYSTACK +Var STR_NEEDLE +Var STR_CONTAINS_VAR_1 +Var STR_CONTAINS_VAR_2 +Var STR_CONTAINS_VAR_3 +Var STR_CONTAINS_VAR_4 +Var STR_RETURN_VAR + +Function un.StrContains + Exch $STR_NEEDLE + Exch 1 + Exch $STR_HAYSTACK + ; Uncomment to debug + ;MessageBox MB_OK 'STR_NEEDLE = $STR_NEEDLE STR_HAYSTACK = $STR_HAYSTACK ' + StrCpy $STR_RETURN_VAR "" + StrCpy $STR_CONTAINS_VAR_1 -1 + StrLen $STR_CONTAINS_VAR_2 $STR_NEEDLE + StrLen $STR_CONTAINS_VAR_4 $STR_HAYSTACK + loop: + IntOp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_1 + 1 + StrCpy $STR_CONTAINS_VAR_3 $STR_HAYSTACK $STR_CONTAINS_VAR_2 $STR_CONTAINS_VAR_1 + StrCmp $STR_CONTAINS_VAR_3 $STR_NEEDLE found + StrCmp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_4 done + Goto loop + found: + StrCpy $STR_RETURN_VAR $STR_NEEDLE + Goto done + done: + Pop $STR_NEEDLE ;Prevent "invalid opcode" errors and keep the + Exch $STR_RETURN_VAR +FunctionEnd + +!macro _un.StrContainsConstructor OUT NEEDLE HAYSTACK + Push `${HAYSTACK}` + Push `${NEEDLE}` + Call un.StrContains + Pop `${OUT}` +!macroend + +!define un.StrContains '!insertmacro "_un.StrContainsConstructor"' + +;-------------------------------- ; The name of the installer Name "RabbitMQ Server %%VERSION%%" @@ -158,6 +209,12 @@ LangString DESC_RabbitStartMenu ${LANG_ENGLISH} "Add some useful links to the st Section "Uninstall" + ; Check if reinstall will occur immediately - don't remove ERLANG_HOME + Var /GLOBAL REINSTALLFLAG + Var /GLOBAL ISREINSTALL + ${GetParameters} $REINSTALLFLAG + ${un.StrContains} $ISREINSTALL "reinstall" $REINSTALLFLAG + ; Remove registry keys DeleteRegKey HKLM ${uninstall} DeleteRegKey HKLM "SOFTWARE\VMware, Inc.\RabbitMQ Server" @@ -176,8 +233,11 @@ Section "Uninstall" ; Remove start menu items RMDir /r "$SMPROGRAMS\RabbitMQ Server" - DeleteRegValue ${env_hklm} ERLANG_HOME - SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 + ; If reinstalling immediately (e.g. program update) don't remove ERLANG_HOME environment variable + ${If} $ISREINSTALL == "" + DeleteRegValue ${env_hklm} ERLANG_HOME + SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 + ${EndIf} SectionEnd @@ -200,7 +260,7 @@ Function .onInit ReadRegStr $0 HKLM ${uninstall} "UninstallString" ${If} $0 != "" - MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "RabbitMQ is already installed. $\n$\nClick 'OK' to remove the previous version or 'Cancel' to cancel this installation." IDOK rununinstall IDCANCEL norun + MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "RabbitMQ is already installed. $\n$\nClick 'OK' to remove the previous version or 'Cancel' to cancel this installation." /SD IDOK IDOK rununinstall IDCANCEL norun norun: Abort |
