view contrib/installer/MXD2map-installer.nsi @ 282:be5e9af0d124

Tagged as release 'release-1.0'
author Stephan Holl <stephan.holl@intevation.de>
date Thu, 06 Oct 2011 13:39:39 +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
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)