Mercurial > mxd2map
view contrib/installer/MXD2map-installer.nsi @ 280:5d57c4346a9b
Tagged as release 'release-'
author | Stephan Holl <stephan.holl@intevation.de> |
---|---|
date | Thu, 06 Oct 2011 13:38:18 +0200 |
parents | b2df9936d4f8 |
children | 4051c39757db |
line wrap: on
line source
; NSIS script to build Windows installer of MXD2map ; ; Copyright (c) 2011 by Intevation GmbH, Germany <info@intevation.de> ; ; This file is part of MXD2map. ; ; This program is free software under the LGPL (>=v2.1) ; Read the file LICENCE.txt coming with the software for details ; or visit http://www.gnu.org/licenses/ if it does not exist. ; ; MXD2map has been developed on behalf of the ; Bundesamt fuer Seeschifffahrt und Hydrographie (BSH) in Hamburg ; by Intevation GmbH. ; ; Authors: ; Raimund Renkert <raimund.renkert@intevation.de> ; Bjoern Schilberg <bjoern.schilberg@intevation.de> ; Stephan Holl <stephan.holl@intevation.de> ; ; Product defines ------------ !define PRODUCT_NAME "MXD2map" !define PRODUCT_VERSION "1.0" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\mxd2map" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" !define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir" ; --------------------------- ; MUI 2 compatible ---------- !include "MUI2.nsh" !include "Sections.nsh" !include "InstallOptions.nsh" ; --------------------------- ; MUI Settings -------------- !define MUI_ABORTWARNING !define MUI_ICON "favicon.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "logo_wide.bmp" !define MUI_WELCOMEPAGE_TITLE_3LINES !define MUI_FINISHPAGE_TITLE_3LINES !define MUI_FINISHPAGE_TEXT $(TXT_FIN) ; Language selection dialog settings !define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language" ; Check for Admin !define MUI_PAGE_CUSTOMFUNCTION_SHOW PrintNonAdminWarning ; Welcome page !insertmacro MUI_PAGE_WELCOME ; License page !insertmacro MUI_PAGE_LICENSE "LICENCE.txt" ; Components page !define MUI_COMPONENTSPAGE_SMALLDESC !insertmacro MUI_PAGE_COMPONENTS ; Directory page !insertmacro MUI_PAGE_DIRECTORY ; Start menu page var ICONS_GROUP !define MUI_STARTMENUPAGE_NODISABLE !define MUI_STARTMENUPAGE_DEFAULTFOLDER "MXD2map" !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}" !insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP ; Instfiles page !insertmacro MUI_PAGE_INSTFILES ; Uninstaller pages !define MUI_PAGE_CUSTOMFUNCTION_SHOW un.PrintNonAdminWarning !insertmacro MUI_UNPAGE_INSTFILES ; Language files !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "German" ; --------------------------- ; Language strings ---------- LangString DESC_SEC_MXD2MAP ${LANG_ENGLISH} \ "MXD2map is a converter for ArcGIS MXD-files into UMN MapServer Mapfiles." LangString DESC_SEC_MXD2MAP ${LANG_GERMAN} \ "MXD2map wird zur Erzeugung von UMN MapServer- Konfigurationsdateien aus ArcGIS MXD-Dateien verwendet." LangString DESC_SEC_EXAMPLES ${LANG_ENGLISH} \ "The examples show how to use and configure MXD2map." LangString DESC_SEC_EXAMPLES ${LANG_GERMAN} \ "Die Beispiele zeigen, wie MXD2map benutzt und konfiguriert werden kann." LangString UN_PRE ${LANG_ENGLISH} \ "Do you want to remove $(^Name) and all of its components?" LangString UN_PRE ${LANG_GERMAN} \ "M�chten Sie $(^Name) mit allen Komponenten deinstallieren?" LangString UN_POST ${LANG_ENGLISH} "Uninstall of $(^Name) successful." LangString UN_POST ${LANG_GERMAN} "Deinstallation von $(^Name) erfolgreich." LangString MISSING_ARCGIS ${LANG_ENGLISH} \ "ArcGIS is not installed. Please install an ArcGIS Environment first." LangString MISSING_ARCGIS ${LANG_GERMAN} \ "ArcGIS ist nicht installiert. Bitte installieren Sie eine ArcGIS Umgebung." LangString TXT_DOC ${LANG_ENGLISH} "Documentation" LangString TXT_DOC ${LANG_GERMAN} "Dokumentation" LangString TXT_ADMIN ${LANG_ENGLISH} \ "Warning: Administrator permissions required for the installation of ${PRODUCT_NAME}." LangString TXT_ADMIN ${LANG_GERMAN} \ "Achtung: F�r die Installation von ${PRODUCT_NAME} werden Administratorrechte ben�tigt." LangString TXT_ADMIN_UN ${LANG_ENGLISH} \ "Warning: Administrator permissions required for the uninstallation of ${PRODUCT_NAME}." LangString TXT_ADMIN_UN ${LANG_GERMAN} \ "Achtung: F�r die Deinstallation von ${PRODUCT_NAME} werden Administratorrechte ben�tigt." ; --------------------------- ; Install settings ---------- Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}.exe" InstallDir "$PROGRAMFILES\${PRODUCT_NAME}" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails show ShowUnInstDetails show RequestExecutionLevel admin ; --------------------------- ; MXD2map ------------------- Section "MXD2map" SEC01 SectionIn RO SetOutPath "$INSTDIR" SetShellVarContext all SetOverwrite ifnewer File "LICENCE.txt" File /r "bin\*.*" File "favicon.ico" ReadEnvStr $R0 "HOMEDRIVE" ReadEnvStr $R1 "HOMEPATH" CreateDirectory "$R0$R1\MXD2map" CreateDirectory "$R0$R1\MXD2map\logs" !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\MXD2map Shell.lnk" \ "$INSTDIR\MXD2map-Shell.bat" "" "$INSTDIR\favicon.ico" CreateShortCut "$DESKTOP\MXD2map Shell.lnk" \ "$INSTDIR\MXD2map-Shell.bat" "" "$INSTDIR\favicon.ico" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\$(TXT_DOC).lnk"\ "http://mxd2map.org/documentation/index.html" "" "$INSTDIR\favicon.ico" 0 !insertmacro MUI_STARTMENU_WRITE_END SectionEnd ; --------------------------- ; Examples ------------------ Section "Examples" SEC02 SetOverwrite ifnewer SetShellVarContext all File /r "example\*.*" ReadEnvStr $R0 "HOMEDRIVE" ReadEnvStr $R1 "HOMEPATH" CreateDirectory "$R0$R1\MXD2map\example" !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Run Example.lnk" \ "$INSTDIR\RunExample.bat" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd ; --------------------------- ; Section descriptions ------ !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} $(DESC_SEC_MXD2MAP) !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} $(DESC_SEC_EXAMPLES) !insertmacro MUI_FUNCTION_DESCRIPTION_END ; --------------------------- ; Icons --------------------- Section -AdditionalIcons !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd ; --------------------------- ; Post install -------------- Section -Post WriteUninstaller "$INSTDIR\uninst.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" SectionEnd ; --------------------------- ; Uninstall ----------------- Section Uninstall SetShellVarContext all !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP RMDir /r "$SMPROGRAMS\$ICONS_GROUP" RMDir /r "$INSTDIR" Delete "$DESKTOP\MXD2map Shell.lnk" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" SetAutoClose true SectionEnd ; --------------------------- ; On startup ---------------- Function .onInit ; Check to see if ArcGIS installed ReadRegStr $R0 HKLM "SOFTWARE\ESRI\ArcGIS\" "InstallDir" StrCmp $R0 "" +2 IfFileExists "$R0*.*" Installed +1 messagebox MB_DEFBUTTON1|MB_OK $(MISSING_ARCGIS) Quit Installed: ; Continue installing the MXD2map converter. FunctionEnd ; --------------------------- ; On uninstaller startup ---- Function un.onInit ; Ask for removal. !insertmacro MUI_UNGETLANGUAGE MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 $(UN_PRE) IDYES +2 Abort FunctionEnd ; --------------------------- ; On uninstaller succuss ---- Function un.onUninstSuccess ; Close window and show success dialog HideWindow MessageBox MB_ICONINFORMATION|MB_OK $(UN_POST) FunctionEnd ; --------------------------- Function PrintNonAdminWarning ClearErrors UserInfo::GetName IfErrors leave POP $0 UserInfo::GetAccountType POP $1 StrCmp $1 "Admin" leave +1 MessageBox MB_OK|MB_ICONEXCLAMATION "$(TXT_ADMIN)" Quit leave: FunctionEnd Function un.PrintNonAdminWarning ClearErrors UserInfo::GetName IfErrors leave POP $0 UserInfo::GetAccountType POP $1 StrCmp $1 "Admin" leave +1 MessageBox MB_OK|MB_ICONEXCLAMATION "$(TXT_ADMIN_UN)" Quit leave: FunctionEnd