]> git.lyx.org Git - features.git/blob - development/Win32/packaging/installer/gui/external.nsh
Consider inset strings in simple find/replaceAll (#12049)
[features.git] / development / Win32 / packaging / installer / gui / external.nsh
1 /*
2
3 external.nsh
4
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)
8
9 */
10
11 #Var ExternalPage
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
21
22 #Var ExternalPage.RadioButton.Click
23 #Var ExternalPage.FolderBrowse.Click
24
25 #Var LaTeXState
26 #Var LaTeXSetup.State
27 #Var LaTeXExisting.State
28 #Var LaTeXNoInstall.State
29
30 #Var ControlState
31 #Var ComponentSize
32
33 !macro EXTERNAL_SHOWDIALOG COMPONENT
34
35   # Build the dialog
36
37   !insertmacro MUI_HEADER_TEXT $(TEXT_EXTERNAL_${COMPONENT}_TITLE) $(TEXT_EXTERNAL_${COMPONENT}_SUBTITLE)
38   
39 #  GetFunctionAddress $ExternalPage.RadioButton.Click ExternalRadioButtonClick
40 #  GetFunctionAddress $ExternalPage.FolderBrowse.Click ExternalFolderBrowseClick
41
42   nsDialogs::Create /NOUNLOAD 1018
43   Pop $ExternalPage
44
45   !ifdef BUNDLESETUP_${COMPONENT}
46     ${NSD_CreateLabel} 0u 0u 300u 20u $(TEXT_EXTERNAL_${COMPONENT}_INFO_INSTALL)
47   !else
48     ${NSD_CreateLabel} 0u 0u 300u 20u $(TEXT_EXTERNAL_${COMPONENT}_INFO_DOWNLOAD)
49   !endif
50   Pop $ExternalPage.Info
51
52   !ifdef BUNDLESETUP_${COMPONENT}
53     ${NSD_CreateRadioButton} 0u 40u 300u 10u $(TEXT_EXTERNAL_${COMPONENT}_INSTALL)
54   !else
55     ${NSD_CreateRadioButton} 0u 40u 300u 10u $(TEXT_EXTERNAL_${COMPONENT}_DOWNLOAD)
56   !endif
57   Pop $ExternalPage.Setup
58   nsDialogs::OnClick /NOUNLOAD $ExternalPage.Setup $ExternalPage.RadioButton.Click
59   
60   ${NSD_CreateRadioButton} 0u 60u 300u 10u $(TEXT_EXTERNAL_${COMPONENT}_FOLDER)
61   Pop $ExternalPage.Existing
62   nsDialogs::OnClick /NOUNLOAD $ExternalPage.Existing $ExternalPage.RadioButton.Click
63   
64   ${NSD_CreateText} 10u 80u 255u 12u $Path${COMPONENT}
65   Pop $ExternalPage.Folder
66  
67   ${NSD_CreateBrowseButton} 270u 80u 20u 12u ...
68   Pop $ExternalPage.FolderBrowse
69   nsDialogs::OnClick /NOUNLOAD $ExternalPage.FolderBrowse $ExternalPage.FolderBrowse.Click
70   
71   ${NSD_CreateLabel} 10u 100u 290u 10u $(TEXT_EXTERNAL_${COMPONENT}_FOLDER_INFO)
72   Pop $ExternalPage.FolderInfo
73   
74   ${NSD_CreateRadioButton} 0u 120u 300u 10u $(TEXT_EXTERNAL_${COMPONENT}_NONE)
75   Pop $ExternalPage.NoInstall
76   nsDialogs::OnClick /NOUNLOAD $ExternalPage.NoInstall $ExternalPage.RadioButton.Click
77    
78   # Set the state of the controls to the previous user selection (or the default)
79
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"
89       !endif 
90       
91       ${NSD_SetState} $ExternalPage.Setup ${BST_CHECKED}
92       
93       !if ${COMPONENT} != LaTeX
94       ${Else}
95         ${NSD_SetState} $ExternalPage.NoInstall ${BST_CHECKED}
96       ${EndIf}
97       !endif
98     ${Else}
99       ${NSD_SetState} $ExternalPage.Existing ${BST_CHECKED}
100     ${EndIf}
101   ${Else} 
102     ${NSD_SetState} $ExternalPage.Setup $${COMPONENT}Setup.State
103     ${NSD_SetState} $ExternalPage.Existing $${COMPONENT}Existing.State
104     ${NSD_SetState} $ExternalPage.NoInstall $${COMPONENT}NoInstall.State
105   ${EndIf}
106   
107   #Call ExternalRadioButtonClick
108   
109   nsDialogs::Show
110
111 !macroend
112
113 !macro EXTERNAL_VALIDATEDIALOG COMPONENT
114
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
121   
122   ${If} $${COMPONENT}Setup.State = ${BST_CHECKED}
123     
124     StrCpy $Setup${COMPONENT} ${TRUE}
125     
126     # Download or install, so we need hard drive space
127     
128     # Add size of component installer
129     StrCpy $ComponentSize $Size${COMPONENT}
130     
131     ${If} $Path${COMPONENT} == ""
132       # Not yet installed, add size of component itself
133       IntOp $ComponentSize $ComponentSize + ${SIZE_${COMPONENT}}
134     ${EndIf}
135     
136     SectionSetSize ${External${COMPONENT}} $ComponentSize
137     
138   ${Else}
139     
140     # No setup
141     
142     StrCpy $Setup${COMPONENT} ${FALSE}
143     SectionSetSize ${External${COMPONENT}} 0
144   
145   ${EndIf}
146   
147   ${If} $${COMPONENT}Existing.State = ${BST_CHECKED}
148   
149     # Update location of component
150     
151     ${NSD_GetText} $ExternalPage.Folder $ExternalPage.Folder.Text
152     
153     # Verify whether the path exists
154     
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
158     ${EndIf}
159     
160     StrCpy $Path${COMPONENT} $ExternalPage.Folder.Text
161   
162   ${EndIf}
163   
164 !macroend
165
166 #Function ExternalRadioButtonClick
167
168   # Enable the folder selection controls depending
169   # if the option to use an existing installation is selected
170
171 #  ${NSD_GetState} $ExternalPage.Existing $ControlState
172   
173 #  ${If} $ControlState = ${BST_CHECKED}
174 #    EnableWindow $ExternalPage.Folder 1
175 #    EnableWindow $ExternalPage.FolderBrowse 1
176 #    EnableWindow $ExternalPage.FolderInfo 1
177 #  ${Else}
178 #    EnableWindow $ExternalPage.Folder 0
179 #    EnableWindow $ExternalPage.FolderBrowse 0
180 #    EnableWindow $ExternalPage.FolderInfo 0
181 #  ${EndIf}
182
183 #FunctionEnd
184
185 #Function ExternalFolderBrowseClick
186
187   # Browse button clicked
188   
189   # Get current folder to set as default
190 #  ${NSD_GetText} $ExternalPage.Folder $ExternalPage.Folder.Text
191   
192   # Browse for new folder
193 #  nsDialogs::SelectFolderDialog /NOUNLOAD "" $ExternalPage.Folder.Text
194 #  Pop $ExternalPage.Folder.Return
195   
196 #  ${If} $ExternalPage.Folder.Return != error
197 #    StrCpy $ExternalPage.Folder.Text $ExternalPage.Folder.Return
198 #  ${EndIf}
199   
200 #  ${NSD_SetText} $ExternalPage.Folder $ExternalPage.Folder.Text
201
202 #FunctionEnd
203
204 # Page functions
205
206 #Function PageExternalLaTeX
207 #  !insertmacro EXTERNAL_SHOWDIALOG LaTeX
208 #FunctionEnd
209
210 #Function PageExternalLaTeXValidate
211 #  !insertmacro EXTERNAL_VALIDATEDIALOG LaTeX
212 #FunctionEnd