!define PRODUCT_NAME "Etch"
!ifndef PRODUCT_VERSION
    !define PRODUCT_VERSION "1.0"
!endif
!define PRODUCT_PUBLISHER "Etch"
!define PRODUCT_WEB_SITE "http://developer.cisco.com/web/cuae/etch"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}-${PRODUCT_VERSION}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!ifndef ROOT_DIRECTORY
    !define ROOT_DIRECTORY "..\target\Installers\dist"
!endif
!ifndef OUT_FILE
    !define OUT_FILE "etch-${PRODUCT_VERSION}-win32-setup.exe"
!endif

!include WinMessages.nsh

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${OUT_FILE}"
LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"
InstallDir "$PROGRAMFILES\${PRODUCT_PUBLISHER}\etch-${PRODUCT_VERSION}"
Icon "${NSISDIR}\Contrib\Graphics\Icons\pixel-install.ico"
UninstallIcon "${NSISDIR}\Contrib\Graphics\Icons\pixel-uninstall.ico"
DirText "Setup will install $(^Name) in the following folder.$\r$\n$\r$\nTo install in a different folder, click Browse and select another folder."
LicenseText "If you accept all the terms of the agreement, choose I Agree to continue. You must accept the agreement to install $(^Name)."
LicenseData "${ROOT_DIRECTORY}\LICENSE.txt"
#BrandingText "${PRODUCT_PUBLISHER}"
XPStyle on
ShowInstDetails show
ShowUnInstDetails show
#SetCompressor /SOLID zlib
LicenseBkColor ffffff
InstallColors 000000 ffffff

# Usage:
# Push "Substring"
# Push "Body"
# Call StrContains
# Pop 0/1
Function contains
  Exch $R1 ; Substring
  Exch 1
  Exch $R2 ; Body
  Push $R0 ; return value
  Exch 2
  Exch 1
  Push $R3 ; Length of Substring
  Push $R4 ; Length of Body
  Push $R5 ; i
  Push $R6 ; temp

  StrCpy $R0 ""
  StrLen $R3 $R1
  StrLen $R4 $R2
  StrCpy $R5 -1
  loop:
    IntOp $R5 $R5 + 1 ; ++i
    StrCpy $R6 $R2 $R3 $R5 ; temp = Body[i.. i + length of Substring]
    StrCmp $R6 $R1 found ; if temp = Substring -> found
    StrCmp $R5 $R4 done ; if i = length of body -> done
    GoTo loop
  found:
    StrCpy $R0 $R1
  done:
  Pop $R6
  Pop $R5
  Pop $R4
  Pop $R3
  Pop $R2
  Pop $R1
  Exch $R0
FunctionEnd

Section "CheckSection" SEC01
  ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
  StrCmp $R0 "" +4 0 # Check if Etch is installed
    MessageBox MB_ICONINFORMATION|MB_OKCANCEL "${PRODUCT_NAME}-${PRODUCT_VERSION} is already installed. Do you wish to re-install?" /SD IDOK IDOK +3 IDCANCEL 0
      MessageBox MB_ICONINFORMATION|MB_OK "${PRODUCT_NAME} was not installed." /SD IDOK
      Quit
SectionEnd

Section "MainSection"
  SetOutPath $INSTDIR
  SetOverwrite try
  File /r "${ROOT_DIRECTORY}\*"
  WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "ETCH_HOME" "$INSTDIR"
  ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"
  StrCpy $R1 "%ETCH_HOME%\bin"
  Push $R0
  Push $R1
  Call Contains
  Pop $R2
  StrCmp $R2 "" 0 +2
  WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$R0;%ETCH_HOME%\bin"
  # This tells windows to refresh the environment variables
  SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
SectionEnd

Section -AdditionalIcons
  SetOutPath $INSTDIR
#  WriteIniStr "$INSTDIR\etch-homepage.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
  CreateDirectory "$SMPROGRAMS\$(^Name)"
#  CreateShortCut "$SMPROGRAMS\$(^Name)\Etch Homepage.lnk" "$INSTDIR\etch-homepage.url"
  CreateShortCut "$SMPROGRAMS\$(^Name)\Uninstall Etch.lnk" "$INSTDIR\uninst.exe"
SectionEnd

Section -Post
  WriteUninstaller "$INSTDIR\uninst.exe"
  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}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd


Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." /SD IDOK
FunctionEnd

Function un.onInit
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" /SD IDOK IDYES +2
  Abort
FunctionEnd

# Usage:
# Push "String to cut"
# Push "Body text"
# Call Slice
# Pop $R0 ; "New String"
# Pop $R1 ; Cut done? 0/1
Function un.slice
  Exch $R0 ; input string
  Exch
  Exch $R1 ; to cut
  Push $R2
  Push $R3
  Push $R4
  Push $R5

  StrLen $R3 $R1
  StrCpy $R4 -1
  StrCpy $R5 0

  Loop:

    IntOp $R4 $R4 + 1
    StrCpy $R2 $R0 $R3 $R4
    StrCmp $R2 "" Done
    StrCmp $R2 $R1 0 Loop

    StrCpy $R5 1

    StrCmp $R4 0 0 +3
    StrCpy $R1 ""
    Goto +2
    StrCpy $R1 $R0 $R4
    StrLen $R2 $R0
    IntOp $R4 $R2 - $R4
    IntOp $R4 $R4 - $R3
    IntCmp $R4 0 0 0 +3
    StrCpy $R2 ""
    Goto +2
    StrCpy $R2 $R0 "" -$R4
    StrCpy $R0 $R1$R2

  Done:
  StrCpy $R1 $R5

  Pop $R5
  Pop $R4
  Pop $R3
  Pop $R2
  Exch $R1 ; slice? 0/1
  Exch
  Exch $R0 ; output string
FunctionEnd

Section Uninstall
  SetOutPath "$PROGRAMFILES\${PRODUCT_PUBLISHER}"
  RMDir /r $INSTDIR
  RMDir /r "$SMPROGRAMS\$(^Name)"
  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  DeleteRegValue HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "ETCH_HOME"
  # Replace Path with de-Etch'ed path
  ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"
  StrCpy $R1 ";%ETCH_HOME%\bin"
  Push $R1
  Push $R0
  Call un.slice
  Pop $R0
  WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$R0"
  # This tells windows to refresh the environment variables
  SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
  SetAutoClose true
SectionEnd
