1
0
Fork 0

Implement uninstalling with gui choosing of deleting databases

- switch away from deprecated MUI macros
  - Add a uninstaller welcome screen with checkbox to remove the database files
This commit is contained in:
Wilfried Goesgens 2017-05-24 14:54:40 +02:00
parent b5fcd15214
commit e90e5cadf4
1 changed files with 37 additions and 16 deletions

View File

@ -14,7 +14,8 @@
!include "UAC.nsh"
!include nsDialogs.nsh
!include WinMessages.nsh
!include InstallOptions.nsh
!include MUI2.nsh
;--------------------------------
; get commandline parameters
!include FileFunc.nsh
@ -160,8 +161,23 @@ ${EndSwitch}
SetShellVarContext all
FunctionEnd
Var mycheckbox ; You could just store the HWND in $1 etc if you don't want this extra variable
!include Sections.nsh
Function un.ModifyUnWelcome
; SendMessage $HWNDPARENT ${WM_SETTEXT} 0 "STR:Titlebar - UnWelcome BLARG"
${NSD_CreateCheckbox} 120u -20u 50% 20u "Delete databases with uninstallation?"
Pop $mycheckbox
; ${NSD_Check} $mycheckbox ; don't check it by default
FunctionEnd
Function un.LeaveUnWelcome
${NSD_GetState} $mycheckbox $0
${If} $0 <> 0
StrCpy $PURGE_DB "1"
${EndIf}
FunctionEnd
!include Sections.nsh
;--- Component support macros: ---
; The code for the add/remove functionality is from:
@ -333,6 +349,10 @@ Var AR_RegFlags
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!define MUI_WELCOMEPAGE_TEXT 'Please choose whether we should also remove the database files along with the programm files.'
!define MUI_PAGE_CUSTOMFUNCTION_SHOW un.ModifyUnWelcome
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE un.LeaveUnWelcome
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
@ -400,7 +420,6 @@ Var AR_RegFlags
;Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA)
ReserveFile "NSIS.InstallOptions.ini"
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
;--------------------------------
;Installer Sections
@ -458,7 +477,7 @@ Section "-Core installation"
!insertmacro MUI_STARTMENU_WRITE_END
!insertmacro AddToRegistry "DATADIR" "${DATADIR}"
!insertmacro AddToRegistry "DATADIR" "$DATADIR"
!insertmacro _ReplaceInFile "$INSTDIR\etc\arangodb3\arangod.conf" "storage-engine = auto" "storage-engine = $STORAGE_ENGINE"
!insertmacro _ReplaceInFile "$INSTDIR\etc\arangodb3\arangod.conf" "directory = @CPACK_ROOTDIR@var/lib/arangodb3" "directory = $DATADIR"
@ -513,14 +532,14 @@ continueUI:
displayAgain:
!insertmacro MUI_HEADER_TEXT "Install Options" "Choose options for installing @CPACK_NSIS_PACKAGE_NAME@"
!insertmacro MUI_INSTALLOPTIONS_READ $INSTALL_DESKTOP "NSIS.InstallOptions.ini" "Field 5" "State"
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini"
!insertmacro MUI_INSTALLOPTIONS_READ $PASSWORD "NSIS.InstallOptions.ini" "Field 6" "State"
!insertmacro MUI_INSTALLOPTIONS_READ $PASSWORD_AGAIN "NSIS.InstallOptions.ini" "Field 7" "State"
!insertmacro MUI_INSTALLOPTIONS_READ $DO_NOT_ADD_TO_PATH "NSIS.InstallOptions.ini" "Field 2" "State"
!insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_ALL_USERS "NSIS.InstallOptions.ini" "Field 3" "State"
!insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_CURRENT_USER "NSIS.InstallOptions.ini" "Field 4" "State"
!insertmacro MUI_INSTALLOPTIONS_READ $STORAGE_ENGINE "NSIS.InstallOptions.ini" "Field 11" "State"
!insertmacro INSTALLOPTIONS_READ $INSTALL_DESKTOP "NSIS.InstallOptions.ini" "Field 5" "State"
!insertmacro INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini"
!insertmacro INSTALLOPTIONS_READ $PASSWORD "NSIS.InstallOptions.ini" "Field 6" "State"
!insertmacro INSTALLOPTIONS_READ $PASSWORD_AGAIN "NSIS.InstallOptions.ini" "Field 7" "State"
!insertmacro INSTALLOPTIONS_READ $DO_NOT_ADD_TO_PATH "NSIS.InstallOptions.ini" "Field 2" "State"
!insertmacro INSTALLOPTIONS_READ $ADD_TO_PATH_ALL_USERS "NSIS.InstallOptions.ini" "Field 3" "State"
!insertmacro INSTALLOPTIONS_READ $ADD_TO_PATH_CURRENT_USER "NSIS.InstallOptions.ini" "Field 4" "State"
!insertmacro INSTALLOPTIONS_READ $STORAGE_ENGINE "NSIS.InstallOptions.ini" "Field 11" "State"
StrCmp $PASSWORD $PASSWORD_AGAIN +3 0
MessageBox MB_OK|MB_ICONSTOP "Passwords don't match, try again"
@ -562,9 +581,9 @@ Function default_installation_directory
Call disableBackButton
${EndIf}
${IfNot} ${UAC_IsInnerInstance}
!insertmacro MUI_INSTALLOPTIONS_READ $R2 "NSIS.InstallOptions.ini" "Field 2" "State"
!insertmacro MUI_INSTALLOPTIONS_READ $R3 "NSIS.InstallOptions.ini" "Field 3" "State"
!insertmacro MUI_INSTALLOPTIONS_READ $R4 "NSIS.InstallOptions.ini" "Field 4" "State"
!insertmacro INSTALLOPTIONS_READ $R2 "NSIS.InstallOptions.ini" "Field 2" "State"
!insertmacro INSTALLOPTIONS_READ $R3 "NSIS.InstallOptions.ini" "Field 3" "State"
!insertmacro INSTALLOPTIONS_READ $R4 "NSIS.InstallOptions.ini" "Field 4" "State"
${If} $R2 == '1'
StrCpy $TRI_INSTALL_TYPE 'Service'
@ -836,11 +855,13 @@ Section "Uninstall"
Delete "$INSTDIR\etc\arangodb3\arangod.conf.old"
StrCmp $PURGE_DB "0" dontDeleteDatabases
DetailPrint 'Removing database files from $DATADIR: '
RMDir /r "$DATADIR"
RMDir /r "$INSTDIR\var\lib\arangodb3-apps"
RMDir "$INSTDIR\var\lib"
RMDir /r "$INSTDIR\var\log\arangodb3"
dontDeleteDatabases:
DetailPrint 'Removing programm files:'
;Remove files we installed.
;Keep the list of directories here in sync with the File commands above.
@CPACK_NSIS_DELETE_FILES@
@ -1065,7 +1086,7 @@ inst:
StrCpy $INSTDIR "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 noOptionsPage
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini"
!insertmacro INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini"
noOptionsPage:
FunctionEnd