; (C) Copyright 2010, Sergey Bronnikov ; impoved by Zdenko Podobný (C) 2010 ; ; 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. ; TODO: ; - check that tesseract was already installed ; - insert sexy tesseract logos and artwork in installer instead default pictures ;) ; - add installation of language files ; - improve localization !define VERSION 3.00.1 !define PRODUCT_NAME "Tesseract-OCR" !define PRODUCT_VERSION "${VERSION}" !define PRODUCT_PUBLISHER "" !define PRODUCT_WEB_SITE "http://code.google.com/p/tesseract-ocr" ;!define PRODUCT_DIR_REGKEY "Software/Microsoft" ;!define PRODUCT_UNINST_KEY "Software/Microsoft" ;!define PRODUCT_UNINST_ROOT_KEY "Software/Microsoft" SetCompressor lzma Name "Tesseract-OCR ${VERSION}" Caption "Tesseract-OCR ${VERSION}" ;Icon "icon_1.ico" ;UninstallIcon "install_icon.ico" BrandingText /TRIMCENTER "(c) 2010 Tesseract-OCR " InstallDir "$PROGRAMFILES\Tesseract-OCR" InstallDirRegKey HKCU "Software\Tesseract-OCR" "" ShowInstDetails show XPStyle on SpaceTexts CRCCheck on InstProgressFlags smooth colored ;Name of program and file !ifdef VERSION OutFile tesseract-ocr-setup-${VERSION}.exe !else OutFile tesseract-ocr-setup.exe !endif !include "MUI.nsh" #!include MUI2.nsh !include "LogicLib.nsh" !include "EnvVarUpdate.nsh" Function .onInit MessageBox MB_YESNO|MB_ICONQUESTION "Do you want to install ${PRODUCT_NAME} ${VERSION}?" \ /SD IDYES IDNO no IDYES yes no: SetSilent silent Goto done yes: SetSilent normal ;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 occured. ;IfFileExists $INSTDIR\loadmain.exe PathGood done: # check if tesseract is not installed readRegStr $R0 HKCU "Software\Tesseract-OCR" "CurrentVersion" StrCmp $R0 "" done2 MessageBox MB_YESNO|MB_ICONEXCLAMATION "Tesseract-ocr version $R0 is installed! Do you want to uninstall it first?" \ /SD IDYES IDNO done2 IDYES yes2 yes2: readRegStr $R1 HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "UninstallString" ClearErrors ExecWait '$R1 _?=$INSTDIR' done2: FunctionEnd Function un.onInit ;!insertmacro MUI_UNGETLANGUAGE FunctionEnd Function .onInstFailed MessageBox MB_OK "Installation failed." FunctionEnd Function ShowReadme Exec "explorer.exe $INSTDIR\doc\README" BringToFront FunctionEnd ;MUI Settings !define MUI_ABORTWARNING ;!define MUI_ICON "install_icon.ico" ;!define MUI_UNICON "uninstall_icon.ico" ;Welcome page !define MUI_HEADERIMAGE ; ;!define MUI_HEADERIMAGE_BITMAP "452.bmp" ;!define MUI_HEADERIMAGE_UNBITMAP "452.bmp" !define MUI_HEADERIMAGE_BITMAP_NOSTRETCH ;;!define MUI_HEADERIMAGE_RIGHT ;!define MUI_WELCOMEFINISHPAGE_BITMAP "logo.bmp" !define MUI_WELCOMEPAGE_TITLE_3LINES !define MUI_COMPONENTSPAGE_SMALLDESC ;-------------------------------- ;Pages ;License page !define MUI_LICENSEPAGE_CHECKBOX ;!define MUI_LICENSEPAGE_TEXT "$(License)" ;!insertmacro MUI_PAGE_LICENSE "${MUI_LICENSEPAGE_TEXT}" !insertmacro MUI_PAGE_LICENSE "doc/COPYING" !ifdef VERSION Page custom PageReinstall PageLeaveReinstall !endif !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !define MUI_FINISHPAGE_LINK "http://code.google.com/p/tesseract-ocr/" !define MUI_FINISHPAGE_LINK_LOCATION "http://code.google.com/p/tesseract-ocr/" ;!define MUI_FINISHPAGE_RUN "$INSTDIR\tesseract.exe" ;!define MUI_FINISHPAGE_NOREBOOTSUPPORT !define MUI_FINISHPAGE_SHOWREADME "notepad $INSTDIR\doc\README" !define MUI_FINISHPAGE_SHOWREADME_FUNCTION ShowReadme !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ;!insertmacro MUI_UNPAGE_FINISH ;-------------------------------- ;Languages !insertmacro MUI_LANGUAGE "English" ;!insertmacro MUI_LANGUAGE "Indonesian" ;!insertmacro MUI_LANGUAGE "Irish" !insertmacro MUI_LANGUAGE "Italian" ;!insertmacro MUI_LANGUAGE "Japanese" ;!insertmacro MUI_LANGUAGE "Korean" ;!insertmacro MUI_LANGUAGE "Kurdish" ;!insertmacro MUI_LANGUAGE "Latvian"" ;!insertmacro MUI_LANGUAGE "Lithuanian" ;!insertmacro MUI_LANGUAGE "Luxembourgish" ;!insertmacro MUI_LANGUAGE "Macedonian" ;!insertmacro MUI_LANGUAGE "Malay" ;!insertmacro MUI_LANGUAGE "Mongolian" ;!insertmacro MUI_LANGUAGE "Norwegian" ;!insertmacro MUI_LANGUAGE "NorwegianNynorsk" ;!insertmacro MUI_LANGUAGE "Polish" ;!insertmacro MUI_LANGUAGE "Portuguese" ;!insertmacro MUI_LANGUAGE "PortugueseBR" ;!insertmacro MUI_LANGUAGE "Romanian" !insertmacro MUI_LANGUAGE "Russian" ;!insertmacro MUI_LANGUAGE "Serbian" ;!insertmacro MUI_LANGUAGE "SerbianLatin" ;!insertmacro MUI_LANGUAGE "SimpChinese" !insertmacro MUI_LANGUAGE "Slovak" ;!insertmacro MUI_LANGUAGE "Slovenian" !insertmacro MUI_LANGUAGE "Spanish" !insertmacro MUI_LANGUAGE "SpanishInternational" ;!insertmacro MUI_LANGUAGE "Swedish" ;!insertmacro MUI_LANGUAGE "Thai" ;!insertmacro MUI_LANGUAGE "TradChinese" ;!insertmacro MUI_LANGUAGE "Turkish" ;!insertmacro MUI_LANGUAGE "Ukrainian" ;!insertmacro MUI_LANGUAGE "Uzbek" ;!insertmacro MUI_LANGUAGE "Welsh" ;-------------------------------- ;Installer Sections ShowInstDetails show InstProgressFlags smooth colored Section "Tesseract-OCR" SecDummy SetOutPath "$INSTDIR" ;files inclided in distribution File leptonlib.dll File tesseract.exe CreateDirectory "$INSTDIR\tessdata" SetOutPath "$INSTDIR\tessdata" File tessdata\eng.traineddata CreateDirectory "$INSTDIR\tessdata\configs" SetOutPath "$INSTDIR\tessdata\configs" File tessdata\configs\ambigs.train File tessdata\configs\api_config File tessdata\configs\box.train File tessdata\configs\box.train.stderr File tessdata\configs\digits File tessdata\configs\inter File tessdata\configs\kannada File tessdata\configs\logfile File tessdata\configs\makebox File tessdata\configs\unlv CreateDirectory "$INSTDIR\tessdata\tessconfigs" SetOutPath "$INSTDIR\tessdata\tessconfigs" File tessdata\tessconfigs\batch File tessdata\tessconfigs\batch.nochop File tessdata\tessconfigs\matdemo File tessdata\tessconfigs\msdemo File tessdata\tessconfigs\nobatch File tessdata\tessconfigs\segdemo CreateDirectory "$INSTDIR\training" SetOutPath "$INSTDIR\training" File training\cntraining.exe File training\combine_tessdata.exe File training\mftraining.exe File training\unicharset_extractor.exe File training\wordlist2dawg.exe CreateDirectory "$INSTDIR\doc" SetOutPath "$INSTDIR\doc" File doc\AUTHORS File doc\COPYING File doc\eurotext.tif File doc\phototest.tif File doc\README File doc\ReleaseNotes ;Store installation folder WriteRegStr HKCU "Software\Tesseract-OCR" "InstallDir" $INSTDIR WriteRegStr HKCU "Software\Tesseract-OCR" "CurrentVersion" "${VERSION}" WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "Tesseract-OCR" "C:\Program Files\Tesseract-OCR\tesseract.exe" ; include for some of the windows messages defines !include "winmessages.nsh" ; HKLM (all users) vs HKCU (current user) defines !define env_hklm 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' !define env_hkcu 'HKCU "Environment"' ; set variable ; append bin path to user PATH environment variable ReadRegStr $0 HKCU "Environment" "PATH" WriteRegExpandStr HKCU "Environment" "PATH" "$INSTDIR;$INSTDIR\training;$0" #${EnvVarUpdate} $0 "PATH" "A" "HKLM" "$0;$INSTDIR" # this command destroys long variables like path... ${EnvVarUpdate} $0 "TESSDATA_PREFIX" "A" "HKCU" "$INSTDIR\" ; make sure windows knows about the change SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 ; Would be nice to download language files during installation (as Google Chrome do) ; Download language files ;StrCpy $2 "$INSTDIR\$1" ;StrCpy $1 "tesseract-2.00.deu.tar.gz" ;NSISdl::download "http://tesseract-ocr.googlecode.com/files/tesseract-2.00.deu.tar.gz" $INSTDIR ;NSISdl::download "http://tesseract-ocr.googlecode.com/files/$1" $2 ;StrCpy $1 "tesseract-2.00.eng.tar.gz" ;NSISdl::download "http://tesseract-ocr.googlecode.com/files/$1" $2 ;StrCpy $1 "tesseract-2.00.fra.tar.gz" ;NSISdl::download "http://tesseract-ocr.googlecode.com/files/$1" $2 ;StrCpy $1 "tesseract-2.00.ita.tar.gz" ;NSISdl::download "http://tesseract-ocr.googlecode.com/files/$1" $2 ;StrCpy $1 "tesseract-2.00.nld.tar.gz" ;NSISdl::download "http://tesseract-ocr.googlecode.com/files/$1" $2 ;StrCpy $1 "tesseract-2.01.por.tar.gz" ;NSISdl::download "http://tesseract-ocr.googlecode.com/files/$1" $2 ;StrCpy $1 "tesseract-2.00.spa.tar.gz" ;NSISdl::download "http://tesseract-ocr.googlecode.com/files/$1" $2 ;Quit ;Create uninstaller WriteUninstaller "$INSTDIR\Uninstall.exe" ;ExecShell "open" "http://code.google.com/p/tesseract-ocr/" ;ExecShell "open" '"$INSTDIR"' ;BringToFront ; Register to Add/Remove program in control panel WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayName" "${PRODUCT_NAME} ${VERSION} - open source OCR engine" WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "UninstallString" '"$INSTDIR\uninstall.exe"' WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "QuietUninstallString" '"$INSTDIR\uninstall.exe" /S' SectionEnd ;Section "Help" SecHelp ;CreateDirectory "$INSTDIR\Help" ;SetOutPath "$INSTDIR\Help" ;File "README" ;File "COPYING" ;SectionEnd Section "Shortcuts creation" SecCS CreateDirectory "$SMPROGRAMS\Tesseract-OCR" CreateShortCut "$SMPROGRAMS\Tesseract-OCR\Tesseract-OCR.lnk" "$INSTDIR\tesseract.exe" "" "$INSTDIR\tesseract.exe" 0 CreateShortCut "$SMPROGRAMS\Tesseract-OCR\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.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 ;Section "Languages support" SecLanguage ;SectionEnd ;-------------------------------- ;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_SecDummy ${LANG_RUSSIAN} "???????????? ?????." ;LangString DESC_SecHelp ${LANG_RUSSIAN} "?????????? ??????????." LangString DESC_SecCS ${LANG_RUSSIAN} "???????? ?????? ???? ????" LangString DESC_SecDummy ${LANG_ENGLISH} "Installation files." ;LangString DESC_SecHelp ${LANG_ENGLISH} "Help information." LangString DESC_SecCS ${LANG_ENGLISH} "Add shortcuts to Start menu." LangString DESC_SecDummy ${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_SecDummy ${LANG_SLOVAK} "Súbory inštalácie." ;LangString DESC_SecHelp ${LANG_ENGLISH} "Help information." LangString DESC_SecCS ${LANG_SLOVAK} "Pridať odkaz do Start menu." LangString DESC_SecDummy ${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_SecDummy ${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 ${SecDummy} $(DESC_SecDummy) !insertmacro MUI_DESCRIPTION_TEXT ${SecCS} $(DESC_SecCS) !insertmacro MUI_FUNCTION_DESCRIPTION_END ;-------------------------------- ;Uninstaller Section Section "Uninstall" !define MUI_FINISHPAGE_SHOWREADME !define MUI_FINISHPAGE_SHOWREADME_TEXT "Create desktop shortcut" !define MUI_FINISHPAGE_SHOWREADME_FUNCTION CreateDeskShortcut DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Run\Tesseract-OCR" DeleteRegKey /ifempty HKCU "Software\Tesseract-OCR" ; delete variable ${un.EnvVarUpdate} $0 "PATH" "R" "HKCU" $INSTDIR ${un.EnvVarUpdate} $0 "PATH" "R" "HKCU" "$INSTDIR\training" DeleteRegValue ${env_hklm} "TESSDATA_PREFIX" ; make sure windows knows about the change SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 Delete "$INSTDIR\*.*" Delete "$SMPROGRAMS\Tesseract-OCR\*.*" Delete "$INSTDIR\training\*.*" Delete "$INSTDIR\doc\*.*" Delete "$INSTDIR\tessdata\*.*" Delete "$INSTDIR\tessdata\configs\*.*" Delete "$INSTDIR\tessdata\tessconfigs\*.*" RMDir "$INSTDIR\training" RMDir "$INSTDIR\doc" RMDir "$INSTDIR\tessdata\configs" RMDir "$INSTDIR\tessdata\tessconfigs" RMDir "$INSTDIR\tessdata" ;Delete "$DESKTOP\Tesseract-OCR.lnk" ;Delete "$QUICKLAUNCH\Tesseract-OCR.lnk" RMDir "$INSTDIR" RMDir "$SMPROGRAMS\Tesseract-OCR" ; remove the Add/Remove information DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" SectionEnd Function PageReinstall FunctionEnd Function PageLeaveReinstall FunctionEnd