##############################################################
### Load language files.
##############################################################
LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"
LoadLanguageFile "${NSISDIR}\Contrib\Language files\Russian.nlf"

##############################################################
### VIP - Set root direcrory (not current).
##############################################################
!cd "..\..\..\..\"                              # VIP - root
!define SOURCEDIR "CRW32\SRC32\Projects\CRW32"  # Crw32 path

##############################################################
### General product dependent constants.
##############################################################
!define PRODUCT   "Crw32"
!define TARGETDIR "Crw32exe"
!define TARGETEXE "..\InstallCrw32.Exe"
Name "${PRODUCT}"
OutFile "${TARGETEXE}"
InstallDir "C:\${TARGETDIR}"
LangString CaptionText ${LANG_ENGLISH} "Install $(^Name) (built ${__DATE__}-${__TIME__})"
LangString CaptionText ${LANG_RUSSIAN} "Установка $(^Name) (сборка ${__DATE__}-${__TIME__})"
Caption "$(CaptionText)"

##############################################################
### General installer options.
##############################################################
SetCompressor /FINAL /SOLID lzma
SetCompressorDictSize 64
SetDatablockOptimize on
SetCompress force
CRCCheck force
XPStyle on
SetFont "Courier New" 12
InstallColors AAAAAA 000000
InstProgressFlags smooth colored
BrandingText 'Nullsoft Install System ${NSIS_VERSION}'
ShowInstDetails show
ShowUninstDetails show

##############################################################
### Compilation time scripts.
##############################################################
!cd "CRW32\SRC32\"
!system "ClearAll.bat"
!cd "..\..\"
!system "del /F /S /Q *.GID"
!system "del /F /S /Q thumbs.db"
!system "del /F /Q ${TARGETEXE}"
!system "copy /y ${SOURCEDIR}\InstallCrw32.nsi ${SOURCEDIR}\Resource\EditorTemplates\Daq-Nsi\InstallCrw32.nsi.txt"
!system "copy /Y ${SOURCEDIR}\*.nsi ${SOURCEDIR}\Resource\Scripts\"
!system "${SOURCEDIR}\Resource\Tools\CalcMd5\CalcMd5.bat"
#system "${SOURCEDIR}\Resource\Tools\Bat\DoMd5.bat"
!system "del /F /S /Q ${SOURCEDIR}\Check.md5"
!system "${SOURCEDIR}\CheckMaker.cmd"

##############################################################
### License page.
##############################################################
Page License
LicenseLangString LicenseSource ${LANG_ENGLISH} "${SOURCEDIR}\Resource\License\license_eng.txt"
LicenseLangString LicenseSource ${LANG_RUSSIAN} "${SOURCEDIR}\Resource\License\license_rus.txt"
LicenseData $(LicenseSource)

##############################################################
### Components page.
##############################################################
Page Components

##############################################################
### Directory page.
##############################################################
Page Directory

##############################################################
### InstFiles page. Put installation sections there.
##############################################################
Page InstFiles




##############################################################
### Installation types.
##############################################################
LangString InstTypeTypical ${LANG_ENGLISH} "Typical"
LangString InstTypeTypical ${LANG_RUSSIAN} "Типичный"
LangString InstTypeDevelop ${LANG_ENGLISH} "Developer"
LangString InstTypeDevelop ${LANG_RUSSIAN} "Разработчику"
LangString InstTypeMaximal ${LANG_ENGLISH} "Maximal"
LangString InstTypeMaximal ${LANG_RUSSIAN} "Максимальный"
LangString InstTypeMinimal ${LANG_ENGLISH} "Minimal"
LangString InstTypeMinimal ${LANG_RUSSIAN} "Минимальный"
InstType "$(InstTypeTypical)" # 1
InstType "$(InstTypeDevelop)" # 2
InstType "$(InstTypeMaximal)" # 3
InstType "$(InstTypeMinimal)" # 4
#InstType /COMPONENTSONLYONCUSTOM

