!define VER_MAJOR 1
!define VER_MINOR 0
!define VER_FILE 10
!define VER_DISPLAY "1.0 ${__TIMESTAMP__}"
!define APP_NAME TQJSEmbed
!define APP_NAME_LC qjsembed


Outfile ${APP_NAME}-${VER_FILE}.exe
SetCompressor lzma

InstallDir $PROGRAMFILES\${APP_NAME}
InstallDirRegKey HKLM Software\SourceXtreme\${APP_NAME} ""

!include "Sections.nsh"
!include "MUI.nsh"

Name "${APP_NAME}"
Caption "${APP_NAME} ${VER_DISPLAY} Setup"
XPStyle on

!define MUI_ABORTWARNING
!define MUI_HEADERIMAGE 

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "lgpl.txt"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
 
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"



Section "${APP_NAME} SDK (Required)" secSDK
        SectionIn RO
  SetDetailsPrint textonly
  DetailPrint "${APP_NAME} static library for embedding into Qt applications."
  SetDetailsPrint listonly

  SetOutPath "$WINDIR"
  

  SetOutPath "$INSTDIR"
  File lgpl.txt
  File ReadMe.txt
  SetOutPath "$INSTDIR"
  File kjsembed\qjsembed.dll
  SetOutPath "$INSTDIR\lib"
  File kjsembed\qjsembed.lib
  SetOutPath "$INSTDIR\include"
  File kjs\completion.h
  File kjs\list.h  
  File kjs\reference.h
  File kjs\ustring.h
  File kjs\function.h
  File kjs\lookup.h
  File kjs\reference_list.h
  File kjs\value.h
  File kjs\global.h
  File kjs\object.h
  File kjs\scope_chain.h
  File kjs\identifier.h
  File kjs\operations.h
  File kjs\simple_number.h
  File kjs\interpreter.h
  File kjs\property_map.h
  File kjs\types.h

  File kjsembed\kjsembedpart.h
  File kjsembed\jsconsolewidget.h
  File kjsembed\jssecuritypolicy.h


  ; Write the installation path into the registry
  WriteRegStr HKLM Software\SourceXtreme\${APP_NAME} "Install_Dir" "$INSTDIR"

  ; Write the uninstall keys for Windows
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "DisplayName" "${APP_NAME} ${VER_DISPLAY}"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "DisplayVersion" "${VER_DISPLAY}"

  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "UninstallString" '"$INSTDIR\uninstall.exe"'
  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "NoModify" 1
  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "NoRepair" 1
  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "VersionMajor" "${VER_MAJOR}"
  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "VersionMinor" "${VER_MINOR}"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "URLInfoAbout" "http://www.sourcextreme.com/projects/${APP_NAME_LC}"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "Publisher" "SourceXtreme, Inc"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "HelpLink" "oss@sourcextreme.com"

  WriteUninstaller "uninstall.exe"

SectionEnd

Section "${APP_NAME} Runtime" secRuntime
  SetOutPath "$INSTDIR"
  File qjscmd\qjscmd.exe
  File qjscmdw\qjscmdw.exe
  File stdlib\cmdline.js
  File "$%QTDIR%\bin\tqt-mt*.dll"
SectionEnd

Section "${APP_NAME} Source" secSrc
  SetOutPath "$INSTDIR\source"
  File *.pro
  File *.pri
  File lgpl.txt
  File readme.txt
  File todo.txt


  SetOutPath "$INSTDIR\source\pcre"
  File pcre\*.pro
  File pcre\*.c
  File pcre\*.h
  
  SetOutPath "$INSTDIR\source\kjs"
  File kjs\*.pro
  File kjs\*.cpp
  File kjs\*.h

  SetOutPath "$INSTDIR\source\builtins"
  File builtins\*.pro
  File builtins\*.cpp
  File builtins\*.h

  SetOutPath "$INSTDIR\source\qtbindings"
  File qtbindings\*.pro
  File qtbindings\*.cpp
  File qtbindings\*.h

  SetOutPath "$INSTDIR\source\kjsembed"
  File kjsembed\*.pro
  File kjsembed\*.cpp
  File kjsembed\*.h

  SetOutPath "$INSTDIR\source\qjscmd"
  File qjscmd\*.pro
  File qjscmd\*.cpp

  
  SetOutPath "$INSTDIR\source\stdlib"
  File stdlib\*.js

  SetOutPath "$INSTDIR\source\tests"
  File tests\*.js
  File tests\*.ui
  
