;--------------------------------
;Configuration

!define ECN_INSTALL_ALL   ; recomment it for install of all components
!define ECN_DEINSTALL_ALL ; recomment it for deinstall of all components

;--------------------------------
;Include Pages Defines
!define ECN_INCLUDE_PAGE_WELCOME ; recomment this for hide page Welcome
!define ECN_INCLUDE_PAGE_LICENSE ; recomment this for hide page License
!define ECN_INCLUDE_PAGE_FINISH  ; recomment this for hide page Finish


!define ECN_VERSION '1.0.0.0'
!define ECN_PARTPATH "path"
!define ECN_BOOTSTRAPPERPATH "bootstrapper"
!define ECN_OUTFILE_NAME Demo-${ECN_VERSION}-setup.exe
!define ECN_UNINSTALLER_NAME Demo-${ECN_VERSION}-uninstaller.exe

!define ECN_CUSTOM_PAGEREINSTALL_INI "econtrolnet.ini"


!define ECN_INSTALLDIR "c:\demo"

!define ECN_REGKEY_MAIN "Software\Demo\ecn_demo"
!define ECN_REGKEY_INSTALLEDCOMPONENTS "Software\Demo\ecn_demo\InstalledComponents"

!define ECN_REGKEY_INSTALLEDCOMPONENTS_COPYDATA      "copydata"
!define ECN_REGKEY_INSTALLEDCOMPONENTS_DATA          "data"
!define ECN_REGKEY_INSTALLEDCOMPONENTS_WEBAPP        "webapp"
!define ECN_REGKEY_INSTALLEDCOMPONENTS_SOAP          "soap"
!define ECN_REGKEY_INSTALLEDCOMPONENTS_SERVICES      "services"
!define ECN_REGKEY_INSTALLEDCOMPONENTS_DEMOCLIENT    "democlient"
!define ECN_REGKEY_INSTALLEDCOMPONENTS_ECNMONITORING "ecnmonitoring"
!define ECN_REGKEY_INSTALLEDCOMPONENTS_ITMONAGENT    "itmonagent"

;Names
;--------------------------------
Name "e-Controlnet"
Caption "e-Controlnet Demo ${ECN_VERSION} Setup"

;Interface Settings
!define MUI_ABORTWARNING

OutFile "${ECN_OUTFILE_NAME}"
XPStyle on

;--------------------------------
;archiv, help
#!include LogicLib.nsh
#!insertmacro MUI_LANGUAGE "English"
#LoadLanguageFile "${NSISDIR}\Contrib\Language files\german.nlf"
#Function ecnMarkComponentAsSelectedAndRO
#FunctionEnd

;---------------------
;Include
!include LogicLib.nsh
!include MUI.nsh
#!include ecnuninstall.nsh

;--------------------------------
;InstType
InstType "Minimal"
InstType "Vollständig"
InstType "/CUSTOMSTRING=Benutzerdefiniert"

InstallDir ${ECN_INSTALLDIR}
InstallDirRegKey HKLM ${ECN_REGKEY_MAIN} "InstallLocation"

;--------------------------------
;Pages

!ifdef ECN_INCLUDE_PAGE_WELCOME
  !insertmacro MUI_PAGE_WELCOME
!endif
  
!ifdef ECN_INCLUDE_PAGE_LICENSE
  !insertmacro MUI_PAGE_LICENSE "License1.txt"
!endif


Page custom ecnPageReinstall ecnPageLeaveReinstall
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES

!ifdef ECN_INCLUDE_PAGE_FINISH
  !insertmacro MUI_PAGE_FINISH
  !define MUI_FINISHPAGE_LINK "demo"
  !define MUI_FINISHPAGE_LINK_LOCATION "http://www.demo.de/"
  !define MUI_FINISHPAGE_NOREBOOTSUPPORT
!endif

!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES

#AutoCloseWindow false
#ShowInstDetails show
#ShowUnInstDetails show


;--------------------------------
;Languages
!insertmacro MUI_LANGUAGE "German"

;--------------------------------
;Version Information

  VIProductVersion "${ECN_VERSION}"

  VIAddVersionKey /LANG=${LANG_GERMAN} "ProductName" "Demo"
  VIAddVersionKey /LANG=${LANG_GERMAN} "Comments" "Demo"
  VIAddVersionKey /LANG=${LANG_GERMAN} "CompanyName" "Demo"
  VIAddVersionKey /LANG=${LANG_GERMAN} "LegalTrademarks" "Demo"
  VIAddVersionKey /LANG=${LANG_GERMAN} "LegalCopyright" "Demo"
  VIAddVersionKey /LANG=${LANG_GERMAN} "FileDescription" ""
  VIAddVersionKey /LANG=${LANG_GERMAN} "FileVersion" "${ECN_VERSION}"

;--------------------------------
;Reserve Files
  
  ReserveFile ${ECN_CUSTOM_PAGEREINSTALL_INI}
  !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS


######################################################################################################################
# setglobalvar
######################################################################################################################
Section -setglobalvar

  DetailPrint ${ECN_PARTPATH}
