5 Installation of external components: MiKTeX, ImageMagick, Ghostscript
6 Either an existing installation can be used or a the components can be
7 downloaded or installed (depending on the type of installer)
12 #Var ExternalPage.Info
13 #Var ExternalPage.Setup
14 #Var ExternalPage.Existing
15 #Var ExternalPage.Folder
16 #Var ExternalPage.Folder.Text
17 #Var ExternalPage.Folder.Return
18 #Var ExternalPage.FolderBrowse
19 #Var ExternalPage.FolderInfo
20 #Var ExternalPage.NoInstall
22 #Var ExternalPage.RadioButton.Click
23 #Var ExternalPage.FolderBrowse.Click
27 #Var LaTeXExisting.State
28 #Var LaTeXNoInstall.State
33 !macro EXTERNAL_SHOWDIALOG COMPONENT
37 !insertmacro MUI_HEADER_TEXT $(TEXT_EXTERNAL_${COMPONENT}_TITLE) $(TEXT_EXTERNAL_${COMPONENT}_SUBTITLE)
39 # GetFunctionAddress $ExternalPage.RadioButton.Click ExternalRadioButtonClick
40 # GetFunctionAddress $ExternalPage.FolderBrowse.Click ExternalFolderBrowseClick
42 nsDialogs::Create /NOUNLOAD 1018
45 !ifdef BUNDLESETUP_${COMPONENT}
46 ${NSD_CreateLabel} 0u 0u 300u 20u $(TEXT_EXTERNAL_${COMPONENT}_INFO_INSTALL)
48 ${NSD_CreateLabel} 0u 0u 300u 20u $(TEXT_EXTERNAL_${COMPONENT}_INFO_DOWNLOAD)
50 Pop $ExternalPage.Info
52 !ifdef BUNDLESETUP_${COMPONENT}
53 ${NSD_CreateRadioButton} 0u 40u 300u 10u $(TEXT_EXTERNAL_${COMPONENT}_INSTALL)
55 ${NSD_CreateRadioButton} 0u 40u 300u 10u $(TEXT_EXTERNAL_${COMPONENT}_DOWNLOAD)
57 Pop $ExternalPage.Setup
58 nsDialogs::OnClick /NOUNLOAD $ExternalPage.Setup $ExternalPage.RadioButton.Click
60 ${NSD_CreateRadioButton} 0u 60u 300u 10u $(TEXT_EXTERNAL_${COMPONENT}_FOLDER)
61 Pop $ExternalPage.Existing
62 nsDialogs::OnClick /NOUNLOAD $ExternalPage.Existing $ExternalPage.RadioButton.Click
64 ${NSD_CreateText} 10u 80u 255u 12u $Path${COMPONENT}
65 Pop $ExternalPage.Folder
67 ${NSD_CreateBrowseButton} 270u 80u 20u 12u ...
68 Pop $ExternalPage.FolderBrowse
69 nsDialogs::OnClick /NOUNLOAD $ExternalPage.FolderBrowse $ExternalPage.FolderBrowse.Click
71 ${NSD_CreateLabel} 10u 100u 290u 10u $(TEXT_EXTERNAL_${COMPONENT}_FOLDER_INFO)
72 Pop $ExternalPage.FolderInfo
74 ${NSD_CreateRadioButton} 0u 120u 300u 10u $(TEXT_EXTERNAL_${COMPONENT}_NONE)
75 Pop $ExternalPage.NoInstall
76 nsDialogs::OnClick /NOUNLOAD $ExternalPage.NoInstall $ExternalPage.RadioButton.Click
78 # Set the state of the controls to the previous user selection (or the default)
80 ${If} $${COMPONENT}State == ""
81 # Page is displayed for the first time, set the default
82 ${If} $Path${COMPONENT} == ""
83 !if ${COMPONENT} != LaTeX
84 # ImageMagick and Ghostscript require Administrator or
85 # power user privileges for installation
86 # Setup won't be checked because it's disabled
87 ${If} $MultiUser.Privileges != "User"
88 ${AndIf} $MultiUser.Privileges != "Guest"
91 ${NSD_SetState} $ExternalPage.Setup ${BST_CHECKED}
93 !if ${COMPONENT} != LaTeX
95 ${NSD_SetState} $ExternalPage.NoInstall ${BST_CHECKED}
99 ${NSD_SetState} $ExternalPage.Existing ${BST_CHECKED}
102 ${NSD_SetState} $ExternalPage.Setup $${COMPONENT}Setup.State
103 ${NSD_SetState} $ExternalPage.Existing $${COMPONENT}Existing.State
104 ${NSD_SetState} $ExternalPage.NoInstall $${COMPONENT}NoInstall.State
107 #Call ExternalRadioButtonClick
113 !macro EXTERNAL_VALIDATEDIALOG COMPONENT
115 # Save state of controls
116 StrCpy $${COMPONENT}State saved
117 ${NSD_GetState} $ExternalPage.Setup $${COMPONENT}Setup.State
118 ${NSD_GetState} $ExternalPage.Setup $${COMPONENT}Setup.State
119 ${NSD_GetState} $ExternalPage.Existing $${COMPONENT}Existing.State
120 ${NSD_GetState} $ExternalPage.NoInstall $${COMPONENT}NoInstall.State
122 ${If} $${COMPONENT}Setup.State = ${BST_CHECKED}
124 StrCpy $Setup${COMPONENT} ${TRUE}
126 # Download or install, so we need hard drive space
128 # Add size of component installer
129 StrCpy $ComponentSize $Size${COMPONENT}
131 ${If} $Path${COMPONENT} == ""
132 # Not yet installed, add size of component itself
133 IntOp $ComponentSize $ComponentSize + ${SIZE_${COMPONENT}}
136 SectionSetSize ${External${COMPONENT}} $ComponentSize
142 StrCpy $Setup${COMPONENT} ${FALSE}
143 SectionSetSize ${External${COMPONENT}} 0
147 ${If} $${COMPONENT}Existing.State = ${BST_CHECKED}
149 # Update location of component
151 ${NSD_GetText} $ExternalPage.Folder $ExternalPage.Folder.Text
153 # Verify whether the path exists
155 ${IfNot} ${FileExists} "$ExternalPage.Folder.Text\${BIN_${COMPONENT}}"
156 MessageBox MB_OK|MB_ICONEXCLAMATION $(TEXT_EXTERNAL_${COMPONENT}_NOTFOUND)
157 Abort # Return to allow the user to correct the location
160 StrCpy $Path${COMPONENT} $ExternalPage.Folder.Text
166 #Function ExternalRadioButtonClick
168 # Enable the folder selection controls depending
169 # if the option to use an existing installation is selected
171 # ${NSD_GetState} $ExternalPage.Existing $ControlState
173 # ${If} $ControlState = ${BST_CHECKED}
174 # EnableWindow $ExternalPage.Folder 1
175 # EnableWindow $ExternalPage.FolderBrowse 1
176 # EnableWindow $ExternalPage.FolderInfo 1
178 # EnableWindow $ExternalPage.Folder 0
179 # EnableWindow $ExternalPage.FolderBrowse 0
180 # EnableWindow $ExternalPage.FolderInfo 0
185 #Function ExternalFolderBrowseClick
187 # Browse button clicked
189 # Get current folder to set as default
190 # ${NSD_GetText} $ExternalPage.Folder $ExternalPage.Folder.Text
192 # Browse for new folder
193 # nsDialogs::SelectFolderDialog /NOUNLOAD "" $ExternalPage.Folder.Text
194 # Pop $ExternalPage.Folder.Return
196 # ${If} $ExternalPage.Folder.Return != error
197 # StrCpy $ExternalPage.Folder.Text $ExternalPage.Folder.Return
200 # ${NSD_SetText} $ExternalPage.Folder $ExternalPage.Folder.Text
206 #Function PageExternalLaTeX
207 # !insertmacro EXTERNAL_SHOWDIALOG LaTeX
210 #Function PageExternalLaTeXValidate
211 # !insertmacro EXTERNAL_VALIDATEDIALOG LaTeX