SectionEnd

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

  SetOutPath "$INSTDIR"
  CreateDirectory "$SMPROGRAMS\${APP_NAME}"
  CreateShortCut "$SMPROGRAMS\${APP_NAME}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
  CreateShortCut "$SMPROGRAMS\${APP_NAME}\ReadMe.lnk" "$INSTDIR\ReadMe.txt" "" "$INSTDIR\ReadMe.txt" 0
  CreateShortCut "$SMPROGRAMS\${APP_NAME}\JSConsole.lnk" "$INSTDIR\qjscmdw.exe" "cmdline.js"


; Create internet links
  WriteINIStr "$SMPROGRAMS\${APP_NAME}\${APP_NAME} Webpage.url" "InternetShortcut" "URL" "http://www.sourcextreme.com/projects/${APP_NAME_LC}/"

SectionEnd

;Descriptions

LangString DESC_secSDK 		${LANG_ENGLISH} "${APP_NAME} static library for embedding into Qt applications."
LangString DESC_secRuntime 	${LANG_ENGLISH} "${APP_NAME} runtime for running scripts standalone."
LangString DESC_secMenu 	${LANG_ENGLISH} "Start menu shortcuts."
LangString DESC_secSrc 		${LANG_ENGLISH} "Source for building ${APP_NAME}."

!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${secSDK} $(DESC_secSDK)
!insertmacro MUI_DESCRIPTION_TEXT ${secRuntime} $(DESC_secRuntime)
!insertmacro MUI_DESCRIPTION_TEXT ${secMenu} $(DESC_secMenu)
!insertmacro MUI_DESCRIPTION_TEXT ${secSrc} $(DESC_secSrc)
!insertmacro MUI_FUNCTION_DESCRIPTION_END

; Uninstaller

Section "Uninstall"

  ; Remove registry keys
  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}"
  DeleteRegKey HKLM SOFTWARE\SourceXtreme\${APP_NAME}

  ; Remove files and uninstaller
  Delete "$INSTDIR\*.*"

  ; Remove source
  Delete "$INSTDIR\include\*.*"
  Delete "$INSTDIR\lib\*.*"
  Delete "$INSTDIR\source\pcre\*.*"
  Delete "$INSTDIR\source\kjsembed\*.*"
  Delete "$INSTDIR\source\kjs\*.*"
  Delete "$INSTDIR\source\qtbindings\*.*"
  Delete "$INSTDIR\source\builtins\*.*"
  Delete "$INSTDIR\source\qjscmd\*.*"
  Delete "$INSTDIR\source\tests\*.*"
  Delete "$INSTDIR\source\stdlib\*.*"
  Delete "$INSTDIR\source\*.*"

  Delete "$INSTDIR\src\*.*"
  ; Remove shortcuts, if any
  Delete "$SMPROGRAMS\${APP_NAME}\*.*"

  ; Remove directories used
  RMDir "$SMPROGRAMS\${APP_NAME}"
  RMDir "$INSTDIR\lib"
  RMDir "$INSTDIR\include"
  RMDir "$INSTDIR\source\pcre"
  RMDir "$INSTDIR\source\kjsembed"
  RMDir "$INSTDIR\source\kjs"
  RMDir "$INSTDIR\source\qtbindings"
  RMDir "$INSTDIR\source\builtins"
  RMDir "$INSTDIR\source\qjscmd"
  RMDir "$INSTDIR\source\tests"
  RMDir "$INSTDIR\source\stdlib"
  RMDir "$INSTDIR\source"

  RMDir "$INSTDIR"

SectionEnd