SectionEnd

######################################################################################################################
# copyfiles
######################################################################################################################
Section -copyfiles SEC_COPYDATA
 
SectionEnd

######################################################################################################################
# webapp
######################################################################################################################
Section "Komp1 (notwendig)" SEC_WEBAPP
AddSize 5540
  SectionIn 1 2 3 RO

SectionEnd

######################################################################################################################
# Database
######################################################################################################################
Section "Komp2 (notwendig)" SEC_DATA
AddSize 6700  
  SectionIn 1 2 3 RO

SectionEnd

######################################################################################################################
# soap
######################################################################################################################
Section /o 'Komp3' SEC_SOAP
AddSize 5300
  SectionIn 2 3

SectionEnd


######################################################################################################################
# prepareuninstall
######################################################################################################################
Section -prepareuninstall

  SetOutPath $INSTDIR
  WriteUninstaller $INSTDIR\${ECN_UNINSTALLER_NAME}

SectionEnd

######################################################################################################################
  
;--------------------------------
;Descriptions

!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${SEC_WEBAPP}        "Komp1"
  !insertmacro MUI_DESCRIPTION_TEXT ${SEC_DATA}          "Komp2"
  !insertmacro MUI_DESCRIPTION_TEXT ${SEC_SOAP}          "Komp3"
!insertmacro MUI_FUNCTION_DESCRIPTION_END

;--------------------------------
;Installer Functions

Function .onInit

 System::Call 'kernel32::CreateMutexA(i 0, i 0, t "Demo Installer Mutex") i .r1 ?e'
 Pop $R0
 
 StrCmp $R0 0 +3
   MessageBox MB_OK|MB_ICONEXCLAMATION "e-Controlnet Installation läuft gerade."
   Abort


  ;Extract InstallOptions INI files
  !insertmacro MUI_INSTALLOPTIONS_EXTRACT ${ECN_CUSTOM_PAGEREINSTALL_INI}

FunctionEnd

Function ecnPageReinstall
  ClearErrors
  
  #IntOp $1 ${SF_SELECTED} | ${SF_RO}  
  StrCpy $1 64
  
  ReadRegStr $0 HKLM ${ECN_REGKEY_INSTALLEDCOMPONENTS} ${ECN_REGKEY_INSTALLEDCOMPONENTS_WEBAPP}
  ${If} $0 == 1
      # set section 'SEC_WEBAPP' as selected and read-only
      SectionSetFlags ${SEC_WEBAPP} $1
      StrCpy $R0 "1"	  
  ${EndIf}

  ReadRegStr $0 HKLM ${ECN_REGKEY_INSTALLEDCOMPONENTS} ${ECN_REGKEY_INSTALLEDCOMPONENTS_DATA}
  ${If} $0 == 1
      # set section 'SEC_DATA' as selected and read-only
      SectionSetFlags ${SEC_DATA} $1
      StrCpy $R0 "1"	  
  ${EndIf}

  ReadRegStr $0 HKLM ${ECN_REGKEY_INSTALLEDCOMPONENTS} ${ECN_REGKEY_INSTALLEDCOMPONENTS_SOAP}
  ${If} $0 == 1
      # set section 'SEC_SOAP' as selected and read-only
      SectionSetFlags ${SEC_SOAP} $1
      StrCpy $R0 "1"	  
  ${EndIf}
 
  ${If} $R0 == "1"
  !insertmacro MUI_INSTALLOPTIONS_WRITE ${ECN_CUSTOM_PAGEREINSTALL_INI} "Field 1" "Text" "schon installiert."
  !insertmacro MUI_INSTALLOPTIONS_WRITE ${ECN_CUSTOM_PAGEREINSTALL_INI} "Field 2" "Text" "Komponente hinzufügen"
  !insertmacro MUI_INSTALLOPTIONS_WRITE ${ECN_CUSTOM_PAGEREINSTALL_INI} "Field 3" "Text" "deinstallieren"
  
  !insertmacro MUI_HEADER_TEXT "schon installiert" "Bitte wählen Sie eine Option."  
  !insertmacro MUI_INSTALLOPTIONS_DISPLAY ${ECN_CUSTOM_PAGEREINSTALL_INI}
  ${EndIf}
  
 ClearErrors
  
FunctionEnd

Function ecnPageLeaveReinstall

  !insertmacro MUI_INSTALLOPTIONS_READ $R1 ${ECN_CUSTOM_PAGEREINSTALL_INI} "Field 2" "State"

  StrCmp $R1 "1" ecn_reinst_done ecn_reinst_uninstall

  ecn_reinst_uninstall:

  ;Run uninstaller
  HideWindow
    
  ExecWait '$INSTDIR\${ECN_UNINSTALLER_NAME}'
  Quit
  BringToFront
  ecn_reinst_done:

FunctionEnd





;--------------------------------
;Uninstaller Section

;--------------------------------
;Function Un.onInit

Function Un.onInit

StrCpy $INSTDIR ${ECN_INSTALLDIR}

FunctionEnd

;--------------------------------
;Section Uninstall
Section Uninstall

SectionEnd


