lyx_mirror/development/Win32/packaging/installer/include/init.nsh
Uwe Stöhr 62cbf893d2 Windows installer: add 3 new features/bugfixes
As discussed with Vincent I added 3 new features:

* LyX can now also be installed over an existing installation of the same LyX version if the users really wants this.
(A message box appears recommending not to do so for test releases and when there are problems with an existing installation of the same release.)
* LyX can now also be installed if the uninstaller executable of a former LyX was accidentally deleted.
(That this case was not handled was more a bug. Thanks Vicent for the pointer.)
* If a user set MiKTeX's automatic package installation to "No" the installer will.
(As discussed with Vincent, if a user has disabled this MiKTeX feature he most probably know the consequences. So respect his decision.)
  respect that and not re-enable it.

I would be happy if anybody can spend a translation of the changed installer message.
2014-04-19 18:58:22 +02:00

1446 lines
36 KiB
Plaintext
Raw Blame History

/*
init.nsh
Initialization functions
*/
#--------------------------------
# User initialization
Var ComponentPath
Var LyXLangName
# COMPONENT can be LaTeX, ImageMagick and Ghostscript
!macro EXTERNAL_INIT COMPONENT
# APP_REGKEY_SETUP = "Software\${APP_NAME}${APP_SERIES_KEY}\Setup"
# where ${APP_NAME}${APP_SERIES_KEY} is something like LyX16
ReadRegStr $ComponentPath SHELL_CONTEXT "${APP_REGKEY_SETUP}" "${COMPONENT} Path"
# BIN_LATEX etc are defined in settings.nsh
${If} ${FileExists} "$ComponentPath\${BIN_${COMPONENT}}"
# set variables like PathLaTeX
StrCpy $Path${COMPONENT} $ComponentPath
${EndIf}
!macroend
Function InitUser
# Get directories of components from registry
!insertmacro EXTERNAL_INIT LaTeX
# Get LyX language
ReadRegStr $LyXLangName SHELL_CONTEXT "${APP_REGKEY_SETUP}" "LyX Language"
${If} $LyXLangName != ""
StrCpy $LangName $LyXLangName
${EndIf}
FunctionEnd
#--------------------------------
# visible installer sections
Section "!${APP_NAME}" SecCore
SectionIn RO
SectionEnd
Section "$(SecFileAssocTitle)" SecFileAssoc
StrCpy $CreateFileAssociations "true"
SectionEnd
Section "$(SecDesktopTitle)" SecDesktop
StrCpy $CreateDesktopIcon "true"
SectionEnd
!if ${SETUPTYPE} == BUNDLE
Section /o "$(SecInstJabRefTitle)" SecInstJabRef
AddSize ${SIZE_JABREF}
StrCpy $InstallJabRef "true"
SectionEnd
!endif
# Expand the list of dictionaries by default as this was requested by several
# users. For the thesaurus this is was not requested because this section
# is by default empty.
SectionGroup /e "Dictionaries" SecDictionaries
Section /o "Afrikaans" SecDAfrikaans
StrCpy $DictCodes "af_ZA,$DictCodes"
AddSize 1440
SectionEnd
Section /o "Arabic" SecDArabic
StrCpy $DictCodes "ar_DZ,$DictCodes"
AddSize 2500
SectionEnd
Section /o "Armenian" SecDArmenian
StrCpy $DictCodes "hy_AM,$DictCodes"
AddSize 2000
SectionEnd
Section /o "Bahasa Indonesia" SecDIndonesian
StrCpy $DictCodes "id_ID,$DictCodes"
AddSize 217
SectionEnd
Section /o "Bahasa Melayu" SecDMalayan
StrCpy $DictCodes "ms_MY,$DictCodes"
AddSize 227
SectionEnd
Section /o "Belarusian" SecDBelarusian
StrCpy $DictCodes "be_BY,$DictCodes"
AddSize 1730
SectionEnd
Section /o "Brezhoneg" SecDBreton
StrCpy $DictCodes "br_FR,$DictCodes"
AddSize 5510
SectionEnd
Section /o "Bulgarian" SecDBulgarian
StrCpy $DictCodes "bg_BG,$DictCodes"
AddSize 985
SectionEnd
Section /o "Catal<61>" SecDCatalanian
StrCpy $DictCodes "ca_ES,$DictCodes"
AddSize 1210
SectionEnd
Section /o "Ce<43>tina" SecDCzech
StrCpy $DictCodes "cs_CZ,$DictCodes"
AddSize 2190
SectionEnd
Section /o "Coptic" SecDCoptic
StrCpy $DictCodes "cop_EG,$DictCodes"
AddSize 151
SectionEnd
Section /o "Cymraeg" SecDWelsh
StrCpy $DictCodes "cy_GB,$DictCodes"
AddSize 1540
SectionEnd
Section /o "Dansk" SecDDanish
StrCpy $DictCodes "da_DK,$DictCodes"
AddSize 2470
SectionEnd
Section /o "German (A)" SecDGermanAT
StrCpy $DictCodes "de_AT,$DictCodes"
AddSize 3620
SectionEnd
Section /o "German (CH)" SecDGermanCH
StrCpy $DictCodes "de_CH,$DictCodes"
AddSize 3620
SectionEnd
Section "German (D)" SecDGermanD
# already installed by default
SectionIn RO
#StrCpy $DictCodes "de_DE,$DictCodes"
AddSize 3620
SectionEnd
Section /o "Greek" SecDGreek
StrCpy $DictCodes "el_GR,$DictCodes"
AddSize 6550
SectionEnd
Section /o "Eesti" SecDEstonian
StrCpy $DictCodes "et_EE,$DictCodes"
AddSize 4400
SectionEnd
Section /o "English (AU)" SecDEnglishAU
StrCpy $DictCodes "en_AU,$DictCodes"
AddSize 587
SectionEnd
Section /o "English (CA)" SecDEnglishCA
StrCpy $DictCodes "en_CA,$DictCodes"
AddSize 690
SectionEnd
Section "English (GB)" SecDEnglishGB
# already installed by default
SectionIn RO
#StrCpy $DictCodes "en_GB,$DictCodes"
AddSize 757
SectionEnd
Section /o "English (NZ)" SecDEnglishNZ
StrCpy $DictCodes "en_NZ,$DictCodes"
AddSize 551
SectionEnd
Section "English (US)" SecDEnglishUS
# already installed by default
SectionIn RO
#StrCpy $DictCodes "en_US,$DictCodes"
AddSize 688
SectionEnd
Section "Espa<70>ol (ES)" SecDSpanishES
# already installed by default
SectionIn RO
#StrCpy $DictCodes "es_ES,$DictCodes"
AddSize 974
SectionEnd
Section "Espa<70>ol (MX)" SecDSpanishMX
# already installed by default
SectionIn RO
#StrCpy $DictCodes "es_MX,$DictCodes"
AddSize 924
SectionEnd
Section /o "Esperanto" SecDEsperanto
StrCpy $DictCodes "eo_EO,$DictCodes"
AddSize 389
SectionEnd
Section /o "Euskara" SecDBasque
StrCpy $DictCodes "eu_ES,$DictCodes"
AddSize 4850
SectionEnd
Section /o "Farsi" SecDFarsi
StrCpy $DictCodes "fa_IR,$DictCodes"
AddSize 6710
SectionEnd
Section "Fran<61>ais" SecDFrench
# already installed by default
SectionIn RO
#StrCpy $DictCodes "fr_FR,$DictCodes"
AddSize 1200
SectionEnd
Section /o "Fran<61>ais (Canada)" SecDFrenchCanada
StrCpy $DictCodes "fr_CA,$DictCodes"
AddSize 1390
SectionEnd
Section /o "Gaeilge" SecDGaelic
StrCpy $DictCodes "ga_IR,$DictCodes"
AddSize 1090
SectionEnd
Section /o "G<>idhlig" SecDScottish
StrCpy $DictCodes "gd_GB,$DictCodes"
AddSize 2504
SectionEnd
Section /o "Galego" SecDGalician
StrCpy $DictCodes "gl_ES,$DictCodes"
AddSize 3911
SectionEnd
Section /o "Hebrew" SecDHebrew
StrCpy $DictCodes "he_IL,$DictCodes"
AddSize 3120
SectionEnd
Section /o "Hrvatski" SecDCroatian
StrCpy $DictCodes "hr_HR,$DictCodes"
AddSize 2240
SectionEnd
Section /o "Magyar" SecDHungarian
StrCpy $DictCodes "hu_HU,$DictCodes"
AddSize 3380
SectionEnd
Section /o "Hindi" SecDHindi
StrCpy $DictCodes "hi_IN,$DictCodes"
AddSize 1900
SectionEnd
Section /o "Interlingua" SecDInterlingua
StrCpy $DictCodes "ia_IA,$DictCodes"
AddSize 613
SectionEnd
Section /o "<22>slenska" SecDIcelandic
StrCpy $DictCodes "is_IS,$DictCodes"
AddSize 2320
SectionEnd
Section /o "Italiano" SecDItalian
StrCpy $DictCodes "it_IT,$DictCodes"
AddSize 1380
SectionEnd
Section /o "Kazakh" SecDKazakh
StrCpy $DictCodes "kk_KZ,$DictCodes"
AddSize 2120
SectionEnd
Section /o "Korean" SecDKorean
StrCpy $DictCodes "ko_KR,$DictCodes"
AddSize 16540
SectionEnd
Section /o "Latina" SecDLatin
StrCpy $DictCodes "la_LA,$DictCodes"
AddSize 2040
SectionEnd
Section /o "Lietuviu" SecDLithuanian
StrCpy $DictCodes "lt_LT,$DictCodes"
AddSize 1320
SectionEnd
Section /o "Latvie<69>u" SecDLatvian
StrCpy $DictCodes "lv_LV,$DictCodes"
AddSize 2243
SectionEnd
Section /o "Marathi" SecDMarathi
StrCpy $DictCodes "mr_IN,$DictCodes"
AddSize 5290
SectionEnd
Section /o "Nederlands" SecDDutch
StrCpy $DictCodes "nl_NL,$DictCodes"
AddSize 1820
SectionEnd
Section /o "Norsk (Bokm<6B>l)" SecDNorwegianNB
StrCpy $DictCodes "nb_NO,$DictCodes"
AddSize 3992
SectionEnd
Section /o "Norsk (Nynorsk)" SecDNorwegianNN
StrCpy $DictCodes "nn_NO,$DictCodes"
AddSize 1515
SectionEnd
Section /o "Occitan" SecDOccitan
StrCpy $DictCodes "oc_FR,$DictCodes"
AddSize 31710
SectionEnd
Section /o "Polski" SecDPolish
StrCpy $DictCodes "pl_PL,$DictCodes"
AddSize 4540
SectionEnd
Section /o "Portugu<67>s (BR)" SecDPortugueseBR
StrCpy $DictCodes "pt_BR,$DictCodes"
AddSize 5280
SectionEnd
Section /o "Portugu<67>s (PT)" SecDPortuguesePT
StrCpy $DictCodes "pt_PT,$DictCodes"
AddSize 1595
SectionEnd
Section /o "Rom<6F>na" SecDRomanian
StrCpy $DictCodes "ro_RO,$DictCodes"
AddSize 2255
SectionEnd
Section /o "Russian" SecDRussian
StrCpy $DictCodes "ru_RU,$DictCodes"
AddSize 1920
SectionEnd
Section /o "Serb<72>cina (Dolno)" SecDSorbianD
StrCpy $DictCodes "dsb_DE,$DictCodes"
AddSize 1035
SectionEnd
Section /o "Serb<72>cina (Horno)" SecDSorbianH
StrCpy $DictCodes "hsb_DE,$DictCodes"
AddSize 740
SectionEnd
Section /o "Shqipe" SecDAlbanian
StrCpy $DictCodes "sq_AL,$DictCodes"
AddSize 2400
SectionEnd
Section /o "Sloven<65>cina" SecDSlovenian
StrCpy $DictCodes "sl_SI,$DictCodes"
AddSize 2910
SectionEnd
Section /o "Slovensk<73>" SecDSlovakian
StrCpy $DictCodes "sk_SK,$DictCodes"
AddSize 3310
SectionEnd
Section /o "Srpski (Cirilica)" SecDSerbianC
StrCpy $DictCodes "sr_RS,$DictCodes"
AddSize 4401
SectionEnd
Section /o "Srpski (Latinica)" SecDSerbianL
StrCpy $DictCodes "sr_RS-Latin,$DictCodes"
AddSize 2843
SectionEnd
Section /o "Svenska" SecDSwedish
StrCpy $DictCodes "sv_SE,$DictCodes"
AddSize 2028
SectionEnd
Section /o "Tamil" SecDTamil
StrCpy $DictCodes "ta_IN,$DictCodes"
AddSize 5911
SectionEnd
Section /o "Telugu" SecDTelugu
StrCpy $DictCodes "te_IN,$DictCodes"
AddSize 3400
SectionEnd
Section /o "Thai" SecDThai
StrCpy $DictCodes "th_TH,$DictCodes"
AddSize 351
SectionEnd
Section /o "T<>rkmen<65>e" SecDTurkmen
StrCpy $DictCodes "tk_TM,$DictCodes"
AddSize 950
SectionEnd
Section /o "Ukrainian" SecDUkrainian
StrCpy $DictCodes "uk_UA,$DictCodes"
AddSize 3077
SectionEnd
Section /o "Urdu" SecDUrdu
StrCpy $DictCodes "ur_PK,$DictCodes"
AddSize 1401
SectionEnd
Section /o "Vietnamese" SecDVietnamese
StrCpy $DictCodes "vi_VN,$DictCodes"
AddSize 40
SectionEnd
SectionGroupEnd
SectionGroup "Thesaurus" SecThesaurus
Section /o "Bulgarian" SecTBulgarian
StrCpy $ThesCodes "bg_BG,$ThesCodes"
AddSize 3020
SectionEnd
Section /o "Catal<61>" SecTCatalan
StrCpy $ThesCodes "ca_ES,$ThesCodes"
AddSize 731
SectionEnd
Section /o "Ce<43>tina" SecTCzech
StrCpy $ThesCodes "cs_CZ,$ThesCodes"
AddSize 635
SectionEnd
Section /o "Dansk" SecTDanish
StrCpy $ThesCodes "da_DK,$ThesCodes"
AddSize 2360
SectionEnd
Section /o "Deutsch (D/A)" SecTGermanDA
StrCpy $ThesCodes "de_DE,$ThesCodes"
AddSize 14600
SectionEnd
Section /o "Deutsch (CH)" SecTGermanCH
StrCpy $ThesCodes "de_CH,$ThesCodes"
AddSize 14600
SectionEnd
Section /o "English (GB)" SecTEnglishGB
StrCpy $ThesCodes "en_GB,$ThesCodes"
AddSize 14300
SectionEnd
Section /o "English (US/AU)" SecTEnglishUSAU
StrCpy $ThesCodes "en_US,$ThesCodes"
AddSize 21600
SectionEnd
Section /o "Espa<70>ol" SecTSpanish
StrCpy $ThesCodes "es_ES,$ThesCodes"
AddSize 2860
SectionEnd
Section /o "Fran<61>ais" SecTFrench
StrCpy $ThesCodes "fr_FR,$ThesCodes"
AddSize 5060
SectionEnd
Section /o "Gaeilge" SecTGaelic
StrCpy $ThesCodes "ga_IR,$ThesCodes"
AddSize 30600
SectionEnd
Section /o "Galego" SecTGalician
StrCpy $ThesCodes "gl_ES,$ThesCodes"
AddSize 510
SectionEnd
Section /o "Greek" SecTGreek
StrCpy $ThesCodes "el_GR,$ThesCodes"
AddSize 903
SectionEnd
Section /o "<22>slenska" SecTIcelandic
StrCpy $ThesCodes "is_IS,$ThesCodes"
AddSize 63
SectionEnd
Section /o "Italiano" SecTItalian
StrCpy $ThesCodes "it_IT,$ThesCodes"
AddSize 2520
SectionEnd
Section /o "Magyar" SecTHungarian
StrCpy $ThesCodes "hu_HU,$ThesCodes"
AddSize 632
SectionEnd
Section /o "Norsk (Bokm<6B>l)" SecTNorwegianNB
StrCpy $ThesCodes "nb_NO,$ThesCodes"
AddSize 2535
SectionEnd
Section /o "Polski" SecTPolish
StrCpy $ThesCodes "pl_PL,$ThesCodes"
AddSize 5580
SectionEnd
Section /o "Portugu<67>s" SecTPortuguese
StrCpy $ThesCodes "pt_PT,$ThesCodes"
AddSize 860
SectionEnd
Section /o "Rom<6F>na" SecTRomanian
StrCpy $ThesCodes "ro_RO,$ThesCodes"
AddSize 3650
SectionEnd
Section /o "Russian" SecTRussian
StrCpy $ThesCodes "ru_RU,$ThesCodes"
AddSize 2080
SectionEnd
Section /o "Sloven<65>cina" SecTSlovenian
StrCpy $ThesCodes "sl_SI,$ThesCodes"
AddSize 1121
SectionEnd
Section /o "Slovensk<73>" SecTSlovakian
StrCpy $ThesCodes "sk_SK,$ThesCodes"
AddSize 930
SectionEnd
Section /o "Svenska" SecTSwedish
StrCpy $ThesCodes "sv_SE,$ThesCodes"
AddSize 720
SectionEnd
Section /o "Ukrainian" SecTUkrainian
StrCpy $ThesCodes "uk_UA,$ThesCodes"
AddSize 1309
SectionEnd
SectionGroupEnd
# Section descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SecCore} "$(SecCoreDescription)"
!insertmacro MUI_DESCRIPTION_TEXT ${SecFileAssoc} "$(SecFileAssocDescription)"
!insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} "$(SecDesktopDescription)"
!if ${SETUPTYPE} == BUNDLE
!insertmacro MUI_DESCRIPTION_TEXT ${SecInstJabRef} "$(SecInstJabRefDescription)"
!endif
!insertmacro MUI_DESCRIPTION_TEXT ${SecDictionaries} "$(SecDictionariesDescription)"
!insertmacro MUI_DESCRIPTION_TEXT ${SecThesaurus} "$(SecThesaurusDescription)"
!insertmacro MUI_FUNCTION_DESCRIPTION_END
#--------------------------------
# Installer initialization
!macro PRINTER_INIT
${If} ${AtLeastWinVista}
StrCpy $PrinterConf "printui.exe"
${Else}
StrCpy $PrinterConf "rundll32.exe printui.dll,PrintUIEntry"
${EndIf}
!macroend
# .onInit must be here after the section definition because we have to set
# the selection states of the dictionary sections
Function .onInit
${IfNot} ${IsNT}
${OrIfNot} ${AtLeastWinXP}
MessageBox MB_OK|MB_ICONSTOP "${APP_NAME} ${APP_VERSION} requires Windows XP or later." /SD IDOK
Quit
${EndIf}
# check that the installer is not currently running
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${BundleExeFile}.Instance") i .r1 ?e'
Pop $R0
${if} $R0 != "0"
MessageBox MB_OK|MB_ICONSTOP "$(InstallRunning)" /SD IDOK
Abort
${endif}
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${ExeFile}.Instance") i .r1 ?e'
Pop $R0
${if} $R0 != "0"
MessageBox MB_OK|MB_ICONSTOP "$(InstallRunning)" /SD IDOK
Abort
${endif}
# FIXME: check that LyX is not currently running
#System::Call 'kernel32::CreateMutexA(i 0, i 0, t "LyX.exe.Instance") i .r1 ?e'
#Pop $R0
#MessageBox MB_OK "$R0"
#${if} $R0 != "0"
# MessageBox MB_OK|MB_ICONSTOP "$(LyXRunning)"
# Abort
#${endif}
!insertmacro MULTIUSER_INIT
# check if this LyX version is already installed
${if} $MultiUser.Privileges == "Admin"
${orif} $MultiUser.Privileges == "Power"
ReadRegStr $0 HKLM "${APP_UNINST_KEY}" "Publisher"
${else}
ReadRegStr $0 HKCU "${APP_UNINST_KEY}" "Publisher"
# handle also the case that LyX is already installed in HKLM
${if} $0 == ""
ReadRegStr $0 HKLM "${APP_UNINST_KEY}" "Publisher"
${endif}
${endif}
${if} $0 != ""
# installing over an existing installation of the same LyX release is not necessary
# if the users does this he most probably has a problem with LyX that can better be solved
# by reinstalling LyX
# for beta and other test releases over-installing can even cause errors
MessageBox MB_YESNO|MB_DEFBUTTON2|MB_ICONEXCLAMATION "$(AlreadyInstalled)" /SD IDNO IDYES ForceInstallation
Abort
ForceInstallation:
${endif}
# check if there is an existing LyX installation of the same LyX series
# we usually don't release more than 10 versions so with 20 we are safe to check if a newer version is installed
IntOp $4 ${APP_VERSION_REVISION} + 20
${for} $5 0 $4
${if} $MultiUser.Privileges == "Admin"
${orif} $MultiUser.Privileges == "Power"
ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}${APP_VERSION_MAJOR}${APP_VERSION_MINOR}$5" "DisplayVersion"
# also check for an emergency release
${if} $0 == ""
ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}${APP_VERSION_MAJOR}${APP_VERSION_MINOR}$51" "DisplayVersion"
${endif}
${else}
ReadRegStr $0 HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}${APP_VERSION_MAJOR}${APP_VERSION_MINOR}$5" "DisplayVersion"
# also check for an emergency release
${if} $0 == ""
ReadRegStr $0 HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}${APP_VERSION_MAJOR}${APP_VERSION_MINOR}$51" "DisplayVersion"
${endif}
${endif}
${if} $0 != ""
StrCpy $R5 $0 # store the read version number
StrCpy $OldVersionNumber "${APP_VERSION_MAJOR}${APP_VERSION_MINOR}$5"
# we don't stop here because we want the latest installed version
${endif}
${next}
${if} $OldVersionNumber > ${APP_SERIES_KEY}
# store the version number and reformat it temporarily for the error message
StrCpy $R0 $OldVersionNumber
StrCpy $OldVersionNumber $R5
MessageBox MB_OK|MB_ICONSTOP "$(NewerInstalled)" /SD IDOK
StrCpy $OldVersionNumber $R0
Abort
${endif}
!insertmacro PRINTER_INIT
# this can be reset to "true" in section SecDesktop
StrCpy $CreateDesktopIcon "false"
StrCpy $CreateFileAssociations "false"
${IfNot} ${Silent}
# Show banner while installer is intializating
Banner::show /NOUNLOAD "Checking system"
${EndIf}
Call SearchExternal
!if ${SETUPTYPE} == BUNDLE
# don't let the installer sections appear when the programs are already installed
${if} $PathBibTeXEditor != ""
SectionSetText 3 "" # hides the corresponding uninstaller section, ${SecInstJabRef}
${endif}
!endif
# select sections of already installed spell-checker dictionaries, make them read-only
# and set the necessary size to 0 bytes
StrCpy $String $FoundDict
StrCpy $Search "af_ZA"
Call StrPoint # function from LyXUtils.nsh
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDAfrikaans} $0
SectionSetSize ${SecDAfrikaans} 0
${endif}
StrCpy $Search "ar_DZ"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDArabic} $0
SectionSetSize ${SecDArabic} 0
${endif}
StrCpy $Search "hy_AM"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDArmenian} $0
SectionSetSize ${SecDArmenian} 0
${endif}
StrCpy $Search "id_ID"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDIndonesian} $0
SectionSetSize ${SecDIndonesian} 0
${endif}
StrCpy $Search "ms_MY"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDMalayan} $0
SectionSetSize ${SecDMalayan} 0
${endif}
StrCpy $Search "be_BY"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDBelarusian} $0
SectionSetSize ${SecDBelarusian} 0
${endif}
StrCpy $Search "br_FR"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDBreton} $0
SectionSetSize ${SecDBreton} 0
${endif}
StrCpy $Search "bg_BG"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDBulgarian} $0
SectionSetSize ${SecDBulgarian} 0
${endif}
StrCpy $Search "ca_ES"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDCatalanian} $0
SectionSetSize ${SecDCatalanian} 0
${endif}
StrCpy $Search "cs_CZ"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDCzech} $0
SectionSetSize ${SecDCzech} 0
${endif}
StrCpy $Search "cop_EG"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDCoptic} $0
SectionSetSize ${SecDCoptic} 0
${endif}
StrCpy $Search "cy_GB"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDWelsh} $0
SectionSetSize ${SecDWelsh} 0
${endif}
StrCpy $Search "da_DK"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDDanish} $0
SectionSetSize ${SecDDanish} 0
${endif}
StrCpy $Search "de_AT"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDGermanAT} $0
SectionSetSize ${SecDGermanAT} 0
${endif}
StrCpy $Search "de_CH"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDGermanCH} $0
SectionSetSize ${SecDGermanCH} 0
${endif}
StrCpy $Search "de_DE"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDGermanD} $0
SectionSetSize ${SecDGermanD} 0
${endif}
StrCpy $Search "el_GR"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDGreek} $0
SectionSetSize ${SecDGreek} 0
${endif}
StrCpy $Search "et_EE"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDEstonian} $0
SectionSetSize ${SecDEstonian} 0
${endif}
StrCpy $Search "en_AU"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDEnglishAU} $0
SectionSetSize ${SecDEnglishAU} 0
${endif}
StrCpy $Search "en_CA"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDEnglishCA} $0
SectionSetSize ${SecDEnglishCA} 0
${endif}
StrCpy $Search "en_GB"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDEnglishGB} $0
SectionSetSize ${SecDEnglishGB} 0
${endif}
StrCpy $Search "en_NZ"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDEnglishNZ} $0
SectionSetSize ${SecDEnglishNZ} 0
${endif}
StrCpy $Search "en_US"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDEnglishUS} $0
SectionSetSize ${SecDEnglishUS} 0
${endif}
StrCpy $Search "es_ES"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDSpanishES} $0
SectionSetSize ${SecDSpanishES} 0
${endif}
StrCpy $Search "es_MX"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDSpanishMX} $0
SectionSetSize ${SecDSpanishMX} 0
${endif}
StrCpy $Search "eo_EO"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDEsperanto} $0
SectionSetSize ${SecDEsperanto} 0
${endif}
StrCpy $Search "eu_ES"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDBasque} $0
SectionSetSize ${SecDBasque} 0
${endif}
StrCpy $Search "fa_IR"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDFarsi} $0
SectionSetSize ${SecDFarsi} 0
${endif}
StrCpy $Search "fr_CA"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDFrenchCanada} $0
SectionSetSize ${SecDFrenchCanada} 0
${endif}
StrCpy $Search "fr_FR"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDFrench} $0
SectionSetSize ${SecDFrench} 0
${endif}
StrCpy $Search "ga_IR"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDGaelic} $0
SectionSetSize ${SecDGaelic} 0
${endif}
StrCpy $Search "gd_GB"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDScottish} $0
SectionSetSize ${SecDScottish} 0
${endif}
StrCpy $Search "gl_ES"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDGalician} $0
SectionSetSize ${SecDGalician} 0
${endif}
StrCpy $Search "he_IL"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDHebrew} $0
SectionSetSize ${SecDHebrew} 0
${endif}
StrCpy $Search "hi_IN"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDHindi} $0
SectionSetSize ${SecDHindi} 0
${endif}
StrCpy $Search "hr_HR"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDCroatian} $0
SectionSetSize ${SecDCroatian} 0
${endif}
StrCpy $Search "hu_HU"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDHungarian} $0
SectionSetSize ${SecDHungarian} 0
${endif}
StrCpy $Search "ia_IA"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDInterlingua} $0
SectionSetSize ${SecDInterlingua} 0
${endif}
StrCpy $Search "is_IS"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDIcelandic} $0
SectionSetSize ${SecDIcelandic} 0
${endif}
StrCpy $Search "it_IT"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDItalian} $0
SectionSetSize ${SecDItalian} 0
${endif}
StrCpy $Search "kk_KZ"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDKazakh} $0
SectionSetSize ${SecDKazakh} 0
${endif}
StrCpy $Search "ko_KR"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDKorean} $0
SectionSetSize ${SecDKorean} 0
${endif}
StrCpy $Search "la_LA"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDLatin} $0
SectionSetSize ${SecDLatin} 0
${endif}
StrCpy $Search "lt_LT"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDLithuanian} $0
SectionSetSize ${SecDLithuanian} 0
${endif}
StrCpy $Search "lv_LV"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDLatvian} $0
SectionSetSize ${SecDLatvian} 0
${endif}
StrCpy $Search "mr_IN"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDMarathi} $0
SectionSetSize ${SecDMarathi} 0
${endif}
StrCpy $Search "nl_NL"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDDutch} $0
SectionSetSize ${SecDDutch} 0
${endif}
StrCpy $Search "nb_NO"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDNorwegianNB} $0
SectionSetSize ${SecDNorwegianNB} 0
${endif}
StrCpy $Search "nn_NO"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDNorwegianNN} $0
SectionSetSize ${SecDNorwegianNN} 0
${endif}
StrCpy $Search "oc_FR"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDOccitan} $0
SectionSetSize ${SecDOccitan} 0
${endif}
StrCpy $Search "pl_PL"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDPolish} $0
SectionSetSize ${SecDPolish} 0
${endif}
StrCpy $Search "pt_BR"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDPortugueseBR} $0
SectionSetSize ${SecDPortugueseBR} 0
${endif}
StrCpy $Search "pt_PT"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDPortuguesePT} $0
SectionSetSize ${SecDPortuguesePT} 0
${endif}
StrCpy $Search "ro_RO"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDRomanian} $0
SectionSetSize ${SecDRomanian} 0
${endif}
StrCpy $Search "ru_RU"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDRussian} $0
SectionSetSize ${SecDRussian} 0
${endif}
StrCpy $Search "dsb_DE"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDSorbianD} $0
SectionSetSize ${SecDSorbianD} 0
${endif}
StrCpy $Search "hsb_DE"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDSorbianH} $0
SectionSetSize ${SecDSorbianH} 0
${endif}
StrCpy $Search "sq_AL"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDAlbanian} $0
SectionSetSize ${SecDAlbanian} 0
${endif}
StrCpy $Search "sl_SI"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDSlovenian} $0
SectionSetSize ${SecDSlovenian} 0
${endif}
StrCpy $Search "sk_SK"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDSlovakian} $0
SectionSetSize ${SecDSlovakian} 0
${endif}
StrCpy $Search "sr_RS"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDSerbianC} $0
SectionSetSize ${SecDSerbianC} 0
${endif}
StrCpy $Search "sr_RS-Latin"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDSerbianL} $0
SectionSetSize ${SecDSerbianL} 0
${endif}
StrCpy $Search "sv_SE"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDSwedish} $0
SectionSetSize ${SecDSwedish} 0
${endif}
StrCpy $Search "ta_IN"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDTamil} $0
SectionSetSize ${SecDTamil} 0
${endif}
StrCpy $Search "te_IN"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDTelugu} $0
SectionSetSize ${SecDTelugu} 0
${endif}
StrCpy $Search "th_TH"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDThai} $0
SectionSetSize ${SecDThai} 0
${endif}
StrCpy $Search "tk_TM"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDTurkmen} $0
SectionSetSize ${SecDTurkmen} 0
${endif}
StrCpy $Search "uk_UA"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDUkrainian} $0
SectionSetSize ${SecDUkrainian} 0
${endif}
StrCpy $Search "ur_PK"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDUrdu} $0
SectionSetSize ${SecDUrdu} 0
${endif}
StrCpy $Search "vi_VN"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecDVietnamese} $0
SectionSetSize ${SecDVietnamese} 0
${endif}
# select sections of already installed thesaurus dictionaries, make them read-only
# and set the necessary size to 0 bytes
StrCpy $String $FoundThes
StrCpy $Search "bg_BG"
Call StrPoint # function from LyXUtils.nsh
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTBulgarian} $0
SectionSetSize ${SecTBulgarian} 0
${endif}
StrCpy $Search "ca_ES"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTCatalan} $0
SectionSetSize ${SecTCatalan} 0
${endif}
StrCpy $Search "cs_CZ"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTCzech} $0
SectionSetSize ${SecTCzech} 0
${endif}
StrCpy $Search "da_DK"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTDanish} $0
SectionSetSize ${SecTDanish} 0
${endif}
StrCpy $Search "de_DE"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTGermanDA} $0
SectionSetSize ${SecTGermanDA} 0
${endif}
StrCpy $Search "de_CH"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTGermanCH} $0
SectionSetSize ${SecTGermanCH} 0
${endif}
StrCpy $Search "en_GB"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTEnglishGB} $0
SectionSetSize ${SecTEnglishGB} 0
${endif}
StrCpy $Search "en_US"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTEnglishUSAU} $0
SectionSetSize ${SecTEnglishUSAU} 0
${endif}
StrCpy $Search "es_ES"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTSpanish} $0
SectionSetSize ${SecTSpanish} 0
${endif}
StrCpy $Search "fr_FR"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTFrench} $0
SectionSetSize ${SecTFrench} 0
${endif}
StrCpy $Search "ga_IR"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTGaelic} $0
SectionSetSize ${SecTGaelic} 0
${endif}
StrCpy $Search "gl_ES"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTGalician} $0
SectionSetSize ${SecTGalician} 0
${endif}
StrCpy $Search "el_GR"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTGreek} $0
SectionSetSize ${SecTGreek} 0
${endif}
StrCpy $Search "is_IS"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTIcelandic} $0
SectionSetSize ${SecTIcelandic} 0
${endif}
StrCpy $Search "it_IT"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTItalian} $0
SectionSetSize ${SecTItalian} 0
${endif}
StrCpy $Search "hu_HU"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTHungarian} $0
SectionSetSize ${SecTHungarian} 0
${endif}
StrCpy $Search "nb_NO"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTNorwegianNB} $0
SectionSetSize ${SecTNorwegianNB} 0
${endif}
StrCpy $Search "pl_PL"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTPolish} $0
SectionSetSize ${SecTPolish} 0
${endif}
StrCpy $Search "pt_PT"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTPortuguese} $0
SectionSetSize ${SecTPortuguese} 0
${endif}
StrCpy $Search "ro_RO"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTRomanian} $0
SectionSetSize ${SecTRomanian} 0
${endif}
StrCpy $Search "ru_RU"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTRussian} $0
SectionSetSize ${SecTRussian} 0
${endif}
StrCpy $Search "sl_SI"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTSlovenian} $0
SectionSetSize ${SecTSlovenian} 0
${endif}
StrCpy $Search "sk_SK"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTSlovakian} $0
SectionSetSize ${SecTSlovakian} 0
${endif}
StrCpy $Search "sv_SE"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTSwedish} $0
SectionSetSize ${SecTSwedish} 0
${endif}
StrCpy $Search "uk_UA"
Call StrPoint
${if} $Pointer != "-1"
IntOp $0 ${SF_SELECTED} | ${SF_RO}
SectionSetFlags ${SecTUkrainian} $0
SectionSetSize ${SecTUkrainian} 0
${endif}
${IfNot} ${Silent}
Banner::destroy
${EndIf}
FunctionEnd
# this function is called at first after starting the uninstaller
Function un.onInit
!insertmacro PRINTER_INIT
!insertmacro MULTIUSER_UNINIT
# Check that LyX is not currently running
FindProcDLL::FindProc "lyx.exe"
${if} $R0 == "1"
MessageBox MB_OK|MB_ICONSTOP "$(UnInstallRunning)" /SD IDOK
Abort
${endif}
# set registry root key
${if} $MultiUser.Privileges == "Admin"
${orif} $MultiUser.Privileges == "Power"
SetShellVarContext all
${else}
SetShellVarContext current
${endif}
# Ascertain whether the user has sufficient privileges to uninstall.
# abort when LyX was installed with admin permissions but the user doesn't have administrator privileges
ReadRegStr $0 HKLM "${APP_UNINST_KEY}" "DisplayVersion"
${if} $0 != ""
${andif} $MultiUser.Privileges != "Admin"
${andif} $MultiUser.Privileges != "Power"
MessageBox MB_OK|MB_ICONSTOP "$(UnNotAdminLabel)" /SD IDOK
Abort
${endif}
# warning when LyX couldn't be found in the registry
${if} $0 == "" # check in HKCU
ReadRegStr $0 HKCU "${APP_UNINST_KEY}" "DisplayVersion"
${if} $0 == ""
MessageBox MB_OK|MB_ICONEXCLAMATION "$(UnNotInRegistryLabel)" /SD IDOK
${endif}
${endif}
# Macro to investigate name of LyX's preferences folders to be able remove them
!insertmacro UnAppPreSuff $AppPre $AppSuff # macro from LyXUtils.nsh
# test if MiKTeX was installed together with LyX
ReadRegStr $0 SHCTX "SOFTWARE\MiKTeX.org\MiKTeX" "OnlyWithLyX"
${if} $0 == "Yes${APP_SERIES_KEY}"
SectionSetText 2 "MiKTeX" # names the corersponding uninstaller section
StrCpy $LaTeXInstalled "MiKTeX"
${else}
SectionSetText 2 "" # hides the corresponding uninstaller section
${endif}
# test if JabRef was installed together with LyX
ReadRegStr $0 SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\JabRef ${JabRefVersion}" "OnlyWithLyX"
${if} $0 == "Yes${APP_SERIES_KEY}"
SectionSetText 3 "JabRef" # names the corersponding uninstaller section
StrCpy $JabRefInstalled "Yes"
${else}
SectionSetText 3 "" # hides the corresponding uninstaller section
${endif}
# question message if the user really wants to uninstall LyX
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "$(UnReallyRemoveLabel)" /SD IDYES IDYES +2 # continue if yes
Abort
FunctionEnd