LangString SectionGroupStartup ${LANG_ENGLISH} "Startup    - prepare installation"
LangString SectionGroupStartup ${LANG_RUSSIAN} "Startup    - подготовка установки"
SectionGroup "$(SectionGroupStartup)"

  LangString SectionStartupCheckAccessRights ${LANG_ENGLISH} "Access   - сheck user permission"
  LangString SectionStartupCheckAccessRights ${LANG_RUSSIAN} "Access   - проверка прав доступа"
  Section "$(SectionStartupCheckAccessRights)"
    SectionIn RO
    SetOutPath $TEMP
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionStartupCheckAccessRights)'
    DetailPrint '---------'
    Call CheckAccessRights
  SectionEnd

  LangString MakeBackupError_1 ${LANG_ENGLISH} "Could not delete or rename directory $INSTDIR."
  LangString MakeBackupError_1 ${LANG_RUSSIAN} "Не могу удалить или переименовать каталог $INSTDIR."
  LangString MakeBackupError_2 ${LANG_ENGLISH} "Maybe it is locked or no access rights."
  LangString MakeBackupError_2 ${LANG_RUSSIAN} "Возможно, он заблокирован или нет прав доступа."
  LangString MakeBackupError_3 ${LANG_ENGLISH} "Try to unlock files and repeat installation again."
  LangString MakeBackupError_3 ${LANG_RUSSIAN} "Попробуйте разблокировать и повторите инсталляцию."
  LangString SectionStartupMakeBackup ${LANG_ENGLISH} "Backup   - save previous version"
  LangString SectionStartupMakeBackup ${LANG_RUSSIAN} "Backup   - cохранить старую версию"
  Section "$(SectionStartupMakeBackup)"
    SectionIn RO
    Call LogSetOff
    SetOutPath $TEMP
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionStartupMakeBackup)'
    DetailPrint '---------'
    IfFileExists "$INSTDIR.OLD" 0 +2
      RmDir /r "$INSTDIR.OLD"
    IfFileExists "$INSTDIR.OLD" 0 +4
      DetailPrint "$(MakeBackupError_1)OLD."
      DetailPrint "$(MakeBackupError_2)"
      Abort "$(MakeBackupError_3)"
    IfFileExists "$INSTDIR" 0 +2
      Rename "$INSTDIR" "$INSTDIR.OLD"
    IfFileExists "$INSTDIR" 0 +4
      DetailPrint "$(MakeBackupError_1)"
      DetailPrint "$(MakeBackupError_2)"
      Abort "$(MakeBackupError_3)"
    SetOutPath $INSTDIR
  SectionEnd

  LangString SectionStartupLogSetOn ${LANG_ENGLISH} "LogSet   - switch on log file"
  LangString SectionStartupLogSetOn ${LANG_RUSSIAN} "LogSet   - включить log журнал"
  Section "$(SectionStartupLogSetOn)"
    SectionIn RO
    SetOutPath $INSTDIR
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionStartupLogSetOn)'
    DetailPrint '---------'
    ClearErrors
    Call LogSetOn
    SetOutPath $INSTDIR
    DetailPrint 'Install ${PRODUCT} (built ${__DATE__}-${__TIME__})'
  SectionEnd

  LangString SectionStartupInitVar ${LANG_ENGLISH} "InitVar  - initialize environment"
  LangString SectionStartupInitVar ${LANG_RUSSIAN} "InitVar  - инициализация переменных"
  Section "$(SectionStartupInitVar)"
    SectionIn RO
    SetRebootFlag false
    SetOutPath $INSTDIR
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionStartupInitVar)'
    DetailPrint '---------'
    Var /GLOBAL ErrorCounter
    StrCpy $ErrorCounter '0'
    Call CheckErrorCounter
    Var /GLOBAL CmdArgs
    Call GetParameters
    Pop $CmdArgs
    DetailPrint 'CmdLine=$CMDLINE'
    DetailPrint 'CmdArgs=$CmdArgs'
    Var /GLOBAL COMSPEC
    ReadEnvStr $COMSPEC COMSPEC
    DetailPrint 'COMSPEC=$COMSPEC'
    Var /GLOBAL NoCloseLog
    StrCpy $NoCloseLog '"$INSTDIR\Resource\Shell\noclose-log.cmd" '
    DetailPrint 'NoCloseLog=$NoCloseLog'
    Var /GLOBAL NoCloseRun
    StrCpy $NoCloseRun '"$INSTDIR\Resource\Shell\noclose-run.cmd" '
    DetailPrint 'NoCloseRun=$NoCloseRun'
    Var /GLOBAL HidCon
    StrCpy $HidCon '"$INSTDIR\Resource\Tools\GPL\grun\grun.exe" -w'
    DetailPrint 'HidCon=$HidCon'
    Var /GLOBAL RunCmd
    StrCpy $RunCmd '"$INSTDIR\Resource\Tools\GPL\grun\grun.exe" -w7'
    DetailPrint 'RunCmd=$RunCmd'
    Var /GLOBAL RunHid
    StrCpy $RunHid '"$INSTDIR\Resource\Tools\GPL\grun\grun.exe" -w7 $NoCloseLog'
    DetailPrint 'RunHid=$RunHid'
    Var /GLOBAL TeeLog
    StrCpy $TeeLog ' | "$INSTDIR\Resource\Tools\GPL\tee\tee.exe" -a "$INSTDIR\packages.log"'
    DetailPrint 'TeeLog=$TeeLog'
    Call CheckErrorCounter
  SectionEnd

  LangString SectionCheckSource ${LANG_ENGLISH} "Source   - /SOURCE option ?"
  LangString SectionCheckSource ${LANG_RUSSIAN} "Source   - /SOURCE опция ?"
  Section "$(SectionCheckSource)"
    SectionIn RO
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionCheckSource)'
    DetailPrint '---------'
    StrCmp $CmdArgs "/SOURCE" MakeExtractSource SkipExtractSource
    MakeExtractSource:
      File /r "*.*"
      DetailPrint "${PRODUCT} Source extracted!"
      Quit
    SkipExtractSource:
    Call CheckErrorCounter
  SectionEnd

  LangString SectionExtractFiles ${LANG_ENGLISH} "Unpack   - extract packed files"
  LangString SectionExtractFiles ${LANG_RUSSIAN} "Unpack   - распаковать файлы"
  Section "$(SectionExtractFiles)"
    SectionIn RO
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionExtractFiles)'
    DetailPrint '---------'
    SetOutPath "$INSTDIR\Packages"
    File /r "${SOURCEDIR}\Packages\*.*"
    SetOutPath "$INSTDIR\Resource"
    File /r "${SOURCEDIR}\Resource\*.*"
    SetOutPath "$INSTDIR\Resource\Tools"
    # Be care - $$ uses to represent $ symbols!
    execwait '$RunHid ..\..\Packages\$$$$\7za.exe x -y ..\..\Packages\UnixUtils\UnixUtils.7z $TeeLog'
    execwait '$RunHid "$INSTDIR\Resource\Tools\www.bellard.org\tcc-lib.bat" $TeeLog'
    SetOutPath "$INSTDIR\Resource\Tools\AdmiLink"
    File /r "${SOURCEDIR}\Packages\AdmiLink\*.*"
    SetOutPath "$INSTDIR\Resource\Tools\SpeechApi"
    File /r "${SOURCEDIR}\Packages\SpeechApi\*.*"
    SetOutPath "$INSTDIR"
    Call CheckErrorCounter
  SectionEnd

SectionGroupEnd



