tesseract/nsis/tesseract.nsi
Stefan Weil 3ec34f1755 Don't install tesseract.exe twice in Tesseract installer for Windows
The pattern for the training tools *.exe also includes tesseract.exe,
so it must be excluded explicitly.

Add also a macro BINDIR which simplifies the NSIS rules.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
2024-11-06 21:44:50 +01:00

1446 lines
40 KiB
Plaintext

; (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