; NSIS description file for ioquake3 installer
;
; EDIT WITH CARE!
;
; This file is used to automatically build the installers in the
; openSUSE build service, don't break this!
;
; you have to copy SDL.dll and libcurl-4.dll here manually

!define MULTIUSER_MUI
!define MULTIUSER_EXECUTIONLEVEL Highest
!define MULTIUSER_INSTALLMODE_COMMANDLINE
!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "Software\ioquake3"
!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME "Install_Mode"
!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "Software\ioquake3"
!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME "Install_Dir"
!define MULTIUSER_INSTALLMODE_INSTDIR "ioquake3"
!include MultiUser.nsh

!include "MUI2.nsh"
!define MUI_ICON "../quake3.ico"

; The name of the installer
Name "ioquake3"

; The file to write
OutFile "ioquake3-XXXVERSIONXXX-XXXRELEASEXXX.x86.exe"

; The default installation directory
; set by Multiuser.nsh
;InstallDir $PROGRAMFILES\ioquake3

; Registry key to check for directory (so if you install again, it will
; overwrite the old one automatically)
; handled by Multiuser.nsh
;InstallDirRegKey HKLM "Software\ioquake3" "Install_Dir"

;--------------------------------
;Interface Settings

!define MUI_ABORTWARNING

;--------------------------------
;Pages

!insertmacro MULTIUSER_PAGE_INSTALLMODE
#!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES

!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES

;--------------------------------
;Languages

!insertmacro MUI_LANGUAGE "English"

;--------------------------------

;--------------------------------
;Multiuser stuff
Function .onInit
  !insertmacro MULTIUSER_INIT
FunctionEnd

Function un.onInit
  !insertmacro MULTIUSER_UNINIT
FunctionEnd

; The stuff to install
Section "ioquake3 (required)"

  SectionIn RO

  ; Set output path to the installation directory.
  SetOutPath $INSTDIR

  ; Put file there
  File "../../build/release-mingw32-x86/ioq3ded.x86.exe"
  File "../../build/release-mingw32-x86/ioquake3.x86.exe"
  File "../../COPYING.txt"
  File "../../README.txt"
  File "../../id-readme.txt"
  File "../../voip-readme.txt"

  SetOutPath "$INSTDIR\baseq3"
  File "../../build/release-mingw32-x86/baseq3/cgamex86.dll"
  File "../../build/release-mingw32-x86/baseq3/qagamex86.dll"
  File "../../build/release-mingw32-x86/baseq3/uix86.dll"
  SetOutPath "$INSTDIR\missionpack"
  File "../../build/release-mingw32-x86/missionpack/cgamex86.dll"
  File "../../build/release-mingw32-x86/missionpack/qagamex86.dll"
  File "../../build/release-mingw32-x86/missionpack/uix86.dll"

  ; Write the installation path into the registry
  WriteRegStr SHCTX "Software\ioquake3" ${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME} "$INSTDIR"
  WriteRegStr SHCTX "Software\ioquake3" ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME} "$MultiUser.InstallMode"

  ; Write the uninstall keys for Windows
  WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\ioquake3" "DisplayName" "ioquake3"
  WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\ioquake3" "UninstallString" '"$INSTDIR\uninstall.exe"'
  WriteRegDWORD SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\ioquake3" "NoModify" 1
  WriteRegDWORD SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\ioquake3" "NoRepair" 1
  WriteUninstaller "uninstall.exe"

SectionEnd

; Optional section (can be disabled by the user)
Section "Start Menu Shortcuts"

  CreateDirectory "$SMPROGRAMS\ioquake3"
  CreateShortCut "$SMPROGRAMS\ioquake3\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
  CreateShortCut "$SMPROGRAMS\ioquake3\ioquake3.lnk" "$INSTDIR\ioquake3.x86.exe" "" "$INSTDIR\ioquake3.x86.exe" 0

SectionEnd

Section "SDL.dll"

  SetOutPath $INSTDIR

  File "SDL.dll"

SectionEnd

Section "libcurl"

  SetOutPath $INSTDIR

  File "libcurl-4.dll"

SectionEnd

Section "OpenAL-Soft library"

  SetOutPath $INSTDIR

  File "OpenAL32.dll"

SectionEnd

;--------------------------------

; Uninstaller

Section "Uninstall"

  ; Remove registry keys
  DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\ioquake3"
  DeleteRegKey SHCTX "Software\ioquake3"

  ; Remove files and uninstaller
  Delete $INSTDIR\baseq3\cgamex86.dll
  Delete $INSTDIR\baseq3\qagamex86.dll
  Delete $INSTDIR\baseq3\uix86.dll
  Delete $INSTDIR\missionpack\cgamex86.dll
  Delete $INSTDIR\missionpack\qagamex86.dll
  Delete $INSTDIR\missionpack\uix86.dll
  Delete $INSTDIR\ioquake3.x86.exe
  Delete $INSTDIR\ioq3ded.x86.exe

  Delete $INSTDIR\COPYING.txt
  Delete $INSTDIR\README.txt
  Delete $INSTDIR\id-readme.txt
  Delete $INSTDIR\voip-readme.txt

  Delete $INSTDIR\SDL.dll

  Delete $INSTDIR\libcurl-4.dll

  Delete $INSTDIR\OpenAL32.dll

  Delete $INSTDIR\uninstall.exe

  ; Remove shortcuts, if any
  Delete "$SMPROGRAMS\ioquake3\Uninstall.lnk"
  Delete "$SMPROGRAMS\ioquake3\ioquake3.lnk"

  ; Remove directories used
  RMDir "$SMPROGRAMS\ioquake3"
  RMDir "$INSTDIR\baseq3"
  RMDir "$INSTDIR\missionpack"
  RMDir "$INSTDIR"

SectionEnd