LangString SectionGroupSystem  ${LANG_ENGLISH} "System     - system tools"
LangString SectionGroupSystem  ${LANG_RUSSIAN} "System     - системные утилиты"
SectionGroup "$(SectionGroupSystem)"

  !define ExtractToSystemRoot
  !ifdef  ExtractToSystemRoot
  LangString SectionExtractToSystemRoot ${LANG_ENGLISH} "WinUtils - set of usefull tools"
  LangString SectionExtractToSystemRoot ${LANG_RUSSIAN} "WinUtils - набор полезных утилит"
  Section "$(SectionExtractToSystemRoot)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionExtractToSystemRoot)'
    DetailPrint '---------'
    # Be care - $$ uses to represent $ symbols!
    execwait '$RunHid $COMSPEC /C xcopy /D /E /V /C /I /H /R /Y /F "$INSTDIR\Packages\$$$$\*.*" "$WINDIR\" $TeeLog'
    Call CheckErrorCounter
  SectionEnd
  !endif

  !define InstallUnixUtils
  !ifdef  InstallUnixUtils
  LangString SectionInstallUnixUtils ${LANG_ENGLISH} "UnixUtils- UNIX like command tools"
  LangString SectionInstallUnixUtils ${LANG_RUSSIAN} "UnixUtils- команды в стиле UNIX"
  Section "$(SectionInstallUnixUtils)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionInstallUnixUtils)'
    DetailPrint '---------'
    execwait '$RunHid "$INSTDIR\Packages\UnixUtils\InstallUnixUtils.cmd" $TeeLog'
    Call CheckErrorCounter
  SectionEnd
  !endif

  !define InstallSystemFonts
  !ifdef  InstallSystemFonts
  LangString SectionInstallSystemFonts ${LANG_ENGLISH} "Fonts    - install uses Fonts"
  LangString SectionInstallSystemFonts ${LANG_RUSSIAN} "Fonts    - набор нужных шрифтов"
  Section "$(SectionInstallSystemFonts)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionInstallSystemFonts)'
    DetailPrint '---------'
    execwait '$RunHid "$INSTDIR\Resource\Fonts\InstallFonts.cmd" $TeeLog'
    Call CheckErrorCounter
  SectionEnd
  !endif

  !define InstallVcRedist
  !ifdef  InstallVcRedist
  LangString SectionInstallVcRedist ${LANG_ENGLISH} "VcRedist - MS VC libraries"
  LangString SectionInstallVcRedist ${LANG_RUSSIAN} "VcRedist - MS VC библиотеки"
  Section "$(SectionInstallVcRedist)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionInstallVcRedist)'
    DetailPrint '---------'
    execwait '$RunHid "$INSTDIR\Packages\VcRedist\InstallVcRedist.cmd" $TeeLog'
    Call CheckErrorCounter
  SectionEnd
  !endif

  !define Install7z
  !ifdef  Install7z
  LangString SectionInstall7z ${LANG_ENGLISH} "7z       - 7-zip archiver"
  LangString SectionInstall7z ${LANG_RUSSIAN} "7z       - 7-zip архиватор"
  Section "$(SectionInstall7z)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionInstall7z)'
    DetailPrint '---------'
    execwait '$RunHid "$INSTDIR\Packages\7z\Install7z.cmd" $TeeLog'
    Call CheckErrorCounter
  SectionEnd
  !endif

  !define InstallWinKeyLock
  !ifdef  InstallWinKeyLock
  LangString SectionInstallWinKeyLock ${LANG_ENGLISH} "WKeyLock - keyboard locker"
  LangString SectionInstallWinKeyLock ${LANG_RUSSIAN} "WKeyLock - блокировка клавиатуры"
  Section "$(SectionInstallWinKeyLock)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionInstallWinKeyLock)'
    DetailPrint '---------'
    execwait '$RunHid "$INSTDIR\Packages\WinKeyLock\InstallWinKeyLock.cmd" $TeeLog'
    Call CheckErrorCounter
  SectionEnd
  !endif

  !define InstallAdmiLink
  !ifdef  InstallAdmiLink
  LangString SectionInstallAdmiLink ${LANG_ENGLISH} "AdmiLink - Run As ... tool"
  LangString SectionInstallAdmiLink ${LANG_RUSSIAN} "AdmiLink - запуск с правами Админа"
  Section "$(SectionInstallAdmiLink)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionInstallAdmiLink)'
    DetailPrint '---------'
    execwait '$RunHid "$INSTDIR\Packages\AdmiLink\InstallAdmiLink.cmd" $TeeLog'
    Call CheckErrorCounter
  SectionEnd
  !endif

  !define InstallWindowsControlCenter
  !ifdef  InstallWindowsControlCenter
  LangString SectionInstallWindowsControlCenter ${LANG_ENGLISH} "WCC      - Windows Control Center"
  LangString SectionInstallWindowsControlCenter ${LANG_RUSSIAN} "WCC      - Windows Control Center"
  Section "$(SectionInstallWindowsControlCenter)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionInstallWindowsControlCenter)'
    DetailPrint '---------'
    SetOutPath "$INSTDIR\Resource\Tools\Windows_Shell_Commands"
    execwait '$RunHid Make_WinX.bat $TeeLog'
    SetOutPath "$INSTDIR"
    Call CheckErrorCounter
  SectionEnd
  !endif

SectionGroupEnd



