!include "MUI2.nsh"
!include "FileFunc.nsh"

!define /date TIMESTAMP "%Y%m%d" 
!searchparse /file ../build/cockatrice/version_string.cpp '= "' VERSION '";'

Name "Cockatrice"
OutFile "cockatrice_win32_${TIMESTAMP}_git-${VERSION}.exe"
SetCompressor /SOLID lzma
InstallDir "$PROGRAMFILES\Cockatrice"

!define MUI_ABORTWARNING
!define MUI_WELCOMEFINISHPAGE_BITMAP "leftimage.bmp"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "leftimage.bmp"
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "headerimage.bmp"
!define MUI_HEADERIMAGE_UNBITMAP "headerimage.bmp"
!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of Cockatrice.$\r$\n$\r$\nClick Next to continue."
!define MUI_FINISHPAGE_RUN "$INSTDIR/oracle.exe"
!define MUI_FINISHPAGE_RUN_TEXT "Run card database downloader now"
!define MUI_FINISHPAGE_RUN_PARAMETERS "-dlsets"

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "..\COPYING"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH

!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH

!insertmacro MUI_LANGUAGE "English"

Section "Application" SecApplication
	SetOutPath "$INSTDIR"
	File ..\build\cockatrice\cockatrice.exe
	File ..\build\oracle\oracle.exe
	File ..\doc\usermanual\Usermanual.pdf
	File C:\MinGW\bin\libstdc++-6.dll
	File C:\MinGW\bin\libgcc_s_dw2-1.dll
	File C:\MinGW\bin\mingwm10.dll
	File C:\MinGW\bin\libprotobuf-8.dll
	File C:\Qt\4.8.4\bin\QtCore4.dll
	File C:\Qt\4.8.4\bin\QtGui4.dll
	File C:\Qt\4.8.4\bin\QtNetwork4.dll
	File C:\Qt\4.8.4\bin\QtSvg4.dll
	File C:\Qt\4.8.4\bin\QtXml4.dll
	File C:\Qt\4.8.4\bin\QtMultimedia4.dll

	SetOutPath "$INSTDIR\zonebg"
	File /r ..\zonebg\*.*
	
	SetOutPath "$INSTDIR\plugins"
	SetOutPath "$INSTDIR\plugins\codecs"
	File C:\Qt\4.8.4\plugins\codecs\qcncodecs4.dll
	File C:\Qt\4.8.4\plugins\codecs\qjpcodecs4.dll
	File C:\Qt\4.8.4\plugins\codecs\qkrcodecs4.dll
	File C:\Qt\4.8.4\plugins\codecs\qtwcodecs4.dll
	SetOutPath "$INSTDIR\plugins\iconengines"
	File C:\Qt\4.8.4\plugins\iconengines\qsvgicon4.dll
	SetOutPath "$INSTDIR\plugins\imageformats"
	File C:\Qt\4.8.4\plugins\imageformats\qjpeg4.dll
	File C:\Qt\4.8.4\plugins\imageformats\qsvg4.dll

	SetOutPath "$INSTDIR\sounds"
	File /r ..\sounds\*.*
	
	SetOutPath "$INSTDIR\translations"
	File /r ..\build\cockatrice\*.qm

        WriteUninstaller "$INSTDIR\uninstall.exe"
        ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
        IntFmt $0 "0x%08X" $0
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "DisplayName" "Cockatrice"
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "UninstallString" "$\"$INSTDIR\uninstall.exe$\""
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S"
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "InstallLocation" "$INSTDIR"
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "DisplayIcon" "$INSTDIR\cockatrice.exe"
	WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "EstimatedSize" "$0"
SectionEnd

Section "Update configuration" SecUpdateConfig
	WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "carddatabase" "$INSTDIR\cards.xml"
	WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "decks" "$INSTDIR\decks"
	WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "pics" "$INSTDIR\pics"
	WriteRegStr HKCU "Software\Cockatrice\Cockatrice\sound" "path" "$INSTDIR\sounds"
SectionEnd

Section "Start menu item" SecStartMenu
	createDirectory "$SMPROGRAMS\Cockatrice"
	createShortCut "$SMPROGRAMS\Cockatrice\Cockatrice.lnk" "$INSTDIR\cockatrice.exe"
	createShortCut "$SMPROGRAMS\Cockatrice\Oracle.lnk" "$INSTDIR\oracle.exe"
	createShortCut "$SMPROGRAMS\Cockatrice\Usermanual.lnk" "$INSTDIR\Usermanual.pdf"
SectionEnd

Section Uninstall
        RMDir /r "$INSTDIR\zonebg"
        RMDir /r "$INSTDIR\plugins"
        RMDir /r "$INSTDIR\sounds"
	RMDir /r "$INSTDIR\translations"
        Delete "$INSTDIR\uninstall.exe"
        Delete "$INSTDIR\cockatrice.exe"
        Delete "$INSTDIR\oracle.exe"
		Delete "$INSTDIR\Usermanual.pdf"
	Delete "$INSTDIR\libstdc++-6.dll"
	Delete "$INSTDIR\libprotobuf-8.dll"
        Delete "$INSTDIR\libgcc_s_dw2-1.dll"
        Delete "$INSTDIR\mingwm10.dll"
        Delete "$INSTDIR\QtCore4.dll"
        Delete "$INSTDIR\QtGui4.dll"
        Delete "$INSTDIR\QtNetwork4.dll"
        Delete "$INSTDIR\QtSvg4.dll"
        Delete "$INSTDIR\QtXml4.dll"
	Delete "$INSTDIR\QtMultimedia4.dll"
        RMDir "$INSTDIR"

	RMDir /r "$SMPROGRAMS\Cockatrice"
        
        DeleteRegKey HKCU "Software\Cockatrice"
        DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice"
SectionEnd

LangString DESC_SecApplication ${LANG_ENGLISH} "Cockatrice program files"
LangString DESC_SecUpdateConfig ${LANG_ENGLISH} "Update the paths in the application settings according to the installation paths."
LangString DESC_SecStartMenu ${LANG_ENGLISH} "Create start menu items for Cockatrice and Oracle."
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
        !insertmacro MUI_DESCRIPTION_TEXT ${SecApplication} $(DESC_SecApplication)
        !insertmacro MUI_DESCRIPTION_TEXT ${SecUpdateConfig} $(DESC_SecUpdateConfig)
        !insertmacro MUI_DESCRIPTION_TEXT ${SecStartMenu} $(DESC_SecStartMenu)
!insertmacro MUI_FUNCTION_DESCRIPTION_END

