diff mupdf-source/thirdparty/tesseract/nsis/tesseract.nsi @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mupdf-source/thirdparty/tesseract/nsis/tesseract.nsi	Mon Sep 15 11:43:07 2025 +0200
@@ -0,0 +1,1445 @@
+; (C) Copyright 2010, Sergey Bronnikov
+; (C) Copyright 2010-2012, Zdenko Podobný
+; (C) Copyright 2015-2024 Stefan Weil
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+; http://www.apache.org/licenses/LICENSE-2.0
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+; Links to NSIS documentation:
+; https://nsis.sourceforge.io/Docs/Modern%20UI%202/Readme.html
+
+; TODO:
+; * Fix PreventMultipleInstances.
+; * Add Tesseract icon and images for installer.
+
+SetCompressor /FINAL /SOLID lzma
+SetCompressorDictSize 32
+
+Unicode true
+
+; Settings which normally should be passed as command line arguments.
+;define CROSSBUILD
+;define SHARED
+;define W64
+!ifndef COMMENTS
+!define COMMENTS "GitHub CI build"
+!endif
+!ifndef COMPANYNAME
+!define COMPANYNAME "Open Source Community"
+!endif
+!ifndef SRCDIR
+!define SRCDIR .
+!endif
+!ifndef VERSION
+!define VERSION undefined
+!endif
+
+!define PRODUCT_NAME "Tesseract-OCR"
+!define PRODUCT_VERSION "${VERSION}"
+!define PRODUCT_PUBLISHER "Tesseract-OCR community"
+!ifndef PRODUCT_WEB_SITE
+!define PRODUCT_WEB_SITE "https://github.com/tesseract-ocr/tesseract"
+!endif
+!define GITHUB_RAW_FILE_URL \
+  "https://raw.githubusercontent.com/tesseract-ocr/tessdata_fast/main"
+
+!ifdef CROSSBUILD
+!addincludedir ${SRCDIR}\nsis\include
+!addplugindir Plugins/x86-unicode
+!endif
+
+!ifdef W64
+!define ARCH "x86_64"
+!define SETUP "tesseract-ocr-w64-setup"
+!else
+!define ARCH "i686"
+!define SETUP "tesseract-ocr-w32-setup"
+!endif
+
+# Name of program and file
+!define OUTFILE "${SETUP}-${VERSION}.exe"
+OutFile ${OUTFILE}
+
+!ifdef SIGNCODE
+!finalize "${SIGNCODE} %1"
+!uninstfinalize "${SIGNCODE} %1"
+!endif
+
+!ifndef PREFIX
+!define PREFIX "../mingw64"
+!endif
+!define BINDIR "${PREFIX}/bin"
+
+# General Definitions
+Name "${PRODUCT_NAME}"
+Caption "${PRODUCT_NAME} ${VERSION}"
+!ifndef CROSSBUILD
+BrandingText /TRIMCENTER "(c) 2010-2019 ${PRODUCT_NAME}"
+!endif
+
+; File properties.
+!define /date DATEVERSION "%Y%m%d%H%M%S"
+VIProductVersion "${VERSION}"
+VIAddVersionKey "ProductName" "${PRODUCT_NAME}"
+VIAddVersionKey "Comments" "${COMMENTS}"
+VIAddVersionKey "CompanyName" "${COMPANYNAME}"
+VIAddVersionKey "FileDescription" "Tesseract OCR"
+!define /date DATETIME "%Y-%m-%d-%H-%M-%S"
+VIAddVersionKey "FileVersion" "${DATETIME}"
+VIAddVersionKey "InternalName" "Tesseract"
+VIAddVersionKey "LegalCopyright" "Apache-2.0"
+#VIAddVersionKey "LegalTrademarks" ""
+VIAddVersionKey "OriginalFilename" "${OUTFILE}"
+VIAddVersionKey "ProductVersion" "${VERSION}"
+
+!define REGKEY "SOFTWARE\${PRODUCT_NAME}"
+; HKLM (all users) vs HKCU (current user) defines
+!define env_hklm 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
+!define env_hkcu 'HKCU "Environment"'
+
+# MultiUser Symbol Definitions
+# https://nsis.sourceforge.io/Docs/MultiUser/Readme.html
+!define MULTIUSER_EXECUTIONLEVEL Highest
+!define MULTIUSER_MUI
+!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "${REGKEY}"
+!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME MultiUserInstallMode
+!define MULTIUSER_INSTALLMODE_COMMANDLINE
+!define MULTIUSER_INSTALLMODE_INSTDIR ${PRODUCT_NAME}
+!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "${REGKEY}"
+!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUE "Path"
+!ifdef W64
+!define MULTIUSER_USE_PROGRAMFILES64
+!endif
+
+# MUI Symbol Definitions
+!define MUI_ABORTWARNING
+!define MUI_COMPONENTSPAGE_SMALLDESC
+!define MUI_HEADERIMAGE
+!define MUI_HEADERIMAGE_BITMAP_NOSTRETCH
+!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-blue-full.ico"
+!define MUI_FINISHPAGE_LINK "View Tesseract on GitHub"
+!define MUI_FINISHPAGE_LINK_LOCATION "https://github.com/tesseract-ocr/tesseract"
+!define MUI_FINISHPAGE_NOAUTOCLOSE
+!ifdef SHOW_README
+; Showing the README does not work.
+!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\doc\README.md"
+!define MUI_FINISHPAGE_SHOWREADME_FUNCTION ShowReadme
+!define MUI_FINISHPAGE_SHOWREADME_TEXT "Show README"
+!endif
+!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM
+!define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY}
+!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup
+!define MUI_STARTMENUPAGE_DEFAULTFOLDER ${PRODUCT_NAME}
+!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"
+!define MUI_UNFINISHPAGE_NOAUTOCLOSE
+!define MUI_WELCOMEPAGE_TITLE_3LINES
+
+# Included files
+!include MultiUser.nsh
+!include Sections.nsh
+!include MUI2.nsh
+!include LogicLib.nsh
+!include winmessages.nsh # include for some of the windows messages defines
+
+# Variables
+Var StartMenuGroup
+; Define user variables
+Var OLD_KEY
+
+# Installer pages
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "${SRCDIR}\LICENSE"
+!insertmacro MULTIUSER_PAGE_INSTALLMODE
+  Page custom PageReinstall PageLeaveReinstall
+!insertmacro MUI_PAGE_COMPONENTS
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_PAGE_FINISH
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+
+# Languages
+!insertmacro MUI_LANGUAGE "English"
+!insertmacro MUI_LANGUAGE "French"
+!insertmacro MUI_LANGUAGE "German"
+!insertmacro MUI_LANGUAGE "Italian"
+!insertmacro MUI_LANGUAGE "Russian"
+!insertmacro MUI_LANGUAGE "Slovak"
+!insertmacro MUI_LANGUAGE "Spanish"
+!insertmacro MUI_LANGUAGE "SpanishInternational"
+
+# Installer attributes
+ShowInstDetails hide
+InstProgressFlags smooth colored
+XPStyle on
+SpaceTexts
+CRCCheck on
+InstProgressFlags smooth colored
+CRCCheck On  # Do a CRC check before installing
+
+!macro Download_Lang_Data Lang
+  ; Download traineddata file.
+  DetailPrint "Download: ${Lang} language file"
+  inetc::get /caption "Downloading ${Lang} language file" \
+      "${GITHUB_RAW_FILE_URL}/${Lang}.traineddata" $INSTDIR/tessdata/${Lang}.traineddata \
+      /END
+    Pop $0 # return value = exit code, "OK" if OK
+    StrCmp $0 "OK" +2
+    MessageBox MB_OK|MB_ICONEXCLAMATION \
+      "Download error. Status of ${Lang}: $0. Click OK to continue." /SD IDOK
+!macroend
+
+Section -Main SEC0000
+  ; mark as read only component
+  SectionIn RO
+  SetOutPath "$INSTDIR"
+  # files included in distribution
+  File ${BINDIR}/tesseract.exe
+  File ${BINDIR}/libtesseract-*.dll
+!ifdef CROSSBUILD
+  File ../dll/*.dll
+!endif
+  File winpath.exe
+  File ../doc/*.html
+  CreateDirectory "$INSTDIR\tessdata"
+  SetOutPath "$INSTDIR\tessdata"
+  File ${PREFIX}/share/tessdata/pdf.ttf
+  CreateDirectory "$INSTDIR\tessdata\configs"
+  SetOutPath "$INSTDIR\tessdata\configs"
+  File ${PREFIX}/share/tessdata/configs/*
+  CreateDirectory "$INSTDIR\tessdata\script"
+  CreateDirectory "$INSTDIR\tessdata\tessconfigs"
+  SetOutPath "$INSTDIR\tessdata\tessconfigs"
+  File ${PREFIX}/share/tessdata/tessconfigs/*
+  CreateDirectory "$INSTDIR\doc"
+  SetOutPath "$INSTDIR\doc"
+  File ${SRCDIR}\AUTHORS
+  File ${SRCDIR}\LICENSE
+  File ${SRCDIR}\README.md
+##  File ${SRCDIR}\ReleaseNotes
+SectionEnd
+
+Section "ScrollView" SecScrollView
+  SectionIn 1
+  SetOutPath "$INSTDIR\tessdata"
+  File ${PREFIX}/share/tessdata/*.jar
+SectionEnd
+
+Section "Training Tools" SecTr
+  SectionIn 1
+  SetOutPath "$INSTDIR"
+  File /x tesseract.exe ${BINDIR}/*.exe
+SectionEnd
+
+!define UNINST_EXE "$INSTDIR\tesseract-uninstall.exe"
+!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
+
+Section -post SEC0001
+!ifdef W64
+  SetRegView 64
+!endif
+  ;Store installation folder - we always use HKLM!
+  WriteRegStr HKLM "${REGKEY}" "Path" "$INSTDIR"
+  WriteRegStr HKLM "${REGKEY}" "Mode" $MultiUser.InstallMode
+  WriteRegStr HKLM "${REGKEY}" "InstallDir" "$INSTDIR"
+  WriteRegStr HKLM "${REGKEY}" "CurrentVersion" "${VERSION}"
+  WriteRegStr HKLM "${REGKEY}" "Uninstaller" "${UNINST_EXE}"
+  ;WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\tesseract.exe" "$INSTDIR\tesseract.exe"
+  ;WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "Tesseract-OCR" "$INSTDIR\tesseract.exe"
+  ; Register to Add/Remove program in control panel
+  WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "${PRODUCT_NAME} - open source OCR engine"
+  WriteRegStr HKLM "${UNINST_KEY}" "DisplayVersion" "${VERSION}"
+  WriteRegStr HKLM "${UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
+  WriteRegStr HKLM "${UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
+  WriteRegStr HKLM "${UNINST_KEY}" "DisplayIcon" "${UNINST_EXE}"
+  WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" "${UNINST_EXE}"
+  WriteRegStr HKLM "${UNINST_KEY}" "QuietUninstallString" '"${UNINST_EXE}" /S'
+  WriteRegDWORD HKLM "${UNINST_KEY}" "NoModify" 1
+  WriteRegDWORD HKLM "${UNINST_KEY}" "NoRepair" 1
+  ;Create uninstaller
+  WriteUninstaller "${UNINST_EXE}"
+  ;ExecShell "open" "https://github.com/tesseract-ocr/tesseract"
+  ;ExecShell "open" '"$INSTDIR"'
+  ;BringToFront
+SectionEnd
+
+Section "Shortcuts creation" SecCS
+  SetOutPath $INSTDIR
+  CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
+  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Console.lnk" "$INSTDIR\winpath.exe" "cmd"
+  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Dokumentation.lnk" "$INSTDIR\tesseract.1.html"
+  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Homepage.lnk" "${PRODUCT_WEB_SITE}"
+  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\ReadMe.lnk" "${PRODUCT_WEB_SITE}/wiki/ReadMe"
+  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\FAQ.lnk" "${PRODUCT_WEB_SITE}/wiki/FAQ"
+  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "${UNINST_EXE}" "" "${UNINST_EXE}" 0
+  ;CreateShortCut "$DESKTOP\Tesseract-OCR.lnk" "$INSTDIR\tesseract.exe" "" "$INSTDIR\tesseract.exe" 0
+  ;CreateShortCut "$QUICKLAUNCH\.lnk" "$INSTDIR\tesseract.exe" "" "$INSTDIR\tesseract.exe" 0
+SectionEnd
+
+; Language files
+SectionGroup "Language data" SecGrp_LD
+    Section "English" SecLang_eng
+    SectionIn RO
+      !insertmacro Download_Lang_Data eng
+    SectionEnd
+
+    Section "Orientation and script detection" SecLang_osd
+    SectionIn 1
+      !insertmacro Download_Lang_Data osd
+    SectionEnd
+SectionGroupEnd
+
+; Download script files
+SectionGroup "Additional script data (download)" SecGrp_ASD
+  Section /o "Arabic script" SecLang_Arabic
+    AddSize 8880
+    !insertmacro Download_Lang_Data script/Arabic
+  SectionEnd
+
+  Section /o "Armenian script" SecLang_Armenian
+    AddSize 7510
+    !insertmacro Download_Lang_Data script/Armenian
+  SectionEnd
+
+  Section /o "Bengali script" SecLang_Bengali
+    AddSize 5450
+    !insertmacro Download_Lang_Data script/Bengali
+  SectionEnd
+
+  Section /o "Canadian Aboriginal script" SecLang_Canadian_Aboriginal
+    AddSize 6850
+    !insertmacro Download_Lang_Data script/Canadian_Aboriginal
+  SectionEnd
+
+  Section /o "Cherokee script" SecLang_Cherokee
+    AddSize 4040
+    !insertmacro Download_Lang_Data script/Cherokee
+  SectionEnd
+
+  Section /o "Cyrillic script" SecLang_Cyrillic
+    AddSize 27900
+    !insertmacro Download_Lang_Data script/Cyrillic
+  SectionEnd
+
+  Section /o "Devanagari script" SecLang_Devanagari
+    AddSize 17100
+    !insertmacro Download_Lang_Data script/Devanagari
+  SectionEnd
+
+  Section /o "Ethiopic script" SecLang_Ethiopic
+    AddSize 8650
+    !insertmacro Download_Lang_Data script/Ethiopic
+  SectionEnd
+
+  Section /o "Fraktur script" SecLang_Fraktur
+    AddSize 10400
+    !insertmacro Download_Lang_Data script/Fraktur
+  SectionEnd
+
+  Section /o "Georgian script" SecLang_Georgian
+    AddSize 6630
+    !insertmacro Download_Lang_Data script/Georgian
+  SectionEnd
+
+  Section /o "Greek script" SecLang_Greek
+    AddSize 2900
+    !insertmacro Download_Lang_Data script/Greek
+  SectionEnd
+
+  Section /o "Gujarati script" SecLang_Gujarati
+    AddSize 4780
+    !insertmacro Download_Lang_Data script/Gujarati
+  SectionEnd
+
+  Section /o "Gurmukhi script" SecLang_Gurmukhi
+    AddSize 4020
+    !insertmacro Download_Lang_Data script/Gurmukhi
+  SectionEnd
+
+  Section /o "Han Simplified script" SecLang_HanS
+    AddSize 5700
+    !insertmacro Download_Lang_Data script/HanS
+  SectionEnd
+
+  Section /o "Han Simplified vertical script" SecLang_HanS_vert
+    AddSize 5304
+    !insertmacro Download_Lang_Data script/HanS_vert
+  SectionEnd
+
+  Section /o "Han Traditional script" SecLang_HanT
+    AddSize 5200
+    !insertmacro Download_Lang_Data script/HanT
+  SectionEnd
+
+  Section /o "Han Traditional vertical script" SecLang_HanT_vert
+    AddSize 5200
+    !insertmacro Download_Lang_Data script/HanT_vert
+  SectionEnd
+
+  Section /o "Hangul script" SecLang_Hangul
+    AddSize 4620
+    !insertmacro Download_Lang_Data script/Hangul
+  SectionEnd
+
+  Section /o "Hangul vertical script" SecLang_Hangul_vert
+    AddSize 4510
+    !insertmacro Download_Lang_Data script/Hangul_vert
+  SectionEnd
+
+  Section /o "Hebrew script" SecLang_Hebrew
+    AddSize 4640
+    !insertmacro Download_Lang_Data script/Hebrew
+  SectionEnd
+
+  Section /o "Japanese script" SecLang_Japanese
+    AddSize 5610
+    !insertmacro Download_Lang_Data script/Japanese
+  SectionEnd
+
+  Section /o "Japanese vertical script" SecLang_Japanese_vert
+    AddSize 6150
+    !insertmacro Download_Lang_Data script/Japanese_vert
+  SectionEnd
+
+  Section /o "Kannada script" SecLang_Kannada
+    AddSize 6460
+    !insertmacro Download_Lang_Data script/Kannada
+  SectionEnd
+
+  Section /o "Khmer script" SecLang_Khmer
+    AddSize 4270
+    !insertmacro Download_Lang_Data script/Khmer
+  SectionEnd
+
+  Section /o "Lao script" SecLang_Script_Lao
+    AddSize 9640
+    !insertmacro Download_Lang_Data script/Lao
+  SectionEnd
+
+  Section /o "Latin script" SecLang_Latin
+    AddSize 85200
+    !insertmacro Download_Lang_Data script/Latin
+  SectionEnd
+
+  Section /o "Malayalam script" SecLang_Malayalam
+    AddSize 8590
+    !insertmacro Download_Lang_Data script/Malayalam
+  SectionEnd
+
+  Section /o "Myanmar script" SecLang_Myanmar
+    AddSize 7480
+    !insertmacro Download_Lang_Data script/Myanmar
+  SectionEnd
+
+  Section /o "Oriya script" SecLang_Oriya
+    AddSize 5480
+    !insertmacro Download_Lang_Data script/Oriya
+  SectionEnd
+
+  Section /o "Sinhala script" SecLang_Sinhala
+    AddSize 4560
+    !insertmacro Download_Lang_Data script/Sinhala
+  SectionEnd
+
+  Section /o "Syriac script" SecLang_Syriac
+    AddSize 5530
+    !insertmacro Download_Lang_Data script/Syriac
+  SectionEnd
+
+  Section /o "Tamil script" SecLang_Tamil
+    AddSize 6760
+    !insertmacro Download_Lang_Data script/Tamil
+  SectionEnd
+
+  Section /o "Telugu script" SecLang_Telugu
+    AddSize 6180
+    !insertmacro Download_Lang_Data script/Telugu
+  SectionEnd
+
+  Section /o "Thaana script" SecLang_Thaana
+    AddSize 5770
+    !insertmacro Download_Lang_Data script/Thaana
+  SectionEnd
+
+  Section /o "Thai script" SecLang_Thai
+    AddSize 4050
+    !insertmacro Download_Lang_Data script/Thai
+  SectionEnd
+
+  Section /o "Tibetan script" SecLang_Tibetan
+    AddSize 5440
+    !insertmacro Download_Lang_Data script/Tibetan
+  SectionEnd
+
+  Section /o "Vietnamese script" SecLang_Vietnamese
+    AddSize 1590
+    !insertmacro Download_Lang_Data script/Vietnamese
+  SectionEnd
+
+SectionGroupEnd
+
+; Download language files
+SectionGroup "Additional language data (download)" SecGrp_ALD
+  Section /o "Math / equation detection module" SecLang_equ
+    AddSize 2200
+    !insertmacro Download_Lang_Data equ
+  SectionEnd
+
+  ; The language names are documented here:
+  ; https://github.com/tesseract-ocr/tesseract/blob/main/doc/tesseract.1.asc#languages
+
+  Section /o "Afrikaans" SecLang_afr
+    AddSize 2530
+    !insertmacro Download_Lang_Data afr
+  SectionEnd
+
+  Section /o "Amharic" SecLang_amh
+    AddSize 5220
+    !insertmacro Download_Lang_Data amh
+  SectionEnd
+
+  Section /o "Arabic" SecLang_ara
+    AddSize 1370
+    !insertmacro Download_Lang_Data ara
+  SectionEnd
+
+  Section /o "Assamese" SecLang_asm
+    AddSize 1950
+    !insertmacro Download_Lang_Data asm
+  SectionEnd
+
+  Section /o "Azerbaijani" SecLang_aze
+    AddSize 3360
+    !insertmacro Download_Lang_Data aze
+  SectionEnd
+
+  Section /o "Azerbaijani (Cyrillic)" SecLang_aze_cyrl
+    AddSize 1850
+    !insertmacro Download_Lang_Data aze_cyrl
+  SectionEnd
+
+  Section /o "Belarusian" SecLang_bel
+    AddSize 3520
+    !insertmacro Download_Lang_Data bel
+  SectionEnd
+
+  Section /o "Bengali" SecLang_ben
+    AddSize 836
+    !insertmacro Download_Lang_Data ben
+  SectionEnd
+
+  Section /o "Tibetan" SecLang_bod
+    AddSize 1880
+    !insertmacro Download_Lang_Data bod
+  SectionEnd
+
+  Section /o "Bosnian" SecLang_bos
+    AddSize 2380
+    !insertmacro Download_Lang_Data bos
+  SectionEnd
+
+  Section /o "Breton" SecLang_bre
+    AddSize 6188
+    !insertmacro Download_Lang_Data bre
+  SectionEnd
+
+  Section /o "Bulgarian" SecLang_bul
+    AddSize 1600
+    !insertmacro Download_Lang_Data bul
+  SectionEnd
+
+  Section /o "Catalan" SecLang_cat
+    AddSize 1090
+    !insertmacro Download_Lang_Data cat
+  SectionEnd
+
+  Section /o "Cebuano" SecLang_ceb
+    AddSize 699
+    !insertmacro Download_Lang_Data ceb
+  SectionEnd
+
+  Section /o "Czech" SecLang_ces
+    AddSize 3620
+    !insertmacro Download_Lang_Data ces
+  SectionEnd
+
+  Section /o "Chinese (Simplified)" SecLang_chi_sim
+    AddSize 2350
+    !insertmacro Download_Lang_Data chi_sim
+  SectionEnd
+
+  Section /o "Chinese (Simplified vertical)" SecLang_chi_sim_vert
+    AddSize 1840
+    !insertmacro Download_Lang_Data chi_sim_vert
+  SectionEnd
+
+  Section /o "Chinese (Traditional)" SecLang_chi_tra
+    AddSize 2260
+    !insertmacro Download_Lang_Data chi_tra
+  SectionEnd
+
+  Section /o "Chinese (Traditional vertical)" SecLang_chi_tra_vert
+    AddSize 1740
+    !insertmacro Download_Lang_Data chi_tra_vert
+  SectionEnd
+
+  Section /o "Cherokee" SecLang_chr
+    AddSize 366
+    !insertmacro Download_Lang_Data chr
+  SectionEnd
+
+  Section /o "Corsican" SecLang_cos
+    AddSize 2190
+    !insertmacro Download_Lang_Data cos
+  SectionEnd
+
+  Section /o "Welsh" SecLang_cym
+    AddSize 2110
+    !insertmacro Download_Lang_Data cym
+  SectionEnd
+
+  Section /o "Danish" SecLang_dan
+    AddSize 2460
+    !insertmacro Download_Lang_Data dan
+  SectionEnd
+
+  Section /o "German" SecLang_deu
+    AddSize 1450
+    !insertmacro Download_Lang_Data deu
+  SectionEnd
+
+ Section /o "German Fraktur" SecLang_deu_latf
+    AddSize 6130
+    !insertmacro Download_Lang_Data deu_latf
+  SectionEnd
+
+  Section /o "Divehi" SecLang_div
+    AddSize 1690
+    !insertmacro Download_Lang_Data div
+  SectionEnd
+
+  Section /o "Dzongkha" SecLang_dzo
+    AddSize 439
+    !insertmacro Download_Lang_Data dzo
+  SectionEnd
+
+  Section /o "Greek" SecLang_ell
+    AddSize 1350
+    !insertmacro Download_Lang_Data ell
+  SectionEnd
+
+  Section /o "English - Middle (1100-1500)" SecLang_enm
+    AddSize 2960
+    !insertmacro Download_Lang_Data enm
+  SectionEnd
+
+  Section /o "Esperanto" SecLang_epo
+    AddSize 4510
+    !insertmacro Download_Lang_Data epo
+  SectionEnd
+
+  Section /o "Estonian" SecLang_est
+    AddSize 4250
+    !insertmacro Download_Lang_Data est
+  SectionEnd
+
+  Section /o "Basque" SecLang_eus
+    AddSize 4940
+    !insertmacro Download_Lang_Data eus
+  SectionEnd
+
+  Section /o "Faroese" SecLang_fao
+    AddSize 3280
+    !insertmacro Download_Lang_Data fao
+  SectionEnd
+
+  Section /o "Persian" SecLang_fas
+    AddSize 421
+    !insertmacro Download_Lang_Data fas
+  SectionEnd
+
+  Section /o "Filipino" SecLang_fil
+    AddSize 1760
+    !insertmacro Download_Lang_Data fil
+  SectionEnd
+
+ Section /o "Finnish" SecLang_fin
+    AddSize 7500
+    !insertmacro Download_Lang_Data fin
+  SectionEnd
+
+  Section /o "French" SecLang_fra
+    AddSize 1080
+    !insertmacro Download_Lang_Data fra
+  SectionEnd
+
+ Section /o "French - Middle (ca. 1400-1600)" SecLang_frm
+    AddSize 1930
+    !insertmacro Download_Lang_Data frm
+  SectionEnd
+
+  Section /o "Frisian (Western)" SecLang_fry
+    AddSize 1820
+    !insertmacro Download_Lang_Data fry
+  SectionEnd
+
+  Section /o "Gaelic (Scots)" SecLang_gla
+    AddSize 2930
+    !insertmacro Download_Lang_Data gla
+  SectionEnd
+
+  Section /o "Irish" SecLang_gle
+    AddSize 1130
+    !insertmacro Download_Lang_Data gle
+  SectionEnd
+
+  Section /o "Galician" SecLang_glg
+    AddSize 2440
+    !insertmacro Download_Lang_Data glg
+  SectionEnd
+
+  Section /o "Greek, Ancient (-1453)" SecLang_grc
+    AddSize 2140
+    !insertmacro Download_Lang_Data grc
+  SectionEnd
+
+  Section /o "Gujarati" SecLang_guj
+    AddSize 1350
+    !insertmacro Download_Lang_Data guj
+  SectionEnd
+
+  Section /o "Haitian" SecLang_hat
+    AddSize 1890
+    !insertmacro Download_Lang_Data hat
+  SectionEnd
+
+  Section /o "Hebrew" SecLang_heb
+    AddSize 939
+    !insertmacro Download_Lang_Data heb
+  SectionEnd
+
+  Section /o "Hindi" SecLang_hin
+    AddSize 1070
+    !insertmacro Download_Lang_Data hin
+  SectionEnd
+
+  Section /o "Croatian" SecLang_hrv
+    AddSize 3910
+    !insertmacro Download_Lang_Data hrv
+  SectionEnd
+
+  Section /o "Hungarian" SecLang_hun
+    AddSize 5050
+    !insertmacro Download_Lang_Data hun
+  SectionEnd
+
+  Section /o "Armenian" SecLang_hye
+    AddSize 3300
+    !insertmacro Download_Lang_Data hye
+  SectionEnd
+
+  Section /o "Inuktitut" SecLang_iku
+    AddSize 2670
+    !insertmacro Download_Lang_Data iku
+  SectionEnd
+
+  Section /o "Indonesian" SecLang_ind
+    AddSize 1070
+    !insertmacro Download_Lang_Data ind
+  SectionEnd
+
+  Section /o "Icelandic" SecLang_isl
+    AddSize 2170
+    !insertmacro Download_Lang_Data isl
+  SectionEnd
+
+  Section /o "Italian" SecLang_ita
+    AddSize 2580
+    !insertmacro Download_Lang_Data ita
+  SectionEnd
+
+  Section /o "Italian (Old)" SecLang_ita_old
+    AddSize 3130
+    !insertmacro Download_Lang_Data ita_old
+  SectionEnd
+
+  Section /o "Javanese" SecLang_jav
+    AddSize 2840
+    !insertmacro Download_Lang_Data jav
+  SectionEnd
+
+  Section /o "Japanese" SecLang_jpn
+    AddSize 2360
+    !insertmacro Download_Lang_Data jpn
+  SectionEnd
+
+  Section /o "Japanese (vertical)" SecLang_jpn_vert
+    AddSize 2900
+    !insertmacro Download_Lang_Data jpn_vert
+  SectionEnd
+
+  Section /o "Kannada" SecLang_kan
+    AddSize 3440
+    !insertmacro Download_Lang_Data kan
+  SectionEnd
+
+  Section /o "Georgian" SecLang_kat
+    AddSize 2410
+    !insertmacro Download_Lang_Data kat
+  SectionEnd
+
+  Section /o "Georgian (Old)" SecLang_kat_old
+    AddSize 413
+    !insertmacro Download_Lang_Data kat_old
+  SectionEnd
+
+  Section /o "Kazakh" SecLang_kaz
+    AddSize 4520
+    !insertmacro Download_Lang_Data kaz
+  SectionEnd
+
+  Section /o "Central Khmer" SecLang_khm
+    AddSize 1380
+    !insertmacro Download_Lang_Data khm
+  SectionEnd
+
+  Section /o "Kirghiz" SecLang_kir
+    AddSize 9470
+    !insertmacro Download_Lang_Data kir
+  SectionEnd
+
+  Section /o "Korean" SecLang_kor
+    AddSize 1600
+    !insertmacro Download_Lang_Data kor
+  SectionEnd
+
+  Section /o "Kurdish (Kurmanji)" SecLang_kmr
+    AddSize 3400
+    !insertmacro Download_Lang_Data kmr
+  SectionEnd
+
+  Section /o "Lao" SecLang_lao
+    AddSize 6090
+    !insertmacro Download_Lang_Data lao
+  SectionEnd
+
+  Section /o "Latin" SecLang_lat
+    AddSize 3040
+    !insertmacro Download_Lang_Data lat
+  SectionEnd
+
+  Section /o "Latvian" SecLang_lav
+    AddSize 2590
+    !insertmacro Download_Lang_Data lav
+  SectionEnd
+
+  Section /o "Lithuanian" SecLang_lit
+    AddSize 3010
+    !insertmacro Download_Lang_Data lit
+  SectionEnd
+
+  Section /o "Luxembourgish" SecLang_ltz
+    AddSize 2490
+    !insertmacro Download_Lang_Data ltz
+  SectionEnd
+
+  Section /o "Malayalam" SecLang_mal
+    AddSize 5030
+    !insertmacro Download_Lang_Data mal
+  SectionEnd
+
+  Section /o "Marathi" SecLang_mar
+    AddSize 2020
+    !insertmacro Download_Lang_Data mar
+  SectionEnd
+
+  Section /o "Macedonian" SecLang_mkd
+    AddSize 1530
+    !insertmacro Download_Lang_Data mkd
+  SectionEnd
+
+  Section /o "Maltese" SecLang_mlt
+    AddSize 2200
+    !insertmacro Download_Lang_Data mlt
+  SectionEnd
+
+  Section /o "Mongolian" SecLang_mon
+    AddSize 2040
+    !insertmacro Download_Lang_Data mon
+  SectionEnd
+
+  Section /o "Maori" SecLang_mri
+    AddSize 843
+    !insertmacro Download_Lang_Data mri
+  SectionEnd
+
+  Section /o "Malay" SecLang_msa
+    AddSize 1670
+    !insertmacro Download_Lang_Data msa
+  SectionEnd
+
+  Section /o "Burmese" SecLang_mya
+    AddSize 4430
+    !insertmacro Download_Lang_Data mya
+  SectionEnd
+
+  Section /o "Nepali" SecLang_nep
+    AddSize 979
+    !insertmacro Download_Lang_Data nep
+  SectionEnd
+
+  Section /o "Dutch; Flemish" SecLang_nld
+    AddSize 5770
+    !insertmacro Download_Lang_Data nld
+  SectionEnd
+
+  Section /o "Norwegian" SecLang_nor
+    AddSize 3440
+    !insertmacro Download_Lang_Data nor
+  SectionEnd
+
+  Section /o "Occitan (post 1500)" SecLang_oci
+    AddSize 6030
+    !insertmacro Download_Lang_Data oci
+  SectionEnd
+
+  Section /o "Oriya" SecLang_ori
+    AddSize 1410
+    !insertmacro Download_Lang_Data ori
+  SectionEnd
+
+  Section /o "Panjabi / Punjabi" SecLang_pan
+    AddSize 4860
+    !insertmacro Download_Lang_Data pan
+  SectionEnd
+
+  Section /o "Polish" SecLang_pol
+    AddSize 4540
+    !insertmacro Download_Lang_Data pol
+  SectionEnd
+
+  Section /o "Portuguese" SecLang_por
+    AddSize 1890
+    !insertmacro Download_Lang_Data por
+  SectionEnd
+
+  Section /o "Pushto / Pashto" SecLang_pus
+    AddSize 1690
+    !insertmacro Download_Lang_Data pus
+  SectionEnd
+
+  Section /o "Quechua" SecLang_que
+    AddSize 4790
+    !insertmacro Download_Lang_Data que
+  SectionEnd
+
+  Section /o "Romanian" SecLang_ron
+    AddSize 2270
+    !insertmacro Download_Lang_Data ron
+  SectionEnd
+
+  Section /o "Russian" SecLang_rus
+    AddSize 3680
+    !insertmacro Download_Lang_Data rus
+  SectionEnd
+
+  Section /o "Sanskrit" SecLang_san
+    AddSize 1180
+    !insertmacro Download_Lang_Data san
+  SectionEnd
+
+  Section /o "Sinhala / Sinhalese" SecLang_sin
+    AddSize 1650
+    !insertmacro Download_Lang_Data sin
+  SectionEnd
+
+  Section /o "Slovak" SecLang_slk
+    AddSize 4220
+    !insertmacro Download_Lang_Data slk
+  SectionEnd
+
+  Section /o "Slovenian" SecLang_slv
+    AddSize 2860
+    !insertmacro Download_Lang_Data slv
+  SectionEnd
+
+  Section /o "Sindhi" SecLang_snd
+    AddSize 1620
+    !insertmacro Download_Lang_Data snd
+  SectionEnd
+
+  Section /o "Spanish" SecLang_spa
+    AddSize 2190
+    !insertmacro Download_Lang_Data spa
+  SectionEnd
+
+  Section /o "Spanish (Old)" SecLang_spa_old
+    AddSize 2760
+    !insertmacro Download_Lang_Data spa_old
+  SectionEnd
+
+  Section /o "Albanian" SecLang_sqi
+    AddSize 1790
+    !insertmacro Download_Lang_Data sqi
+  SectionEnd
+
+  Section /o "Serbian" SecLang_srp
+    AddSize 2050
+    !insertmacro Download_Lang_Data srp
+  SectionEnd
+
+  Section /o "Serbian (Latin)" SecLang_srp_latn
+    AddSize 3130
+    !insertmacro Download_Lang_Data srp_latn
+  SectionEnd
+
+  Section /o "Sundanese" SecLang_sun
+    AddSize 1310
+    !insertmacro Download_Lang_Data sun
+  SectionEnd
+
+  Section /o "Swahili" SecLang_swa
+    AddSize 2070
+    !insertmacro Download_Lang_Data swa
+  SectionEnd
+
+  Section /o "Swedish" SecLang_swe
+    AddSize 3970
+    !insertmacro Download_Lang_Data swe
+  SectionEnd
+
+  Section /o "Syriac" SecLang_syr
+    AddSize 2100
+    !insertmacro Download_Lang_Data syr
+  SectionEnd
+
+ Section /o "Tamil" SecLang_tam
+    AddSize 3090
+    !insertmacro Download_Lang_Data tam
+  SectionEnd
+
+  Section /o "Tatar" SecLang_tat
+    AddSize 1020
+    !insertmacro Download_Lang_Data tat
+  SectionEnd
+
+  Section /o "Telugu" SecLang_tel
+    AddSize 2640
+    !insertmacro Download_Lang_Data tel
+  SectionEnd
+
+  Section /o "Tajik" SecLang_tgk
+    AddSize 2480
+    !insertmacro Download_Lang_Data tgk
+  SectionEnd
+
+  Section /o "Thai" SecLang_tha
+    AddSize 1020
+    !insertmacro Download_Lang_Data tha
+  SectionEnd
+
+  Section /o "Tigrinya" SecLang_tir
+    AddSize 370
+    !insertmacro Download_Lang_Data tir
+  SectionEnd
+
+ Section /o "Tonga" SecLang_ton
+    AddSize 925
+    !insertmacro Download_Lang_Data ton
+  SectionEnd
+
+  Section /o "Turkish" SecLang_tur
+    AddSize 4240
+    !insertmacro Download_Lang_Data tur
+  SectionEnd
+
+  Section /o "Uighur" SecLang_uig
+    AddSize 2660
+    !insertmacro Download_Lang_Data uig
+  SectionEnd
+
+  Section /o "Ukrainian" SecLang_ukr
+    AddSize 3650
+    !insertmacro Download_Lang_Data ukr
+  SectionEnd
+
+  Section /o "Urdu" SecLang_urd
+    AddSize 1330
+    !insertmacro Download_Lang_Data urd
+  SectionEnd
+
+  Section /o "Uzbek" SecLang_uzb
+    AddSize 6170
+    !insertmacro Download_Lang_Data uzb
+  SectionEnd
+
+  Section /o "Uzbek (Cyrillic)" SecLang_uzb_cyrl
+    AddSize 1490
+    !insertmacro Download_Lang_Data uzb_cyrl
+  SectionEnd
+
+  Section /o "Vietnamese" SecLang_vie
+    AddSize 519
+    !insertmacro Download_Lang_Data vie
+  SectionEnd
+
+  Section /o "Yiddish" SecLang_yid
+    AddSize 533
+    !insertmacro Download_Lang_Data yid
+  SectionEnd
+
+  Section /o "Yoruba" SecLang_yor
+    AddSize 941
+    !insertmacro Download_Lang_Data yor
+  SectionEnd
+
+SectionGroupEnd
+
+;--------------------------------
+;Descriptions
+  ; At first we need to localize installer for languages which supports well in tesseract: Eng, Spa, Ger, Ita, Dutch + Russian (it is authors native language)
+  ;Language strings
+  LangString DESC_SEC0001 ${LANG_RUSSIAN} "Установочные файлы."
+  ;LangString DESC_SecHelp ${LANG_RUSSIAN} "Справочная информация."
+  LangString DESC_SecCS    ${LANG_RUSSIAN} "Добавить ярлыки в меню Пуск"
+
+  LangString DESC_SEC0001 ${LANG_ENGLISH} "Installation files."
+  ;LangString DESC_SecHelp ${LANG_ENGLISH} "Help information."
+  LangString DESC_SecCS    ${LANG_ENGLISH} "Add shortcuts to Start menu."
+
+  LangString DESC_SEC0001 ${LANG_FRENCH} "Fichier d'installation."
+  ;LangString DESC_SecHelp ${LANG_FRENCH} "Aide."
+  LangString DESC_SecCS   ${LANG_FRENCH} "Ajouter des raccourcis vers le menu démarrer."
+
+  LangString DESC_SEC0001 ${LANG_GERMAN} "Dateien für die Installation."
+ ;LangString DESC_SecHelp ${LANG_GERMAN} "Hilfe."
+  LangString DESC_SecCS   ${LANG_GERMAN} "Einträge im Startmenü hinzufügen."
+
+  LangString DESC_SEC0001 ${LANG_ITALIAN} "File di installazione."
+  ;LangString DESC_SecHelp ${LANG_ITALIAN} "Guida di informazioni."
+  LangString DESC_SecCS    ${LANG_ITALIAN} "Aggiungere collegamenti al menu Start."
+
+  LangString DESC_SEC0001 ${LANG_SLOVAK} "Súbory inštalácie."
+  ;LangString DESC_SecHelp ${LANG_ENGLISH} "Pomocné informácie."
+  LangString DESC_SecCS    ${LANG_SLOVAK} "Pridať odkaz do Start menu."
+
+  LangString DESC_SEC0001 ${LANG_SPANISH} "Los archivos de instalación."
+  ;LangString DESC_SecHelp ${LANG_SPANISH} "Información de ayuda."
+  LangString DESC_SecCS    ${LANG_SPANISH} "Ańadir accesos directos al menú Inicio."
+
+  LangString DESC_SEC0001 ${LANG_SPANISHINTERNATIONAL} "Los archivos de instalación."
+  ;LangString DESC_SecHelp ${LANG_SPANISHINTERNATIONAL} "Información de ayuda."
+  LangString DESC_SecCS    ${LANG_SPANISHINTERNATIONAL} "Ańadir accesos directos al menú Inicio."
+
+  ;Assign language strings to sections
+  !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+    !insertmacro MUI_DESCRIPTION_TEXT ${SEC0001} $(DESC_SEC0001)
+    !insertmacro MUI_DESCRIPTION_TEXT ${SecCS} $(DESC_SecCS)
+  !insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+;--------------------------------
+;Uninstaller Section
+
+;Section /o -un.Main UNSEC0000
+Section -un.Main UNSEC0000
+!ifdef W64
+  SetRegView 64
+!endif
+  DetailPrint "Removing everything"
+  Delete "$SMPROGRAMS\${PRODUCT_NAME}\*.*"
+  RMDir  "$SMPROGRAMS\${PRODUCT_NAME}"
+  DetailPrint "Removing registry info"
+  DeleteRegKey HKLM "Software\Tesseract-OCR"
+  SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=1000
+
+  # remove the Add/Remove information
+  DeleteRegKey HKLM "${UNINST_KEY}"
+  Delete "${UNINST_EXE}"
+  DeleteRegValue HKLM "${REGKEY}" Path
+  DeleteRegKey /IfEmpty HKLM "${REGKEY}\Components"
+  DeleteRegKey /IfEmpty HKLM "${REGKEY}"
+  Delete "$INSTDIR\*.dll"
+  Delete "$INSTDIR\*.exe"
+  Delete "$INSTDIR\*.html"
+  Delete "$INSTDIR\doc\AUTHORS"
+  Delete "$INSTDIR\doc\LICENSE"
+  Delete "$INSTDIR\doc\README.md"
+  RMDir "$INSTDIR\doc"
+  RMDir /r "$INSTDIR\tessdata"
+  RMDir "$INSTDIR"
+SectionEnd
+
+Function PageReinstall
+
+FunctionEnd
+
+Function PageLeaveReinstall
+
+FunctionEnd
+
+!macro REMOVE_REGKEY OLD_KEY
+  StrCmp ${OLD_KEY} HKLM 0 +3
+    DeleteRegKey HKLM "${REGKEY}"
+    Goto End
+  DeleteRegKey HKCU "${REGKEY}"
+  End:
+!macroend
+
+Function .onInit
+!ifdef W64
+  SetRegView 64
+!endif
+  Call PreventMultipleInstances
+  !insertmacro MUI_LANGDLL_DISPLAY
+  ;RequestExecutionLevel admin
+  !insertmacro MULTIUSER_INIT
+
+  ; is tesseract already installed?
+  ReadRegStr $R0 HKCU "${REGKEY}" "CurrentVersion"
+  StrCpy $OLD_KEY HKCU
+  StrCmp $R0 "" TestHKLM AskUninstall
+  TestHKLM:
+    ReadRegStr $R0 HKLM "${REGKEY}" "CurrentVersion"
+    StrCpy $OLD_KEY HKLM
+    StrCmp $R0 "" SkipUnInstall
+  AskUninstall:
+    MessageBox MB_YESNO|MB_ICONEXCLAMATION \
+      "Tesseract-ocr version $R0 is installed (in $OLD_KEY)! Do you want to uninstall it first?$\nUninstall will delete all files in '$INSTDIR'!" \
+       /SD IDYES IDNO SkipUnInstall IDYES UnInstall
+  UnInstall:
+    StrCmp $OLD_KEY "HKLM" UnInst_hklm
+       DetailPrint "Uninstall: current user"
+       readRegStr $R1 HKCU "${UNINST_KEY}" "UninstallString"
+       Goto try_uninstall
+    UnInst_hklm:
+       DetailPrint "UnInstall: all users"
+       readRegStr $R1 HKLM "${UNINST_KEY}" "UninstallString"
+    try_uninstall:
+      ClearErrors
+      ExecWait '$R1 _?=$INSTDIR'$0
+      ; Check if unstaller finished ok. If yes, then try to remove it from installer.
+      StrCmp $0 0 0 +3
+        !insertmacro REMOVE_REGKEY ${OLD_KEY}
+        Goto SkipUnInstall
+      messagebox mb_ok "Uninstaller failed:\n$0\n\nYou need to remove program manually."
+  SkipUnInstall:
+    ;InitPluginsDir
+    ;File /oname=$PLUGINSDIR\splash.bmp "${NSISDIR}\Contrib\Graphics\Header\nsis.bmp"
+    ;File /oname=$PLUGINSDIR\splash.bmp "new.bmp"
+    ;advsplash::show 1000 600 400 -1 $PLUGINSDIR\splash
+    ;Pop $0          ; $0 has '1' if the user closed the splash screen early,
+                    ; '0' if everything closed normal, and '-1' if some error occurred.
+    ;IfFileExists $INSTDIR\loadmain.exe PathGood
+  ;done:
+    ; Make selection based on System language ID
+    System::Call 'kernel32::GetSystemDefaultLangID() i .r0'
+    ;http://msdn.microsoft.com/en-us/library/dd318693%28v=VS.85%29.aspx
+    StrCmp $0 "1078" Afrikaans
+    StrCmp $0 "1052" Albanian
+    StrCmp $0 "5121" Arabic
+    StrCmp $0 "1068" Azerbaijani
+    StrCmp $0 "1069" Basque
+    StrCmp $0 "1059" Belarusian
+    StrCmp $0 "1093" Bengali
+    StrCmp $0 "1026" Bulgarian
+    StrCmp $0 "1027" Catalan
+    StrCmp $0 "1116" Cherokee
+    StrCmp $0 "31748" Chinese_tra
+    StrCmp $0 "4" Chinese_sim
+    StrCmp $0 "26" Croatian
+    StrCmp $0 "1029" Czech
+    StrCmp $0 "1030" Danish
+    StrCmp $0 "2067" Dutch
+    StrCmp $0 "1061" Estonian
+    StrCmp $0 "3079" German
+    StrCmp $0 "1032" Greek
+    StrCmp $0 "1035" Finnish
+    StrCmp $0 "2060" French
+    StrCmp $0 "1037" Hebrew
+    StrCmp $0 "1081" Hindi
+    StrCmp $0 "1038" Hungarian
+    StrCmp $0 "1039" Icelandic
+    StrCmp $0 "1057" Indonesian
+    StrCmp $0 "1040" Italian
+    StrCmp $0 "1041" Japanese
+    StrCmp $0 "1099" Kannada
+    StrCmp $0 "1042" Korean
+    StrCmp $0 "1062" Latvian
+    StrCmp $0 "1063" Lithuanian
+    StrCmp $0 "1071" Macedonian
+    StrCmp $0 "1100" Malayalam
+    StrCmp $0 "2110" Malay
+    StrCmp $0 "1082" Maltese
+    StrCmp $0 "1044" Norwegian
+    StrCmp $0 "1045" Polish
+    StrCmp $0 "1046" Portuguese
+    StrCmp $0 "1048" Romanian
+    StrCmp $0 "1049" Russian
+    StrCmp $0 "1051" Slovak
+    StrCmp $0 "1060" Slovenian
+    StrCmp $0 "11274" Spanish
+    StrCmp $0 "2074" Serbian
+    StrCmp $0 "1089" Swahili
+    StrCmp $0 "2077" Swedish
+    StrCmp $0 "1097" Tamil
+    StrCmp $0 "1098" Telugu
+    StrCmp $0 "1054" Thai
+    StrCmp $0 "1055" Turkish
+    StrCmp $0 "1058" Ukrainian
+    StrCmp $0 "1066" Vietnamese
+
+    Goto lang_end
+
+    Afrikaans: !insertmacro SelectSection ${SecLang_afr}
+            Goto lang_end
+    Albanian: !insertmacro SelectSection ${SecLang_sqi}
+            Goto lang_end
+    Arabic: !insertmacro SelectSection ${SecLang_ara}
+            Goto lang_end
+    ;Assamese: !insertmacro SelectSection ${SecLang_asm}
+    ;        Goto lang_end
+    Azerbaijani: !insertmacro SelectSection ${SecLang_aze}
+            Goto lang_end
+    Basque: !insertmacro SelectSection ${SecLang_eus}
+            Goto lang_end
+    Belarusian: !insertmacro SelectSection ${SecLang_bel}
+            Goto lang_end
+    Bengali: !insertmacro SelectSection ${SecLang_ben}
+            Goto lang_end
+    Bulgarian: !insertmacro SelectSection ${SecLang_bul}
+            Goto lang_end
+    Catalan: !insertmacro SelectSection ${SecLang_cat}
+            Goto lang_end
+    Cherokee: !insertmacro SelectSection ${SecLang_chr}
+            Goto lang_end
+    Chinese_tra: !insertmacro SelectSection ${SecLang_chi_tra}
+            Goto lang_end
+    Chinese_sim: !insertmacro SelectSection ${SecLang_chi_sim}
+            Goto lang_end
+    Croatian: !insertmacro SelectSection ${SecLang_hrv}
+            Goto lang_end
+    Czech: !insertmacro SelectSection ${SecLang_ces}
+            Goto lang_end
+    Danish: !insertmacro SelectSection ${SecLang_dan}
+            Goto lang_end
+    Dutch: !insertmacro SelectSection ${SecLang_nld}
+            Goto lang_end
+    Estonian: !insertmacro SelectSection ${SecLang_hrv}
+            Goto lang_end
+    German: !insertmacro SelectSection ${SecLang_deu}
+            Goto lang_end
+    Greek: !insertmacro SelectSection ${SecLang_ell}
+            !insertmacro SelectSection ${SecLang_grc}
+            Goto lang_end
+    Finnish: !insertmacro SelectSection ${SecLang_fin}
+            !insertmacro SelectSection ${SecLang_frm}
+            Goto lang_end
+    French: !insertmacro SelectSection ${SecLang_fra}
+            Goto lang_end
+    Hebrew: !insertmacro SelectSection ${SecLang_heb}
+            ;!insertmacro SelectSection ${SecLang_heb_com}
+            Goto lang_end
+    Hungarian: !insertmacro SelectSection ${SecLang_hin}
+            Goto lang_end
+    Hindi: !insertmacro SelectSection ${SecLang_hun}
+            Goto lang_end
+    Icelandic: !insertmacro SelectSection ${SecLang_isl}
+            Goto lang_end
+    Indonesian: !insertmacro SelectSection ${SecLang_ind}
+            Goto lang_end
+    Italian: !insertmacro SelectSection ${SecLang_ita}
+            !insertmacro SelectSection ${SecLang_ita_old}
+            Goto lang_end
+    Japanese: !insertmacro SelectSection ${SecLang_jpn}
+            Goto lang_end
+    Kannada: !insertmacro SelectSection ${SecLang_kan}
+            Goto lang_end
+    Korean: !insertmacro SelectSection ${SecLang_kor}
+            Goto lang_end
+    Latvian: !insertmacro SelectSection ${SecLang_lav}
+            Goto lang_end
+    Lithuanian: !insertmacro SelectSection ${SecLang_lit}
+            Goto lang_end
+    Macedonian: !insertmacro SelectSection ${SecLang_mkd}
+            Goto lang_end
+    Malayalam: !insertmacro SelectSection ${SecLang_msa}
+            Goto lang_end
+    Malay: !insertmacro SelectSection ${SecLang_mal}
+            Goto lang_end
+    Maltese: !insertmacro SelectSection ${SecLang_mlt}
+            Goto lang_end
+    Norwegian: !insertmacro SelectSection ${SecLang_nor}
+            Goto lang_end
+    Polish: !insertmacro SelectSection ${SecLang_pol}
+            Goto lang_end
+    Portuguese: !insertmacro SelectSection ${SecLang_por}
+            Goto lang_end
+    Romanian: !insertmacro SelectSection ${SecLang_ron}
+            Goto lang_end
+    Russian: !insertmacro SelectSection ${SecLang_rus}
+            Goto lang_end
+    Slovak: !insertmacro SelectSection ${SecLang_slk}
+            Goto lang_end
+    Slovenian: !insertmacro SelectSection ${SecLang_slv}
+            Goto lang_end
+    Spanish: !insertmacro SelectSection ${SecLang_spa}
+            !insertmacro SelectSection ${SecLang_spa_old}
+            Goto lang_end
+    Serbian: !insertmacro SelectSection ${SecLang_srp}
+            Goto lang_end
+    Swahili: !insertmacro SelectSection ${SecLang_swa}
+            Goto lang_end
+    Swedish: !insertmacro SelectSection ${SecLang_swe}
+            Goto lang_end
+    Tamil: !insertmacro SelectSection ${SecLang_tam}
+            Goto lang_end
+    Telugu: !insertmacro SelectSection ${SecLang_tel}
+            Goto lang_end
+    Thai: !insertmacro SelectSection ${SecLang_tha}
+            Goto lang_end
+    Turkish: !insertmacro SelectSection ${SecLang_tur}
+            Goto lang_end
+    Ukrainian: !insertmacro SelectSection ${SecLang_ukr}
+            Goto lang_end
+    Vietnamese: !insertmacro SelectSection ${SecLang_vie}
+
+    lang_end:
+FunctionEnd
+
+Function un.onInit
+  !insertmacro MUI_LANGDLL_DISPLAY
+  !insertmacro MULTIUSER_UNINIT
+  ;!insertmacro SELECT_UNSECTION Main ${UNSEC0000}
+  ;!insertmacro MUI_UNGETLANGUAGE
+FunctionEnd
+
+Function .onInstFailed
+  MessageBox MB_OK "Installation failed."
+FunctionEnd
+
+!ifdef SHOW_README
+Function ShowReadme
+  Exec '"wordpad" "doc\README.md"'
+  ;BringToFront
+FunctionEnd
+!endif
+
+; Prevent running multiple instances of the installer
+Function PreventMultipleInstances
+  ; TODO: Does not work.
+  Push $R0
+  System::Call 'kernel32::CreateMutexA(i 0, i 0, t ${PRODUCT_NAME}) ?e'
+  Pop $R0
+  StrCmp $R0 0 +3
+    MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running." /SD IDOK
+    Abort
+  Pop $R0
+FunctionEnd