LangString SectionGroupCrwDaq ${LANG_ENGLISH} "CRW-DAQ    - open src mini-SCADA"
LangString SectionGroupCrwDaq ${LANG_RUSSIAN} "CRW-DAQ    - открытая мини-SCADA"
SectionGroup "$(SectionGroupCrwDaq)"

  LangString SectionCrwDaqCrw32exe ${LANG_ENGLISH} "Crw32exe - CRW-DAQ for Win32"
  LangString SectionCrwDaqCrw32exe ${LANG_RUSSIAN} "Crw32exe - CRW-DAQ для Win32"
  Section "$(SectionCrwDaqCrw32exe)"
    SectionIn RO
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionCrwDaqCrw32exe)'
    DetailPrint '---------'
    File "${SOURCEDIR}\CrwGo.exe"
    File "${SOURCEDIR}\Crw32.exe"
    File "${SOURCEDIR}\Crw32.ini"
    File "${SOURCEDIR}\Check.md5"
    File "${SOURCEDIR}\Check.cmd"
    File "${SOURCEDIR}\borlndmm.dll"
    SetOutPath $INSTDIR\Temp
    File /r "${SOURCEDIR}\Temp\Crw32.ini"
    File /r "${SOURCEDIR}\Temp\Crw32.lng"
    IfFileExists "$SYSDIR\borlndmm.dll" SkipSysDirBorlndmmDll
      SetOutPath "$SYSDIR"
      File "${SOURCEDIR}\borlndmm.dll"
    SkipSysDirBorlndmmDll:
    SetOutPath "$INSTDIR"
    Call CheckErrorCounter
  SectionEnd

  LangString SectionCrwDaqTemp ${LANG_ENGLISH} "~\Temp   - copy existing settings"
  LangString SectionCrwDaqTemp ${LANG_RUSSIAN} "~\Temp   - копия файлов настройки"
  Section "$(SectionCrwDaqTemp)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionCrwDaqTemp)'
    DetailPrint '---------'
    IfFileExists "$INSTDIR.OLD\TEMP\*.*" 0 +4
      SetOutPath $INSTDIR\TEMP
      CopyFiles "$INSTDIR.OLD\TEMP\*.*" "$INSTDIR\TEMP"
      SetOutPath "$INSTDIR"
    Call CheckErrorCounter
  SectionEnd

  LangString SectionCrwDaqDemo ${LANG_ENGLISH} "~\Demo   - extract Demo"
  LangString SectionCrwDaqDemo ${LANG_RUSSIAN} "~\Demo   - установить Demo"
  Section "$(SectionCrwDaqDemo)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionCrwDaqDemo)'
    DetailPrint '---------'
    SetOutPath $INSTDIR\Demo
    File /r "${SOURCEDIR}\Demo\*.*"
    Call CheckErrorCounter
  SectionEnd

  LangString SectionCrwDaqLanguage ${LANG_ENGLISH} "Crw32.lng- language settings"
  LangString SectionCrwDaqLanguage ${LANG_RUSSIAN} "Crw32.lng- языковые настройки"
  Section "$(SectionCrwDaqLanguage)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionCrwDaqLanguage)'
    DetailPrint '---------'
    StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +2
      WriteIniStr "$INSTDIR\Temp\Crw32.lng" "System" "Language" "ENGLISH"
    StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +2
      WriteIniStr "$INSTDIR\Temp\Crw32.lng" "System" "Language" "RUSSIAN"
    Call CheckErrorCounter
  SectionEnd

  LangString SectionCrwDaqLanguageEn ${LANG_ENGLISH} "English  - english interface"
  LangString SectionCrwDaqLanguageEn ${LANG_RUSSIAN} "English  - английский интерфейс"
  Section "$(SectionCrwDaqLanguageEn)"
    SectionIn 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionCrwDaqLanguageEn)'
    DetailPrint '---------'
    WriteIniStr "$INSTDIR\Temp\Crw32.lng" "System" "Language" "ENGLISH"
    Call CheckErrorCounter
  SectionEnd

  LangString SectionCrwDaqLanguageRu ${LANG_ENGLISH} "Russian  - russian interface"
  LangString SectionCrwDaqLanguageRu ${LANG_RUSSIAN} "Russian  - русский интерфейс"
  Section "$(SectionCrwDaqLanguageRu)"
    SectionIn 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionCrwDaqLanguageRu)'
    DetailPrint '---------'
    WriteIniStr "$INSTDIR\Temp\Crw32.lng" "System" "Language" "RUSSIAN"
    Call CheckErrorCounter
  SectionEnd

  LangString SectionCrwDaqFullScreenMode ${LANG_ENGLISH} "FullScrn - Full Screen Mode"
  LangString SectionCrwDaqFullScreenMode ${LANG_RUSSIAN} "FullScrn - полноэкранный режим"
  Section "$(SectionCrwDaqFullScreenMode)"
    SectionIn 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionCrwDaqFullScreenMode)'
    DetailPrint '---------'
    WriteIniStr "$INSTDIR\Temp\Crw32.ini" "System" "FullScreenMode" "1"
    Call CheckErrorCounter
  SectionEnd

  LangString SectionCrwDaqNoSysTray ${LANG_ENGLISH} "NoSysTray- not uses System Tray"
  LangString SectionCrwDaqNoSysTray ${LANG_RUSSIAN} "NoSysTray- не сворачивать в трей"
  Section "$(SectionCrwDaqNoSysTray)"
    SectionIn 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionCrwDaqNoSysTray)'
    DetailPrint '---------'
    WriteIniStr "$INSTDIR\Temp\Crw32.ini" "System" "UsesSysTray" "0"
    Call CheckErrorCounter
  SectionEnd

  LangString SectionCrwDaqSource ${LANG_ENGLISH} "~\Source - extract program codes"
  LangString SectionCrwDaqSource ${LANG_RUSSIAN} "~\Source - распаковка исходников"
  Section "$(SectionCrwDaqSource)"
    SectionIn 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionCrwDaqSource)'
    DetailPrint '---------'
    SetOutPath "$INSTDIR\Source\CRW_DAQ"
    File /r "*.*"
    Call CheckErrorCounter
  SectionEnd

  LangString SectionCrwDaqMakeIndexCrw32 ${LANG_ENGLISH} "Crw32.htm- Make *.htm index file"
  LangString SectionCrwDaqMakeIndexCrw32 ${LANG_RUSSIAN} "Crw32.htm- создать *.htm индексы"
  Section "$(SectionCrwDaqMakeIndexCrw32)"
    SectionIn 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionCrwDaqMakeIndexCrw32)'
    DetailPrint '---------'
    DetailPrint 'ExecShell "" "$COMSPEC" "/c start /min /low $COMSPEC /c Resource\Tools\Bat\MakeIndexCrw32.bat" SW_SHOWMINIMIZED'
    ExecShell              "" "$COMSPEC" "/c start /min /low $COMSPEC /c Resource\Tools\Bat\MakeIndexCrw32.bat" SW_SHOWMINIMIZED
    Call CheckErrorCounter
  SectionEnd

  LangString SectionCrwDaqMakeIndexDaq32 ${LANG_ENGLISH} "Daq32.htm- Make *.htm index files"
  LangString SectionCrwDaqMakeIndexDaq32 ${LANG_RUSSIAN} "Daq32.htm- создать *.htm индексы"
  Section "$(SectionCrwDaqMakeIndexDaq32)"
    SectionIn 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionCrwDaqMakeIndexDaq32)'
    DetailPrint '---------'
    DetailPrint 'ExecShell "" "$COMSPEC" "/c start /min /low $COMSPEC /c Resource\Tools\Bat\MakeIndexDaq32.bat" SW_SHOWMINIMIZED'
    ExecShell              "" "$COMSPEC" "/c start /min /low $COMSPEC /c Resource\Tools\Bat\MakeIndexDaq32.bat" SW_SHOWMINIMIZED
    Call CheckErrorCounter
  SectionEnd

