lyx_mirror/development/Win32/packaging/installer/gui/external.nsh

213 lines
6.2 KiB
Plaintext
Raw Normal View History

/*
external.nsh
Installation of external components: MiKTeX, ImageMagick, Ghostscript
Either an existing installation can be used or a the components can be
downloaded or installed (depending on the type of installer)
*/
#Var ExternalPage
#Var ExternalPage.Info
#Var ExternalPage.Setup
#Var ExternalPage.Existing
#Var ExternalPage.Folder
#Var ExternalPage.Folder.Text
#Var ExternalPage.Folder.Return
#Var ExternalPage.FolderBrowse
#Var ExternalPage.FolderInfo
#Var ExternalPage.NoInstall
#Var ExternalPage.RadioButton.Click
#Var ExternalPage.FolderBrowse.Click
#Var LaTeXState
#Var LaTeXSetup.State
#Var LaTeXExisting.State
#Var LaTeXNoInstall.State
#Var ControlState
#Var ComponentSize
!macro EXTERNAL_SHOWDIALOG COMPONENT
# Build the dialog
!insertmacro MUI_HEADER_TEXT $(TEXT_EXTERNAL_${COMPONENT}_TITLE) $(TEXT_EXTERNAL_${COMPONENT}_SUBTITLE)
# GetFunctionAddress $ExternalPage.RadioButton.Click ExternalRadioButtonClick
# GetFunctionAddress $ExternalPage.FolderBrowse.Click ExternalFolderBrowseClick
nsDialogs::Create /NOUNLOAD 1018
Pop $ExternalPage
!ifdef BUNDLESETUP_${COMPONENT}
${NSD_CreateLabel} 0u 0u 300u 20u $(TEXT_EXTERNAL_${COMPONENT}_INFO_INSTALL)
!else
${NSD_CreateLabel} 0u 0u 300u 20u $(TEXT_EXTERNAL_${COMPONENT}_INFO_DOWNLOAD)
!endif
Pop $ExternalPage.Info
!ifdef BUNDLESETUP_${COMPONENT}
${NSD_CreateRadioButton} 0u 40u 300u 10u $(TEXT_EXTERNAL_${COMPONENT}_INSTALL)
!else
${NSD_CreateRadioButton} 0u 40u 300u 10u $(TEXT_EXTERNAL_${COMPONENT}_DOWNLOAD)
!endif
Pop $ExternalPage.Setup
nsDialogs::OnClick /NOUNLOAD $ExternalPage.Setup $ExternalPage.RadioButton.Click
${NSD_CreateRadioButton} 0u 60u 300u 10u $(TEXT_EXTERNAL_${COMPONENT}_FOLDER)
Pop $ExternalPage.Existing
nsDialogs::OnClick /NOUNLOAD $ExternalPage.Existing $ExternalPage.RadioButton.Click
${NSD_CreateText} 10u 80u 255u 12u $Path${COMPONENT}
Pop $ExternalPage.Folder
${NSD_CreateBrowseButton} 270u 80u 20u 12u ...
Pop $ExternalPage.FolderBrowse
nsDialogs::OnClick /NOUNLOAD $ExternalPage.FolderBrowse $ExternalPage.FolderBrowse.Click
${NSD_CreateLabel} 10u 100u 290u 10u $(TEXT_EXTERNAL_${COMPONENT}_FOLDER_INFO)
Pop $ExternalPage.FolderInfo
${NSD_CreateRadioButton} 0u 120u 300u 10u $(TEXT_EXTERNAL_${COMPONENT}_NONE)
Pop $ExternalPage.NoInstall
nsDialogs::OnClick /NOUNLOAD $ExternalPage.NoInstall $ExternalPage.RadioButton.Click
# Set the state of the controls to the previous user selection (or the default)
${If} $${COMPONENT}State == ""
# Page is displayed for the first time, set the default
${If} $Path${COMPONENT} == ""
!if ${COMPONENT} != LaTeX
# ImageMagick and Ghostscript require Administrator or
# power user privileges for installation
# Setup won't be checked because it's disabled
${If} $MultiUser.Privileges != "User"
${AndIf} $MultiUser.Privileges != "Guest"
!endif
${NSD_SetState} $ExternalPage.Setup ${BST_CHECKED}
!if ${COMPONENT} != LaTeX
${Else}
${NSD_SetState} $ExternalPage.NoInstall ${BST_CHECKED}
${EndIf}
!endif
${Else}
${NSD_SetState} $ExternalPage.Existing ${BST_CHECKED}
${EndIf}
${Else}
${NSD_SetState} $ExternalPage.Setup $${COMPONENT}Setup.State
${NSD_SetState} $ExternalPage.Existing $${COMPONENT}Existing.State
${NSD_SetState} $ExternalPage.NoInstall $${COMPONENT}NoInstall.State
${EndIf}
#Call ExternalRadioButtonClick
nsDialogs::Show
!macroend
!macro EXTERNAL_VALIDATEDIALOG COMPONENT
# Save state of controls
StrCpy $${COMPONENT}State saved
${NSD_GetState} $ExternalPage.Setup $${COMPONENT}Setup.State
${NSD_GetState} $ExternalPage.Setup $${COMPONENT}Setup.State
${NSD_GetState} $ExternalPage.Existing $${COMPONENT}Existing.State
${NSD_GetState} $ExternalPage.NoInstall $${COMPONENT}NoInstall.State
${If} $${COMPONENT}Setup.State = ${BST_CHECKED}
StrCpy $Setup${COMPONENT} ${TRUE}
# Download or install, so we need hard drive space
# Add size of component installer
StrCpy $ComponentSize $Size${COMPONENT}
${If} $Path${COMPONENT} == ""
# Not yet installed, add size of component itself
IntOp $ComponentSize $ComponentSize + ${SIZE_${COMPONENT}}
${EndIf}
SectionSetSize ${External${COMPONENT}} $ComponentSize
${Else}
# No setup
StrCpy $Setup${COMPONENT} ${FALSE}
SectionSetSize ${External${COMPONENT}} 0
${EndIf}
${If} $${COMPONENT}Existing.State = ${BST_CHECKED}
# Update location of component
${NSD_GetText} $ExternalPage.Folder $ExternalPage.Folder.Text
# Verify whether the path exists
${IfNot} ${FileExists} "$ExternalPage.Folder.Text\${BIN_${COMPONENT}}"
MessageBox MB_OK|MB_ICONEXCLAMATION $(TEXT_EXTERNAL_${COMPONENT}_NOTFOUND)
Abort # Return to allow the user to correct the location
${EndIf}
StrCpy $Path${COMPONENT} $ExternalPage.Folder.Text
${EndIf}
!macroend
#Function ExternalRadioButtonClick
# Enable the folder selection controls depending
# if the option to use an existing installation is selected
# ${NSD_GetState} $ExternalPage.Existing $ControlState
# ${If} $ControlState = ${BST_CHECKED}
# EnableWindow $ExternalPage.Folder 1
# EnableWindow $ExternalPage.FolderBrowse 1
# EnableWindow $ExternalPage.FolderInfo 1
# ${Else}
# EnableWindow $ExternalPage.Folder 0
# EnableWindow $ExternalPage.FolderBrowse 0
# EnableWindow $ExternalPage.FolderInfo 0
# ${EndIf}
#FunctionEnd
#Function ExternalFolderBrowseClick
# Browse button clicked
# Get current folder to set as default
# ${NSD_GetText} $ExternalPage.Folder $ExternalPage.Folder.Text
# Browse for new folder
# nsDialogs::SelectFolderDialog /NOUNLOAD "" $ExternalPage.Folder.Text
# Pop $ExternalPage.Folder.Return
# ${If} $ExternalPage.Folder.Return != error
# StrCpy $ExternalPage.Folder.Text $ExternalPage.Folder.Return
# ${EndIf}
# ${NSD_SetText} $ExternalPage.Folder $ExternalPage.Folder.Text
#FunctionEnd
# Page functions
#Function PageExternalLaTeX
# !insertmacro EXTERNAL_SHOWDIALOG LaTeX
#FunctionEnd
#Function PageExternalLaTeXValidate
# !insertmacro EXTERNAL_VALIDATEDIALOG LaTeX
#FunctionEnd