| # | |
| # Licensed to the Apache Software Foundation (ASF) under one | |
| # or more contributor license agreements. See the NOTICE file | |
| # distributed with this work for additional information | |
| # regarding copyright ownership. The ASF licenses this file | |
| # to you under the Apache License, Version 2.0 (the | |
| # "License"); you may not use this file except in compliance | |
| # with the License. You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, | |
| # software distributed under the License is distributed on an | |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| # KIND, either express or implied. See the License for the | |
| # specific language governing permissions and limitations | |
| # under the License. | |
| # | |
| # | |
| # Constants and variables | |
| # | |
| !define Application "Apache Directory Studio" | |
| !define Version "STUDIO_VERSION" | |
| !define BrandingVersion "BRANDING_VERSION" | |
| !define Icon "utils\studio-installer.ico" | |
| !define WelcomeImage "utils\welcome_studio.bmp" | |
| !define HeaderImage "utils\header_studio.bmp" | |
| !define OutFile "ApacheDirectoryStudio-win32-${Version}.exe" | |
| !define SourceFolder "release" | |
| !define INSTDIR_REG_ROOT "HKLM" | |
| !define INSTDIR_REG_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${Application}" | |
| # | |
| # Modules inclusions | |
| # | |
| # Modern UI module | |
| !include "MUI.nsh" | |
| # Uninstall log module | |
| !include AdvUninstLog.nsh | |
| # | |
| # Configuration | |
| # | |
| # Name of the application | |
| Name "${Application}" | |
| # Output installer file | |
| OutFile "${OutFile}" | |
| # Default install directory | |
| InstallDir "$PROGRAMFILES\${Application}" | |
| # Branding text | |
| BrandingText "${Application} - ${BrandingVersion}" | |
| # Activating XPStyle | |
| XPStyle on | |
| # Installer icon | |
| !define MUI_ICON "${Icon}" | |
| # Uninstaller icon | |
| !define MUI_UNICON "${Icon}" | |
| # Welcome image | |
| !define MUI_WELCOMEFINISHPAGE_BITMAP "${WelcomeImage}" | |
| # Activating header image | |
| !define MUI_HEADERIMAGE | |
| !define MUI_HEADERIMAGE_BITMAP "${HeaderImage}" | |
| # Activating small description for the components page | |
| !define MUI_COMPONENTSPAGE_SMALLDESC | |
| # Activating a confirmation when aborting the installation | |
| !define MUI_ABORTWARNING | |
| # Unattended uninstallation | |
| !insertmacro UNATTENDED_UNINSTALL | |
| # | |
| # Pages | |
| # | |
| # | |
| # Installer pages | |
| # | |
| # Welcome page | |
| !insertmacro MUI_PAGE_WELCOME | |
| # License page | |
| !insertmacro MUI_PAGE_LICENSE "release\LICENSE.txt" | |
| # Components page | |
| #!insertmacro MUI_PAGE_COMPONENTS | |
| # Directory page | |
| #!define MUI_DIRECTORYPAGE_VARIABLE $APPLICATION_HOME_DIR | |
| !insertmacro MUI_PAGE_DIRECTORY | |
| # Installation page | |
| !insertmacro MUI_PAGE_INSTFILES | |
| # Finish page | |
| !insertmacro MUI_PAGE_FINISH | |
| # | |
| # Uninstaller pages | |
| # | |
| # Confirmation page | |
| !insertmacro MUI_UNPAGE_CONFIRM | |
| # Uninstallation page | |
| !insertmacro MUI_UNPAGE_INSTFILES | |
| # | |
| # Languages (the first one is the default one) | |
| # | |
| !insertmacro MUI_LANGUAGE "English" | |
| !insertmacro MUI_LANGUAGE "French" | |
| !insertmacro MUI_LANGUAGE "German" | |
| # | |
| # Functions | |
| # | |
| # Internationalized strings | |
| LangString message ${LANG_ENGLISH} "${Application} is already installed.$\n$\nClick 'OK' to remove the previous version$\nor 'Cancel' to cancel this installation." | |
| LangString message ${LANG_FRENCH} "${Application} est déjà installé.$\n$\nCliquez sur 'OK' pour supprimer la version précédente$\nou sur 'Annuler' pour annuler cette installation." | |
| LangString message ${LANG_GERMAN} "${Application} ist bereits installiert.$\n$\nKlicke 'OK' um die frühere Version zu entfernen$\noder 'Abbruch' um die Installation abzubrechen." | |
| # onInit function | |
| Function .onInit | |
| # Preventing the window to close automatically at the end of the (un)installation | |
| SetAutoClose false | |
| # Verifying if the application is already installed | |
| ReadRegStr $R0 "${INSTDIR_REG_ROOT}" "${INSTDIR_REG_KEY}" "UninstallString" | |
| StrCmp $R0 "" done | |
| # Getting install location | |
| ReadRegStr $R1 "${INSTDIR_REG_ROOT}" "SOFTWARE\${Application}" "InstallDir" | |
| StrCmp $R1 "" done | |
| # The application is already installed | |
| # Asking before running the uninstaller | |
| MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(message)" \ | |
| IDOK uninst | |
| Abort | |
| # Running the uninstaller | |
| uninst: | |
| ExecWait '$R0 _?=$R1' | |
| done: | |
| # Preparing the uninstall log | |
| !insertmacro UNINSTALL.LOG_PREPARE_INSTALL | |
| FunctionEnd | |
| # onInstSuccess function | |
| Function .onInstSuccess | |
| # Updating the uninstall log | |
| !insertmacro UNINSTALL.LOG_UPDATE_INSTALL | |
| FunctionEnd | |
| # UN.onInit function | |
| Function UN.onInit | |
| # Begin uninstall | |
| !insertmacro UNINSTALL.LOG_BEGIN_UNINSTALL | |
| FunctionEnd | |
| # | |
| # Sections | |
| # | |
| # Installer section | |
| Section | |
| SetOutPath "$INSTDIR" | |
| # Opening uninstall log | |
| !insertmacro UNINSTALL.LOG_OPEN_INSTALL | |
| # Adding installer source files | |
| File /r "${SourceFolder}\*" | |
| # Storing install location | |
| WriteRegStr "${INSTDIR_REG_ROOT}" "SOFTWARE\${Application}" "InstallDir" $INSTDIR | |
| # Creating directories in the start menu | |
| CreateDirectory "$SMPROGRAMS\Apache Directory Studio" | |
| # Creating a shortcut to the application | |
| CreateShortCut "$SMPROGRAMS\Apache Directory Studio\Apache Directory Studio.lnk" "$INSTDIR\Apache Directory Studio.exe" "" "$INSTDIR\Apache Directory Studio.exe" 0 | |
| # Creating an internet shortcut to the documentation | |
| WriteINIStr "$SMPROGRAMS\Apache Directory Studio\Documentation.url" "InternetShortcut" "URL" "http://directory.apache.org/studio/users-guide.html" | |
| # Configuring registries for the uninstaller | |
| WriteRegStr "${INSTDIR_REG_ROOT}" "${INSTDIR_REG_KEY}" "DisplayName" "${Application} - (remove only)" | |
| WriteRegStr "${INSTDIR_REG_ROOT}" "${INSTDIR_REG_KEY}" "DisplayIcon" "$INSTDIR\uninstall.exe" | |
| WriteRegStr "${INSTDIR_REG_ROOT}" "${INSTDIR_REG_KEY}" "UninstallString" '"$INSTDIR\uninstall.exe"' | |
| WriteRegDWORD "${INSTDIR_REG_ROOT}" "${INSTDIR_REG_KEY}" "NoModify" "1" | |
| WriteRegDWORD "${INSTDIR_REG_ROOT}" "${INSTDIR_REG_KEY}" "NoRepair" "1" | |
| # Creating the uninstaller | |
| WriteUninstaller "$INSTDIR\Uninstall.exe" | |
| # Creating a shortcut to the uninstaller | |
| CreateShortCut "$SMPROGRAMS\Apache Directory Studio\Uninstall.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0 | |
| # Closing uninstall log | |
| !insertmacro UNINSTALL.LOG_CLOSE_INSTALL | |
| SectionEnd | |
| # Uninstaller section | |
| Section Uninstall | |
| # Removing installed files (one line per directory is mandatory) | |
| !insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR" | |
| !insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\configuration" | |
| !insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\plugins" | |
| !insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\features" | |
| Delete "$INSTDIR\Uninstall.exe" | |
| # Finishing uninstall | |
| !insertmacro UNINSTALL.LOG_END_UNINSTALL | |
| # Remove shortcuts and folders in the start menu | |
| RMDir /r "$SMPROGRAMS\Apache Directory Studio" | |
| # Removing registry keys | |
| DeleteRegKey "${INSTDIR_REG_ROOT}" "${INSTDIR_REG_KEY}" | |
| DeleteRegKey "${INSTDIR_REG_ROOT}" "SOFTWARE\${Application}" | |
| SectionEnd |