SectionGroupEnd




LangString SectionGroupOffice  ${LANG_ENGLISH} "Office     - document editors"
LangString SectionGroupOffice  ${LANG_RUSSIAN} "Office     - редакторы документов"
SectionGroup "$(SectionGroupOffice)"

  !define InstallWinHlp32
  !ifdef  InstallWinHlp32
  LangString InstallWinHlp32 ${LANG_ENGLISH} "WinHlp32 - HLP viewer"
  LangString InstallWinHlp32 ${LANG_RUSSIAN} "WinHlp32 - HLP обозреватель"
  Section "$(InstallWinHlp32)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(InstallWinHlp32)'
    DetailPrint '---------'
    execwait '$RunHid "$INSTDIR\Packages\WinHlp32\InstallWinHlp32.cmd" $TeeLog'
    Call CheckErrorCounter
  SectionEnd
  !endif

  !define InstallSumatraPdf
  !ifdef  InstallSumatraPdf
  LangString SectionInstallSumatraPdf ${LANG_ENGLISH} "Sumatra  - PDF viewer"
  LangString SectionInstallSumatraPdf ${LANG_RUSSIAN} "Sumatra  - PDF обозреватель"
  Section "$(SectionInstallSumatraPdf)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionInstallSumatraPdf)'
    DetailPrint '---------'
    execwait '$RunHid "$INSTDIR\Packages\SumatraPdf\InstallSumatraPdf.cmd" $TeeLog'
    Call CheckErrorCounter
  SectionEnd
  !endif

SectionGroupEnd




LangString SectionGroupMultimedia ${LANG_ENGLISH} "MultiMedia - sound,movie,CD,HDD"
LangString SectionGroupMultimedia ${LANG_RUSSIAN} "MultiMedia - звук,видео,CD,HDD"
SectionGroup "$(SectionGroupMultimedia)"

  !define InstallSpeechApi
  !ifdef  InstallSpeechApi
  LangString SectionInstallSpeechApi ${LANG_ENGLISH} "SpechApi - Speech engine API"
  LangString SectionInstallSpeechApi ${LANG_RUSSIAN} "SpechApi - речевой синтезатор"
  Section "$(SectionInstallSpeechApi)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionInstallSpeechApi)'
    DetailPrint '---------'
    execwait '$RunHid "$INSTDIR\Packages\SpeechApi\InstallSpeechApi.cmd" $TeeLog'
    Call CheckErrorCounter
  SectionEnd
  !endif

SectionGroupEnd




LangString SectionGroupDaqTools  ${LANG_ENGLISH} "DAQ tools  - measurements & control"
LangString SectionGroupDaqTools  ${LANG_RUSSIAN} "DAQ tools  - измерения & управление"
SectionGroup "$(SectionGroupDaqTools)"

  !define InstallOPCCore
  !ifdef  InstallOPCCore
  LangString SectionInstallOPCCore ${LANG_ENGLISH} "OPCCore  - OPC core library"
  LangString SectionInstallOPCCore ${LANG_RUSSIAN} "OPCCore  - библиотеки OPC"
  Section "$(SectionInstallOPCCore)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionInstallOPCCore)'
    DetailPrint '---------'
    execwait '$RunHid "$INSTDIR\Packages\OPCCore\InstallOPCCore.cmd" $TeeLog'
    Call CheckErrorCounter
  SectionEnd
  !endif

  !define InstallVSPE
  !ifdef  InstallVSPE
  LangString SectionInstallVSPE ${LANG_ENGLISH} "VSPE     - virtual serial port emulator"
  LangString SectionInstallVSPE ${LANG_RUSSIAN} "VSPE     - эмулятор COM-портов"
  Section "$(SectionInstallVSPE)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionInstallVSPE)'
    DetailPrint '---------'
    execwait '$RunHid "$INSTDIR\Packages\VSPE\InstallVSPE.cmd" $TeeLog'
    Call CheckErrorCounter
  SectionEnd
  !endif

  !define CmdAutoRunRegister
  !ifdef  CmdAutoRunRegister
  LangString SectionCmdAutoRunRegister ${LANG_ENGLISH} ".cmdautorun - Register"
  LangString SectionCmdAutoRunRegister ${LANG_RUSSIAN} ".cmdautorun - Регистрация"
  Section "$(SectionCmdAutoRunRegister)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionCmdAutoRunRegister)'
    DetailPrint '---------'
    execwait '$RunHid "$COMSPEC /c .cmdautorun /r" $TeeLog'
    Call CheckErrorCounter
  SectionEnd
  !endif

  !define CmdAutoRunUnRegister
  !ifdef  CmdAutoRunUnRegister
  LangString SectionCmdAutoRunUnRegister ${LANG_ENGLISH} ".cmdautorun - UnRegister"
  LangString SectionCmdAutoRunUnRegister ${LANG_RUSSIAN} ".cmdautorun - Отмена"
  Section "$(SectionCmdAutoRunUnRegister)"
    SectionIn 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionCmdAutoRunUnRegister)'
    DetailPrint '---------'
    execwait '$RunHid "$COMSPEC /c .cmdautorun /u" $TeeLog'
    Call CheckErrorCounter
  SectionEnd
  !endif

SectionGroupEnd





LangString SectionGroupFinally ${LANG_ENGLISH} "Finally    - install finalization"
LangString SectionGroupFinally ${LANG_RUSSIAN} "Finally    - завершение установки"
SectionGroup "$(SectionGroupFinally)"

  LangString SectionFinallyUninstallExe ${LANG_ENGLISH} "Uninst   - create uninstaller"
  LangString SectionFinallyUninstallExe ${LANG_RUSSIAN} "Uninst   - создать деинсталлятор"
  Section "$(SectionFinallyUninstallExe)"
    SectionIn RO
    SetOutPath $INSTDIR
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionFinallyUninstallExe)'
    DetailPrint '---------'
    WriteUninstaller $INSTDIR\Uninstall.Exe
    Call CheckErrorCounter
  SectionEnd

  !define FinallyDeleteOldProduct
  !ifdef  FinallyDeleteOldProduct
  LangString SectionFinallyDeleteOldProduct ${LANG_ENGLISH} "Kill OLD - delete OLD version of ${PRODUCT}"
  LangString SectionFinallyDeleteOldProduct ${LANG_RUSSIAN} "Kill OLD - удалить старую версию ${PRODUCT}"
  LangString SectionShouldNotDeleteOldProduct ${LANG_ENGLISH} "Errors found - should not delete OLD version of ${PRODUCT}"
  LangString SectionShouldNotDeleteOldProduct ${LANG_RUSSIAN} "Найдены ошибки - не стоит удалять старую версию ${PRODUCT}"
  Section "$(SectionFinallyDeleteOldProduct)"
    SectionIn 1 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionFinallyDeleteOldProduct)'
    DetailPrint '---------'
    Call CheckErrorCounter
    StrCmp $ErrorCounter '0' MakeDeleteOldProduct SkipDeleteOldProduct
    MakeDeleteOldProduct:
      RmDir /r "$INSTDIR.OLD"
      goto DoneDeleteOldProduct
    SkipDeleteOldProduct:
      DetailPrint '$(SectionShouldNotDeleteOldProduct)'
    DoneDeleteOldProduct:
    Call CheckErrorCounter
  SectionEnd
  !endif

  #define RunInstalledProduct
  !ifdef  RunInstalledProduct
  LangString SectionRunInstalledProduct ${LANG_ENGLISH} "Run me   - execute ${PRODUCT}"
  LangString SectionRunInstalledProduct ${LANG_RUSSIAN} "Запуск   - открыть ${PRODUCT}"
  Section "$(SectionRunInstalledProduct)"
    SectionIn 1 2 3 32
    SetOutPath "$INSTDIR"
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionRunInstalledProduct)'
    DetailPrint '---------'
    IfSilent SkipRunProduct MakeRunProduct
    MakeRunProduct:
      DetailPrint ' '
      DetailPrint 'Launch: Commander'
      DetailPrint '-----------------'
      exec '$RunHid $COMSPEC /C start "${PRODUCT}" CrwGo.exe $TeeLog'
    SkipRunProduct:
    Call CheckErrorCounter
  SectionEnd
  !endif

  LangString SectionFinallyCheckErrors ${LANG_ENGLISH} "Status   - check errors"
  LangString SectionFinallyCheckErrors ${LANG_RUSSIAN} "Status   - проверить статус"
  LangString CheckErrorsOkMsg ${LANG_ENGLISH} "Ok, no errors found during installation."
  LangString CheckErrorsOkMsg ${LANG_RUSSIAN} "Ok, при инсталляции ошибок не найдено."
  LangString CheckErrorsFailsMsg ${LANG_ENGLISH} "ATTENTION: error(s) found during installation!"
  LangString CheckErrorsFailsMsg ${LANG_RUSSIAN} "ВНИМАНИЕ: при инсталляции были найдены ошибки."
  Section "$(SectionFinallyCheckErrors)"
    SectionIn RO
    SetOutPath $INSTDIR
    SetShellVarContext all
    DetailPrint '---------'
    DetailPrint 'Section: $(SectionFinallyCheckErrors)'
    DetailPrint '---------'
    Call CheckErrorCounter
    StrCmp $ErrorCounter '0' ErrorCounterGood ErrorCounterFail
    ErrorCounterFail:
      SetErrors
      exec '$RunHid $COMSPEC /C unix tooltip-notifier audio warning.wav bkColor red   trans 255 fontSize 24 delay 86400000 ico install.ico text "${PRODUCT} installed, $ErrorCounter error(s) found."'
      DetailPrint "**********************************************"
      DetailPrint "$(CheckErrorsFailsMsg)"
      DetailPrint "**********************************************"
      goto InstallationDone
    ErrorCounterGood:
      exec '$RunHid $COMSPEC /C unix tooltip-notifier audio notify.wav  bkColor green trans 255 fontSize 24 delay 86400000 ico install.ico text "${PRODUCT} installed, no errors found."'
      DetailPrint "**********************************************"
      DetailPrint "$(CheckErrorsOkMsg)"
      DetailPrint "**********************************************"
    InstallationDone:
      DetailPrint "*****"
      DetailPrint "Done!"
      DetailPrint "*****"
  SectionEnd

SectionGroupEnd




##############################################################
### Uninstall confirmation page.
##############################################################
UninstPage uninstConfirm

##############################################################
### Uninstall page.
##############################################################
UninstPage InstFiles




LangString UninstallConfirmation ${LANG_ENGLISH} "Do you really want to uninstall $(^Name)?"
LangString UninstallConfirmation ${LANG_RUSSIAN} "Вы в самом  деле хотите удалить $(^Name)?"
LangString UninstallMessage ${LANG_ENGLISH} "Right, do not uninstall nothing & never..."
LangString UninstallMessage ${LANG_RUSSIAN} "Точно, никогда и ничего не надо удалять..."
Section "Uninstall"
  SetOutPath $INSTDIR
  SetShellVarContext all
  Call un.CheckAccessRights
  IfSilent DoUninstall
  MessageBox MB_YESNO "$(UninstallConfirmation)" IDYES DoUninstall IDNO DoAbort
  DoAbort:
    Abort "$(UninstallMessage)"
    goto UninstallDone
  DoUninstall:
    RMDir /r $INSTDIR
  UninstallDone:
SectionEnd



##############################################################
### CheckErrorCounter
##############################################################
Function CheckErrorCounter
   IfErrors 0 +2
      IntOp $ErrorCounter $ErrorCounter + 1
   DetailPrint "ErrorCounter = $ErrorCounter"
FunctionEnd
##############################################################

##############################################################
### Extract CMDLINE parameters on top of stack
##############################################################
Function GetParameters
   Push $R0
   Push $R1
   Push $R2
   Push $R3
   StrCpy $R2 1
   StrLen $R3 $CMDLINE
   ;Check for quote or space
   StrCpy $R0 $CMDLINE $R2
   StrCmp $R0 '"' 0 +3
     StrCpy $R1 '"'
     Goto loop
   StrCpy $R1 " "
   loop:
     IntOp $R2 $R2 + 1
     StrCpy $R0 $CMDLINE 1 $R2
     StrCmp $R0 $R1 get
     StrCmp $R2 $R3 get
     Goto loop
   get:
     IntOp $R2 $R2 + 1
     StrCpy $R0 $CMDLINE 1 $R2
     StrCmp $R0 " " get
     StrCpy $R0 $CMDLINE "" $R2
   Pop $R3
   Pop $R2
   Pop $R1
   Exch $R0
FunctionEnd

##############################################################
### Select installation language dialog.
##############################################################
Function SelectLanguageDialog
  IfSilent DoSilent DoSelection
  DoSilent:
   Push ${LANG_RUSSIAN}  # Russian
   Pop $LANGUAGE
   Goto DoExit
  DoSelection:
   Push ""               # for the auto count to work the first empty push (Push "") must remain
   Push ${LANG_ENGLISH}  # English
   Push English
   Push ${LANG_RUSSIAN}  # Russian
   Push Russian
   Push A                # A means auto count languages
   LangDLL::LangDialog "${PRODUCT} - Installer Language" "Please select the language of the installer"
   Pop $LANGUAGE
   StrCmp $LANGUAGE "Cancel" 0 +2
    Abort
  DoExit:
FunctionEnd
##############################################################
Function un.SelectLanguageDialog
  IfSilent DoSilent DoSelection
  DoSilent:
   Push ${LANG_RUSSIAN}  # Russian
   Pop $LANGUAGE
   Goto DoExit
  DoSelection:
   Push ""               # for the auto count to work the first empty push (Push "") must remain
   Push ${LANG_ENGLISH}  # English
   Push English
   Push ${LANG_RUSSIAN}  # Russian
   Push Russian
   Push A                # A means auto count languages
   LangDLL::LangDialog "${PRODUCT} - Uninstaller Language" "Please select the language of the uninstaller"
   Pop $LANGUAGE
   StrCmp $LANGUAGE "Cancel" 0 +2
    Abort
  DoExit:
FunctionEnd
##############################################################

##############################################################
### Check if LANGUAGE is valid to use.
##############################################################
Function CheckLanguage
  StrCmp $LANGUAGE ${LANG_ENGLISH} LANGUAGE_OK +1
  StrCmp $LANGUAGE ${LANG_RUSSIAN} LANGUAGE_OK +1
  MessageBox MB_OK "${PRODUCT} - Invalid LANGUAGE selected ($LANGUAGE)."
  Abort "Invalid LANGUAGE selected ($LANGUAGE)."
  LANGUAGE_OK:
FunctionEnd
##############################################################
Function un.CheckLanguage
  StrCmp $LANGUAGE ${LANG_ENGLISH} LANGUAGE_OK +1
  StrCmp $LANGUAGE ${LANG_RUSSIAN} LANGUAGE_OK +1
  MessageBox MB_OK "${PRODUCT} - Invalid LANGUAGE selected ($LANGUAGE)."
  Abort "Invalid LANGUAGE selected ($LANGUAGE)."
  LANGUAGE_OK:
FunctionEnd
##############################################################

##############################################################
### Check user account type.
### If it is not "Admin", ask user to continue or abort...
##############################################################
Function CheckAccessRights
  Call CheckLanguage
  StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +2
   DetailPrint "Now checking user access rights..."
  StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +2
   DetailPrint "Проверка прав доступа..."
  ClearErrors
  Var /GLOBAL UserName
  UserInfo::GetName
  IfErrors AccessWin9x
  Pop $UserName
  Var /GLOBAL AccountType
  UserInfo::GetAccountType
  IfErrors AccessWin9x
  Pop $AccountType
  StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +2
   DetailPrint 'Found user "$UserName" of type "$AccountType".'
  StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +2
   DetailPrint 'Найден пользователь "$UserName" типа "$AccountType".'
  StrCmp $AccountType "Admin" AccessGranted AccessConfirmation
  AccessConfirmation:
   StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +2
    MessageBox MB_YESNO 'User "$UserName" of type "$AccountType" \
                         have no Administrator rights. \
                         Application may work incorrectly after such installation. \
                         Continue installation?' \
                         IDYES AccessGranted IDNO AccessDenied
   StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +2
    MessageBox MB_YESNO 'Пользователь "$UserName" типа "$AccountType" \
                         не имеет прав Администратора. \
                         Приложение может работать некорректно после такой инсталляции. \
                         Все равно продолжить инсталляцию?' \
                         IDYES AccessGranted IDNO AccessDenied
  AccessDenied:
   StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +4
    DetailPrint 'Access denied to user "$UserName" of type "$AccountType".'
    MessageBox MB_OK 'Access denied to user "$UserName" of type "$AccountType".'
    Abort 'Access denied to user "$UserName" of type "$AccountType".'
   StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +4
    DetailPrint 'Доступ закрыт для пользователя "$UserName" типа "$AccountType".'
    MessageBox MB_OK 'Доступ закрыт для пользователя "$UserName" типа "$AccountType".'
    Abort 'Доступ закрыт для пользователя "$UserName" типа "$AccountType".'
  AccessWin9x:
   StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +2
    DetailPrint "Don't care about rights in Windows 9x."
   StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +2
    DetailPrint "Права доступа не играют роли в Windows 9x."
  AccessGranted:
   StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +3
    DetailPrint 'Access granted to user "$UserName" of type "$AccountType".'
    DetailPrint 'Now can continue installation...'
   StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +3
    DetailPrint 'Доступ открыт для пользователя  "$UserName" типа "$AccountType".'
    DetailPrint 'Можно продолжать инсталляцию...'
FunctionEnd
##############################################################
Function un.CheckAccessRights
  Call un.CheckLanguage
  StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +2
   DetailPrint "Now checking user access rights..."
  StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +2
   DetailPrint "Проверка прав доступа..."
  ClearErrors
  #Var /GLOBAL UserName
  UserInfo::GetName
  IfErrors AccessWin9x
  Pop $UserName
  #Var /GLOBAL AccountType
  UserInfo::GetAccountType
  IfErrors AccessWin9x
  Pop $AccountType
  StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +2
   DetailPrint 'Found user "$UserName" of type "$AccountType".'
  StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +2
   DetailPrint 'Найден пользователь "$UserName" типа "$AccountType".'
  StrCmp $AccountType "Admin" AccessGranted AccessConfirmation
  AccessConfirmation:
   StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +2
    MessageBox MB_YESNO 'User "$UserName" of type "$AccountType" \
                         have no Administrator rights. \
                         Uninstallation may fails. \
                         Continue uninstallation?' \
                         IDYES AccessGranted IDNO AccessDenied
   StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +2
    MessageBox MB_YESNO 'Пользователь "$UserName" типа "$AccountType" \
                         не имеет прав Администратора. \
                         Деинсталляция может пройти некорректно. \
                         Все равно продолжить деинсталляцию?' \
                         IDYES AccessGranted IDNO AccessDenied
  AccessDenied:
   StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +4
    DetailPrint 'Access denied to user "$UserName" of type "$AccountType".'
    MessageBox MB_OK 'Access denied to user "$UserName" of type "$AccountType".'
    Abort 'Access denied to user "$UserName" of type "$AccountType".'
   StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +4
    DetailPrint 'Доступ закрыт для пользователя "$UserName" типа "$AccountType".'
    MessageBox MB_OK 'Доступ закрыт для пользователя "$UserName" типа "$AccountType".'
    Abort 'Доступ закрыт для пользователя "$UserName" типа "$AccountType".'
  AccessWin9x:
   StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +2
    DetailPrint "Don't care about rights in Windows 9x."
   StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +2
    DetailPrint "Права доступа не играют роли в Windows 9x."
  AccessGranted:
   StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +3
    DetailPrint 'Access granted to user "$UserName" of type "$AccountType".'
    DetailPrint 'Now can continue uninstallation...'
   StrCmp $LANGUAGE ${LANG_RUSSIAN} 0 +3
    DetailPrint 'Доступ открыт для пользователя  "$UserName" типа "$AccountType".'
    DetailPrint 'Можно продолжать деинсталляцию...'
FunctionEnd
##############################################################

##############################################################
### Switch on log file
##############################################################
Function LogSetOn
  !ifdef NSIS_CONFIG_LOG
    LogSet on
    DetailPrint "LogSet on $INSTDIR\install.log"
  !endif
FunctionEnd
##############################################################

##############################################################
### Switch off log file
##############################################################
Function LogSetOff
  !ifdef NSIS_CONFIG_LOG
    LogSet off
    DetailPrint "LogSet off"
  !endif
FunctionEnd
##############################################################

##############################################################
### .onInit - installer initialization function.
##############################################################
Function .onInit
  Call SelectLanguageDialog
  Call CheckLanguage
  SetCurInstType 0
FunctionEnd
##############################################################

##############################################################
### un.onInit - uninstaller initialization function.
##############################################################
Function un.onInit
  Call un.SelectLanguageDialog
  Call un.CheckLanguage
FunctionEnd
##############################################################
