]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/win32/installer/winbacula.nsi
Update README.mingw32 to include gdb info
[bacula/bacula] / bacula / src / win32 / installer / winbacula.nsi
1 ; winbacula.nsi\r
2 ;\r
3 ; Began as a version written by Michel Meyers (michel@tcnnet.dyndns.org)\r
4 ;\r
5 ; Adapted by Kern Sibbald for native Win32 Bacula\r
6 ;    added a number of elements from Christopher Hull's installer\r
7 ;\r
8 ; D. Scott Barninger Nov 13 2004\r
9 ; added configuration editing for bconsole.conf and bwx-console.conf\r
10 ; better explanation in dialog boxes for editing config files\r
11 ; added Start Menu items\r
12 ; fix uninstall of config files to do all not just bacula-fd.conf\r
13 ;\r
14 ; D. Scott Barninger Dec 05 2004\r
15 ; added specification of default permissions for bacula-fd.conf\r
16 ;   - thanks to Jamie Ffolliott for pointing me at cacls\r
17 ; added removal of working-dir files if user selects to remove config\r
18 ; uninstall is now 100% clean\r
19 ;\r
20 ; D. Scott Barninger Apr 17 2005\r
21 ; 1.36.3 release docs update\r
22 ; add pdf manual and menu shortcut\r
23 ;\r
24 ; Robert Nelson May 15 2006\r
25 ; Added server installs and implemented Microsoft install locations\r
26 ; Use LogicLib.nsh\r
27 ; Added Bacula-SD and Bacula-DIR\r
28 ; Replaced ParameterGiven with standard GetOptions\r
29 ;\r
30 ; Version $Id$\r
31 ;\r
32 ; Command line options:\r
33 ;\r
34 ; /service    - \r
35 ; /start\r
36 ;\r
37 ; netsh firewall add portopening protocol=tcp port=9102 name="Bacula-FD"\r
38 \r
39 \r
40 !define PRODUCT "Bacula"\r
41 \r
42 ;\r
43 ; Include the Modern UI\r
44 ;\r
45 \r
46 !include "MUI.nsh"\r
47 !include "LogicLib.nsh"\r
48 !include "FileFunc.nsh"\r
49 !include "Sections.nsh"\r
50 !include "StrFunc.nsh"\r
51 !include "WinMessages.nsh"\r
52 ;\r
53 ; Basics\r
54 ;\r
55 Name "Bacula"\r
56 OutFile "${OUT_DIR}\winbacula-${VERSION}.exe"\r
57 SetCompressor lzma\r
58 InstallDir "$PROGRAMFILES\Bacula"\r
59 InstallDirRegKey HKLM "Software\Bacula" "InstallLocation"\r
60 \r
61 InstType "Client"\r
62 InstType "Server"\r
63 InstType "Full"\r
64 \r
65 !insertmacro GetParent\r
66 \r
67 ${StrCase}\r
68 ${StrRep}\r
69 ${StrTok}\r
70 ${StrTrimNewLines}\r
71 \r
72 ;\r
73 ; Pull in pages\r
74 ;\r
75 \r
76 !define      MUI_COMPONENTSPAGE_SMALLDESC\r
77 \r
78 !define      MUI_HEADERIMAGE\r
79 !define      MUI_BGCOLOR                739AB9\r
80 !define      MUI_HEADERIMAGE_BITMAP     "bacula-logo.bmp"\r
81 \r
82 !InsertMacro MUI_PAGE_WELCOME\r
83 !InsertMacro MUI_PAGE_LICENSE "..\..\..\LICENSE"\r
84 Page custom EnterInstallType\r
85 !define      MUI_PAGE_CUSTOMFUNCTION_SHOW PageComponentsShow\r
86 !InsertMacro MUI_PAGE_COMPONENTS\r
87 !define      MUI_PAGE_CUSTOMFUNCTION_PRE PageDirectoryPre\r
88 !InsertMacro MUI_PAGE_DIRECTORY\r
89 Page custom EnterConfigPage1 LeaveConfigPage1\r
90 Page custom EnterConfigPage2 LeaveConfigPage2\r
91 !Define      MUI_PAGE_CUSTOMFUNCTION_LEAVE LeaveInstallPage\r
92 !InsertMacro MUI_PAGE_INSTFILES\r
93 Page custom EnterWriteTemplates\r
94 !Define      MUI_FINISHPAGE_SHOWREADME $INSTDIR\Readme.txt\r
95 !InsertMacro MUI_PAGE_FINISH\r
96 \r
97 !InsertMacro MUI_UNPAGE_WELCOME\r
98 !InsertMacro MUI_UNPAGE_CONFIRM\r
99 !InsertMacro MUI_UNPAGE_INSTFILES\r
100 !InsertMacro MUI_UNPAGE_FINISH\r
101 \r
102 !define      MUI_ABORTWARNING\r
103 \r
104 !InsertMacro MUI_LANGUAGE "English"\r
105 \r
106 !InsertMacro GetParameters\r
107 !InsertMacro GetOptions\r
108 \r
109 DirText "Setup will install Bacula ${VERSION} to the directory specified below. To install in a different folder, click Browse and select another folder."\r
110 \r
111 !InsertMacro MUI_RESERVEFILE_INSTALLOPTIONS\r
112 ;\r
113 ; Global Variables\r
114 ;\r
115 Var OptService\r
116 Var OptStart\r
117 Var OptSilent\r
118 \r
119 Var CommonFilesDone\r
120 \r
121 Var OsIsNT\r
122 \r
123 Var HostName\r
124 \r
125 Var ConfigClientName\r
126 Var ConfigClientPort\r
127 Var ConfigClientMaxJobs\r
128 Var ConfigClientPassword\r
129 Var ConfigClientInstallService\r
130 Var ConfigClientStartService\r
131 \r
132 Var ConfigStorageName\r
133 Var ConfigStoragePort\r
134 Var ConfigStorageMaxJobs\r
135 Var ConfigStoragePassword\r
136 Var ConfigStorageInstallService\r
137 Var ConfigStorageStartService\r
138 \r
139 Var ConfigDirectorName\r
140 Var ConfigDirectorPort\r
141 Var ConfigDirectorMaxJobs\r
142 Var ConfigDirectorPassword\r
143 Var ConfigDirectorAddress\r
144 Var ConfigDirectorMailServer\r
145 Var ConfigDirectorMailAddress\r
146 Var ConfigDirectorDB\r
147 Var ConfigDirectorInstallService\r
148 Var ConfigDirectorStartService\r
149 \r
150 Var ConfigMonitorName\r
151 Var ConfigMonitorPassword\r
152 \r
153 Var LocalDirectorPassword\r
154 Var LocalHostAddress\r
155 \r
156 Var MySQLPath\r
157 Var MySQLVersion\r
158 Var PostgreSQLPath\r
159 Var PostgreSQLVersion\r
160 \r
161 Var AutomaticInstall\r
162 Var InstallType\r
163 !define NewInstall      0\r
164 !define UpgradeInstall  1\r
165 !define MigrateInstall  2\r
166 \r
167 Var OldInstallDir\r
168 Var PreviousComponents\r
169 Var NewComponents\r
170 \r
171 ; Bit 0 = File Service\r
172 ;     1 = Storage Service\r
173 ;     2 = Director Service\r
174 ;     3 = Command Console\r
175 ;     4 = Graphical Console\r
176 ;     5 = Documentation (PDF)\r
177 ;     6 = Documentation (HTML)\r
178 \r
179 !define ComponentFile                   1\r
180 !define ComponentStorage                2\r
181 !define ComponentDirector               4\r
182 !define ComponentTextConsole            8\r
183 !define ComponentGUIConsole             16\r
184 !define ComponentPDFDocs                32\r
185 !define ComponentHTMLDocs               64\r
186 \r
187 !define ComponentsRequiringUserConfig           31\r
188 !define ComponentsFileAndStorage                3\r
189 !define ComponentsFileAndStorageAndDirector     7\r
190 !define ComponentsDirectorAndTextGuiConsoles    28\r
191 !define ComponentsTextAndGuiConsoles            24\r
192 \r
193 Var HDLG\r
194 Var HCTL\r
195 \r
196 Function .onInit\r
197   Push $R0\r
198   Push $R1\r
199 \r
200   ; Process Command Line Options\r
201   StrCpy $OptService 1\r
202   StrCpy $OptStart 1\r
203   StrCpy $OptSilent 0\r
204   StrCpy $CommonFilesDone 0\r
205   StrCpy $OsIsNT 0\r
206   StrCpy $AutomaticInstall 0\r
207   StrCpy $InstallType ${NewInstall}\r
208   StrCpy $OldInstallDir ""\r
209   StrCpy $PreviousComponents 0\r
210   StrCpy $NewComponents 0\r
211   StrCpy $MySQLPath ""\r
212   StrCpy $MySQLVersion ""\r
213   StrCpy $PostgreSQLPath ""\r
214   StrCpy $PostgreSQLVersion ""\r
215 \r
216   ${GetParameters} $R0\r
217 \r
218   ClearErrors\r
219   ${GetOptions} $R0 "/noservice" $R1\r
220   IfErrors +2\r
221     StrCpy $OptService 0\r
222 \r
223   ClearErrors\r
224   ${GetOptions} $R0 "/nostart" $R1\r
225   IfErrors +2\r
226     StrCpy $OptStart 0\r
227 \r
228   IfSilent 0 +2\r
229     StrCpy $OptSilent 1\r
230 \r
231   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion\r
232   ${If} $R0 != ""\r
233     StrCpy $OsIsNT 1\r
234   ${EndIf}\r
235 \r
236   Call GetComputerName\r
237   Pop $HostName\r
238 \r
239   Call GetHostName\r
240   Pop $LocalHostAddress\r
241 \r
242   Call GetUserName\r
243   Pop $ConfigDirectorMailAddress\r
244 \r
245   Call FindDatabaseApps\r
246 \r
247   ; Configuration Defaults\r
248 \r
249   StrCpy $ConfigClientName               "$HostName-fd"\r
250   StrCpy $ConfigClientPort               9102\r
251   StrCpy $ConfigClientMaxJobs            2\r
252   ;StrCpy $ConfigClientPassword\r
253   StrCpy $ConfigClientInstallService     "$OptService"\r
254   StrCpy $ConfigClientStartService       "$OptStart"\r
255 \r
256   StrCpy $ConfigStorageName              "$HostName-sd"\r
257   StrCpy $ConfigStoragePort              9103\r
258   StrCpy $ConfigStorageMaxJobs           10\r
259   ;StrCpy $ConfigStoragePassword\r
260   StrCpy $ConfigStorageInstallService    "$OptService"\r
261   StrCpy $ConfigStorageStartService      "$OptStart"\r
262 \r
263   ;StrCpy $ConfigDirectorName            "$HostName-dir"\r
264   StrCpy $ConfigDirectorPort             9101\r
265   StrCpy $ConfigDirectorMaxJobs          1\r
266   ;StrCpy $ConfigDirectorPassword\r
267   StrCpy $ConfigDirectorDB               0\r
268   StrCpy $ConfigDirectorInstallService   "$OptService"\r
269   StrCpy $ConfigDirectorStartService     "$OptStart"\r
270 \r
271   StrCpy $ConfigMonitorName              "$HostName-mon"\r
272   ;StrCpy $ConfigMonitorPassword\r
273 \r
274   InitPluginsDir\r
275   File "/oname=$PLUGINSDIR\openssl.exe"  "${SRC_DIR}\openssl.exe"\r
276   File "/oname=$PLUGINSDIR\libeay32.dll" "${SRC_DIR}\libeay32.dll"\r
277   File "/oname=$PLUGINSDIR\ssleay32.dll" "${SRC_DIR}\ssleay32.dll"\r
278   File "/oname=$PLUGINSDIR\sed.exe"      "${SRC_DIR}\sed.exe"\r
279 \r
280   !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "InstallType.ini"\r
281   !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "WriteTemplates.ini"\r
282 \r
283   SetPluginUnload alwaysoff\r
284 \r
285   nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'\r
286   pop $R0\r
287   ${If} $R0 = 0\r
288    FileOpen $R1 "$PLUGINSDIR\pw.txt" r\r
289    IfErrors +4\r
290      FileRead $R1 $R0\r
291      ${StrTrimNewLines} $ConfigClientPassword $R0\r
292      FileClose $R1\r
293   ${EndIf}\r
294 \r
295   nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'\r
296   pop $R0\r
297   ${If} $R0 = 0\r
298    FileOpen $R1 "$PLUGINSDIR\pw.txt" r\r
299    IfErrors +4\r
300      FileRead $R1 $R0\r
301      ${StrTrimNewLines} $ConfigStoragePassword $R0\r
302      FileClose $R1\r
303   ${EndIf}\r
304 \r
305   nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'\r
306   pop $R0\r
307   ${If} $R0 = 0\r
308    FileOpen $R1 "$PLUGINSDIR\pw.txt" r\r
309    IfErrors +4\r
310      FileRead $R1 $R0\r
311      ${StrTrimNewLines} $LocalDirectorPassword $R0\r
312      FileClose $R1\r
313   ${EndIf}\r
314 \r
315   SetPluginUnload manual\r
316 \r
317   nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'\r
318   pop $R0\r
319   ${If} $R0 = 0\r
320    FileOpen $R1 "$PLUGINSDIR\pw.txt" r\r
321    IfErrors +4\r
322      FileRead $R1 $R0\r
323      ${StrTrimNewLines} $ConfigMonitorPassword $R0\r
324      FileClose $R1\r
325   ${EndIf}\r
326 \r
327   Pop $R1\r
328   Pop $R0\r
329 FunctionEnd\r
330 \r
331 Function .onSelChange\r
332   Call UpdateComponentUI\r
333 FunctionEnd\r
334 \r
335 Function InstallCommonFiles\r
336   ${If} $CommonFilesDone = 0\r
337     SetOutPath "$INSTDIR"\r
338     File "Readme.txt"\r
339 \r
340     SetOutPath "$INSTDIR\bin"\r
341 !if "${BUILD_TOOLS}" == "VC8"\r
342     File "${SRC_DIR}\msvcm80.dll"\r
343     File "${SRC_DIR}\msvcp80.dll"\r
344     File "${SRC_DIR}\msvcr80.dll"\r
345     File "${SRC_DIR}\Microsoft.VC80.CRT.manifest"\r
346     File "${SRC_DIR}\pthreadVCE.dll"\r
347 !endif\r
348 !if "${BUILD_TOOLS}" == "VC8_DEBUG"\r
349     File "${SRC_DIR}\msvcm80.dll"\r
350     File "${SRC_DIR}\msvcp80.dll"\r
351     File "${SRC_DIR}\msvcr80.dll"\r
352     File "${SRC_DIR}\Microsoft.VC80.CRT.manifest"\r
353     File "${SRC_DIR}\msvcm80d.dll"\r
354     File "${SRC_DIR}\msvcp80d.dll"\r
355     File "${SRC_DIR}\msvcr80d.dll"\r
356     File "${SRC_DIR}\Microsoft.VC80.DebugCRT.manifest"\r
357     File "${SRC_DIR}\pthreadVCE.dll"\r
358 !endif\r
359 !if "${BUILD_TOOLS}" == "MinGW"\r
360     File "${SRC_DIR}\mingwm10.dll"\r
361     File "${SRC_DIR}\pthreadGCE.dll"\r
362 !endif\r
363     File "${SRC_DIR}\libeay32.dll"\r
364     File "${SRC_DIR}\ssleay32.dll"\r
365     File "${SRC_DIR}\zlib1.dll"\r
366 !if "${BUILD_TOOLS}" == "VC8"\r
367     File "${SRC_DIR}\zlib1.dll.manifest"\r
368 !endif\r
369 !If "${BUILD_TOOLS}" == "VC8_DEBUG"\r
370     File "${SRC_DIR}\zlib1.dll.manifest"\r
371 !endif\r
372     File "/oname=$INSTDIR\openssl.cnf" "${SRC_DIR}\openssl.cnf"\r
373     File "${SRC_DIR}\openssl.exe"\r
374     File "${SRC_DIR}\bsleep.exe"\r
375     File "${SRC_DIR}\bsmtp.exe"\r
376     File "${SRC_DIR}\bacula.dll"\r
377     File "${SRC_DIR}\expr64.exe"\r
378     File "${SRC_DIR}\snooze.exe"\r
379 \r
380     CreateShortCut "$SMPROGRAMS\Bacula\Documentation\View Readme.lnk" "write.exe" '"$INSTDIR\Readme.txt"'\r
381 \r
382     StrCpy $CommonFilesDone 1\r
383   ${EndIf}\r
384 FunctionEnd\r
385 \r
386 Section "-Initialize"\r
387   ${If} $MySQLPath != ""\r
388     DetailPrint "Found MySQL (version $MySQLVersion)"\r
389   ${EndIf}\r
390   ${If} $PostgreSQLPath != ""\r
391     DetailPrint "Found PostgreSQL (version $PostgreSQLVersion)"\r
392   ${EndIf}\r
393 \r
394   WriteRegStr   HKLM Software\Bacula InstallLocation "$INSTDIR"\r
395 \r
396   Call GetSelectedComponents\r
397   Pop $R2\r
398   WriteRegDWORD HKLM Software\Bacula Components $R2\r
399 \r
400   WriteRegDWORD HKLM Software\Bacula Database $ConfigDirectorDB\r
401 \r
402   ; remove start menu items\r
403   SetShellVarContext all\r
404 \r
405   Delete /REBOOTOK "$SMPROGRAMS\Bacula\Configuration\*"\r
406   Delete /REBOOTOK "$SMPROGRAMS\Bacula\Documentation\*"\r
407   Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"\r
408   RMDir "$SMPROGRAMS\Bacula\Configuration"\r
409   RMDir "$SMPROGRAMS\Bacula\Documentation"\r
410   RMDir "$SMPROGRAMS\Bacula"\r
411   CreateDirectory "$SMPROGRAMS\Bacula"\r
412   CreateDirectory "$SMPROGRAMS\Bacula\Configuration"\r
413   CreateDirectory "$SMPROGRAMS\Bacula\Documentation"\r
414 \r
415   CreateDirectory "$INSTDIR"\r
416   CreateDirectory "$INSTDIR\bin"\r
417   CreateDirectory "$APPDATA\Bacula"\r
418   CreateDirectory "$APPDATA\Bacula\Work"\r
419   CreateDirectory "$APPDATA\Bacula\Spool"\r
420 \r
421   SetOutPath "$INSTDIR"\r
422   File "..\..\..\LICENSE"\r
423   Delete /REBOOTOK "$INSTDIR\bin\License.txt"\r
424 \r
425   FileOpen $R1 $PLUGINSDIR\config.sed w\r
426   FileWrite $R1 "s;@VERSION@;${VERSION};g$\r$\n"\r
427   FileWrite $R1 "s;@DATE@;${__DATE__};g$\r$\n"\r
428   FileWrite $R1 "s;@DISTNAME@;Windows;g$\r$\n"\r
429 \r
430 !If "$BUILD_TOOLS" == "MinGW"\r
431   StrCpy $R2 "MinGW32"\r
432 !Else\r
433   StrCpy $R2 "MVS"\r
434 !EndIf\r
435 \r
436   Call GetHostName\r
437   Exch $R3\r
438   Pop $R3\r
439 \r
440   FileWrite $R1 "s;@DISTVER@;$R2;g$\r$\n"\r
441 \r
442   ${StrRep} $R2 "$APPDATA\Bacula\Work" "\" "\\\\"\r
443   FileWrite $R1 's;@working_dir@;$R2;g$\r$\n'\r
444   ${StrRep} $R2 "$APPDATA\Bacula\Work" "\" "\\"\r
445   FileWrite $R1 's;@working_dir_cmd@;$R2;g$\r$\n'\r
446 \r
447   ${StrRep} $R2 "$INSTDIR\bin" "\" "\\\\"\r
448   FileWrite $R1 's;@bin_dir@;$R2;g$\r$\n'\r
449   ${StrRep} $R2 "$INSTDIR\bin" "\" "\\"\r
450   FileWrite $R1 's;@bin_dir_cmd@;$R2;g$\r$\n'\r
451 \r
452   ${StrRep} $R2 "$INSTDIR" "\" "/"\r
453   FileWrite $R1 "s;@BUILD_DIR@;$R2;g$\r$\n"\r
454 \r
455   Call IsDirectorSelected\r
456   Pop $R2\r
457   ${If} $R2 = 1\r
458     FileWrite $R1 "s;@director_address@;$LocalHostAddress;g$\r$\n"\r
459   ${Else}\r
460     ${If} "$ConfigDirectorAddress" != ""\r
461       FileWrite $R1 "s;@director_address@;$ConfigDirectorAddress;g$\r$\n"\r
462     ${EndIf}\r
463   ${EndIf}\r
464 \r
465   FileWrite $R1 "s;@client_address@;$LocalHostAddress;g$\r$\n"\r
466   FileWrite $R1 "s;@storage_address@;$LocalHostAddress;g$\r$\n"\r
467 \r
468   ${If} "$ConfigClientName" != ""\r
469     FileWrite $R1 "s;@client_name@;$ConfigClientName;g$\r$\n"\r
470   ${EndIf}\r
471   ${If} "$ConfigClientPort" != ""\r
472     FileWrite $R1 "s;@client_port@;$ConfigClientPort;g$\r$\n"\r
473   ${EndIf}\r
474   ${If} "$ConfigClientMaxJobs" != ""\r
475     FileWrite $R1 "s;@client_maxjobs@;$ConfigClientMaxJobs;g$\r$\n"\r
476   ${EndIf}\r
477   ${If} "$ConfigClientPassword" != ""\r
478     FileWrite $R1 "s;@client_password@;$ConfigClientPassword;g$\r$\n"\r
479   ${EndIf}\r
480   ${If} "$ConfigStorageName" != ""\r
481     FileWrite $R1 "s;@storage_name@;$ConfigStorageName;g$\r$\n"\r
482   ${EndIf}\r
483   ${If} "$ConfigStoragePort" != ""\r
484     FileWrite $R1 "s;@storage_port@;$ConfigStoragePort;g$\r$\n"\r
485   ${EndIf}\r
486   ${If} "$ConfigStorageMaxJobs" != ""\r
487     FileWrite $R1 "s;@storage_maxjobs@;$ConfigStorageMaxJobs;g$\r$\n"\r
488   ${EndIf}\r
489   ${If} "$ConfigStoragePassword" != ""\r
490     FileWrite $R1 "s;@storage_password@;$ConfigStoragePassword;g$\r$\n"\r
491   ${EndIf}\r
492   ${If} "$ConfigDirectorName" != ""\r
493     FileWrite $R1 "s;@director_name@;$ConfigDirectorName;g$\r$\n"\r
494   ${EndIf}\r
495   ${If} "$ConfigDirectorPort" != ""\r
496     FileWrite $R1 "s;@director_port@;$ConfigDirectorPort;g$\r$\n"\r
497   ${EndIf}\r
498   ${If} "$ConfigDirectorMaxJobs" != ""\r
499     FileWrite $R1 "s;@director_maxjobs@;$ConfigDirectorMaxJobs;g$\r$\n"\r
500   ${EndIf}\r
501   ${If} "$ConfigDirectorPassword" != ""\r
502     FileWrite $R1 "s;@director_password@;$ConfigDirectorPassword;g$\r$\n"\r
503   ${EndIf}\r
504   ${If} "$ConfigDirectorMailServer" != ""\r
505     FileWrite $R1 "s;@smtp_host@;$ConfigDirectorMailServer;g$\r$\n"\r
506   ${EndIf}\r
507   ${If} "$ConfigDirectorMailAddress" != ""\r
508     FileWrite $R1 "s;@job_email@;$ConfigDirectorMailAddress;g$\r$\n"\r
509   ${EndIf}\r
510   ${If} "$ConfigMonitorName" != ""\r
511     FileWrite $R1 "s;@monitor_name@;$ConfigMonitorName;g$\r$\n"\r
512   ${EndIf}\r
513   ${If} "$ConfigMonitorPassword" != ""\r
514     FileWrite $R1 "s;@monitor_password@;$ConfigMonitorPassword;g$\r$\n"\r
515   ${EndIf}\r
516 \r
517   ${If} $ConfigDirectorDB = 1\r
518     ${If} $MySQLPath != ""\r
519       ${StrRep} $R2 "$MySQLPath\bin" "\" "\\"\r
520       FileWrite $R1 "s;@SQL_BINDIR@;$R2;g$\r$\n"\r
521     ${EndIf}\r
522   ${ElseIf} $ConfigDirectorDB = 2\r
523     ${If} $PostgreSQLPath != ""\r
524       ${StrRep} $R2 "$PostgreSQLPath\bin" "\" "\\"\r
525       FileWrite $R1 "s;@SQL_BINDIR@;$R2;g$\r$\n"\r
526     ${EndIf}\r
527   ${EndIf}\r
528 \r
529   FileClose $R1\r
530 \r
531   ${If} $InstallType = ${MigrateInstall}\r
532     FileOpen $R1 $PLUGINSDIR\migrate.sed w\r
533     ${StrRep} $R2 "$APPDATA\Bacula\Work" "\" "\\\\"\r
534     FileWrite $R1 's;\(Working *Directory *= *\)[^ ][^ ]*.*$$;\1"$R2";$\r$\n'\r
535     FileWrite $R1 's;\(Pid *Directory *= *\)[^ ][^ ]*.*$$;\1"$R2";$\r$\n'\r
536     FileClose $R1\r
537   ${EndIf}\r
538 \r
539   ${If} ${FileExists} "$OldInstallDir\bin\bacula-fd.exe"\r
540     nsExec::ExecToLog '"$OldInstallDir\bin\bacula-fd.exe" /kill'     ; Shutdown any bacula that could be running\r
541     Sleep 3000\r
542     nsExec::ExecToLog '"$OldInstallDir\bin\bacula-fd.exe" /remove'   ; Remove existing service\r
543   ${EndIf}\r
544 \r
545   ${If} ${FileExists} "$OldInstallDir\bin\bacula-sd.exe"\r
546     nsExec::ExecToLog '"$OldInstallDir\bin\bacula-sd.exe" /kill'     ; Shutdown any bacula that could be running\r
547     Sleep 3000\r
548     nsExec::ExecToLog '"$OldInstallDir\bin\bacula-sd.exe" /remove'   ; Remove existing service\r
549   ${EndIf}\r
550 \r
551   ${If} ${FileExists} "$OldInstallDir\bin\bacula-dir.exe"\r
552     nsExec::ExecToLog '"$OldInstallDir\bin\bacula-dir.exe" /kill'     ; Shutdown any bacula that could be running\r
553     Sleep 3000\r
554     nsExec::ExecToLog '"$OldInstallDir\bin\bacula-dir.exe" /remove'   ; Remove existing service\r
555   ${EndIf}\r
556 \r
557 SectionEnd\r
558 \r
559 SectionGroup "Client" SecGroupClient\r
560 \r
561 Section "File Service" SecFileDaemon\r
562   SectionIn 1 2 3\r
563 \r
564   SetOutPath "$INSTDIR\bin"\r
565 \r
566   File "${SRC_DIR}\bacula-fd.exe"\r
567 \r
568   ${If} $InstallType = ${MigrateInstall}\r
569   ${AndIf} ${FileExists} "$OldInstallDir\bin\bacula-fd.conf"\r
570     CopyFiles "$OldInstallDir\bin\bacula-fd.conf" "$APPDATA\Bacula"\r
571     nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\migrate.sed" -i.bak "$APPDATA\Bacula\bacula-fd.conf"'\r
572   ${Else}\r
573     File "/oname=$PLUGINSDIR\bacula-fd.conf" "bacula-fd.conf.in"\r
574 \r
575     StrCpy $0 "$APPDATA\Bacula"\r
576     StrCpy $1 bacula-fd.conf\r
577     Call ConfigEditAndCopy\r
578   ${EndIf}\r
579 \r
580   StrCpy $0 bacula-fd\r
581   StrCpy $1 "File Service"\r
582   StrCpy $2 $ConfigClientInstallService\r
583   StrCpy $3 $ConfigClientStartService\r
584 \r
585   Call InstallDaemon\r
586 \r
587   CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Client Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bacula-fd.conf"'\r
588 SectionEnd\r
589 \r
590 SectionGroupEnd\r
591 \r
592 SectionGroup "Server" SecGroupServer\r
593 \r
594 Section "Storage Service" SecStorageDaemon\r
595   SectionIn 2 3\r
596 \r
597   SetOutPath "$INSTDIR\bin"\r
598 \r
599   File "${SRC_DIR}\loaderinfo.exe"\r
600   File "${SRC_DIR}\mt.exe"\r
601   File "${SRC_DIR}\mtx.exe"\r
602   File "${SRC_DIR}\scsitape.exe"\r
603   File "${SRC_DIR}\tapeinfo.exe"\r
604   File "${SRC_DIR}\bacula-sd.exe"\r
605   File "${SRC_DIR}\bcopy.exe"\r
606   File "${SRC_DIR}\bextract.exe"\r
607   File "${SRC_DIR}\bls.exe"\r
608   File "${SRC_DIR}\bscan.exe"\r
609   File "${SRC_DIR}\btape.exe"\r
610   File "${SRC_DIR}\scsilist.exe"\r
611   File "${SRC_DIR}\mkisofs.exe"\r
612   File "${SRC_DIR}\growisofs.exe"\r
613   File "${SRC_DIR}\dvd-ram-control.exe"\r
614   File "${SRC_DIR}\dvd+rw-booktype.exe"\r
615   File "${SRC_DIR}\dvd+rw-format.exe"\r
616   File "${SRC_DIR}\dvd+rw-mediainfo.exe"\r
617 \r
618   File "/oname=$PLUGINSDIR\mtx-changer.cmd" "${SRC_DIR}\mtx-changer.cmd"\r
619 \r
620   StrCpy $0 "$INSTDIR\bin"\r
621   StrCpy $1 mtx-changer.cmd\r
622   Call ConfigEditAndCopy\r
623 \r
624   File "/oname=$PLUGINSDIR\disk-changer.cmd" "${SRC_DIR}\disk-changer.cmd"\r
625 \r
626   StrCpy $0 "$INSTDIR\bin"\r
627   StrCpy $1 disk-changer.cmd\r
628   Call ConfigEditAndCopy\r
629 \r
630   File "/oname=$PLUGINSDIR\dvd-handler.cmd" "${SRC_DIR}\dvd-handler.cmd"\r
631 \r
632   StrCpy $0 "$INSTDIR\bin"\r
633   StrCpy $1 dvd-handler.cmd\r
634   Call ConfigEditAndCopy\r
635 \r
636   File "/oname=$PLUGINSDIR\bacula-sd.conf" "bacula-sd.conf.in"\r
637 \r
638   StrCpy $0 "$APPDATA\Bacula"\r
639   StrCpy $1 bacula-sd.conf\r
640   Call ConfigEditAndCopy\r
641 \r
642   StrCpy $0 bacula-sd\r
643   StrCpy $1 "Storage Service"\r
644   StrCpy $2 $ConfigStorageInstallService\r
645   StrCpy $3 $ConfigStorageStartService\r
646   Call InstallDaemon\r
647 \r
648   CreateShortCut "$SMPROGRAMS\Bacula\Configuration\List Devices.lnk" "$INSTDIR\bin\scsilist.exe" "/pause"\r
649   CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Storage Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bacula-sd.conf"'\r
650 SectionEnd\r
651 \r
652 Section "Director Service" SecDirectorDaemon\r
653   SectionIn 2 3\r
654 \r
655   SetOutPath "$INSTDIR\bin"\r
656 \r
657   ${If} $ConfigDirectorDB = 1\r
658     File /oname=bacula_cats.dll "${SRC_DIR}\cats_mysql.dll"\r
659     File "${SRC_DIR}\libmysql.dll"\r
660     File /oname=$PLUGINSDIR\create_database.cmd ${SRC_DIR}\create_mysql_database.cmd\r
661     File /oname=$PLUGINSDIR\drop_database.cmd ${SRC_DIR}\drop_mysql_database.cmd\r
662     File /oname=$PLUGINSDIR\make_tables.cmd ${SRC_DIR}\make_mysql_tables.cmd\r
663     File ${SRC_DIR}\make_mysql_tables.sql\r
664     File /oname=$PLUGINSDIR\drop_tables.cmd ${SRC_DIR}\drop_mysql_tables.cmd\r
665     File ${SRC_DIR}\drop_mysql_tables.sql\r
666     File /oname=$PLUGINSDIR\grant_privileges.cmd ${SRC_DIR}\grant_mysql_privileges.cmd\r
667     File ${SRC_DIR}\grant_mysql_privileges.sql\r
668     File /oname=$PLUGINSDIR\make_catalog_backup.cmd ${SRC_DIR}\make_mysql_catalog_backup.cmd\r
669   ${ElseIf} $ConfigDirectorDB = 2\r
670     File /oname=bacula_cats.dll "${SRC_DIR}\cats_postgresql.dll"\r
671     File "${SRC_DIR}\libpq.dll"\r
672 !if "${BUILD_TOOLS}" == "VC8"\r
673     File "${SRC_DIR}\comerr32.dll"\r
674     File "${SRC_DIR}\libintl-2.dll"\r
675     File "${SRC_DIR}\libiconv-2.dll"\r
676     File "${SRC_DIR}\krb5_32.dll"\r
677 !endif\r
678 !If "${BUILD_TOOLS}" == "VC8_DEBUG"\r
679     File "${SRC_DIR}\comerr32.dll"\r
680     File "${SRC_DIR}\libintl-2.dll"\r
681     File "${SRC_DIR}\libiconv-2.dll"\r
682     File "${SRC_DIR}\krb5_32.dll"\r
683 !endif\r
684     File /oname=$PLUGINSDIR\create_database.cmd ${SRC_DIR}\create_postgresql_database.cmd\r
685     File /oname=$PLUGINSDIR\drop_database.cmd ${SRC_DIR}\drop_postgresql_database.cmd\r
686     File /oname=$PLUGINSDIR\make_tables.cmd ${SRC_DIR}\make_postgresql_tables.cmd\r
687     File ${SRC_DIR}\create_postgresql_database.sql\r
688     File ${SRC_DIR}\make_postgresql_tables.sql\r
689     File /oname=$PLUGINSDIR\drop_tables.cmd ${SRC_DIR}\drop_postgresql_tables.cmd\r
690     File ${SRC_DIR}\drop_postgresql_tables.sql\r
691     File /oname=$PLUGINSDIR\grant_privileges.cmd ${SRC_DIR}\grant_postgresql_privileges.cmd\r
692     File ${SRC_DIR}\grant_postgresql_privileges.sql\r
693     File /oname=$PLUGINSDIR\make_catalog_backup.cmd ${SRC_DIR}\make_postgresql_catalog_backup.cmd\r
694   ${ElseIf} $ConfigDirectorDB = 3\r
695     File "${SRC_DIR}\sqlite3.exe"\r
696 !if "${BUILD_TOOLS}" == "VC8"\r
697     File "${SRC_DIR}\sqlite3.exe.manifest"\r
698 !endif\r
699 !If "${BUILD_TOOLS}" == "VC8_DEBUG"\r
700     File "${SRC_DIR}\sqlite3.exe.manifest"\r
701 !endif\r
702     File /oname=bacula_cats.dll "${SRC_DIR}\cats_sqlite3.dll"\r
703     File /oname=$PLUGINSDIR\create_database.cmd ${SRC_DIR}\create_sqlite3_database.cmd\r
704     File /oname=$PLUGINSDIR\drop_database.cmd ${SRC_DIR}\drop_sqlite3_database.cmd\r
705     File /oname=$PLUGINSDIR\make_tables.cmd ${SRC_DIR}\make_sqlite3_tables.cmd\r
706     File ${SRC_DIR}\make_sqlite3_tables.sql\r
707     File /oname=$PLUGINSDIR\drop_tables.cmd ${SRC_DIR}\drop_sqlite3_tables.cmd\r
708     File /oname=$PLUGINSDIR\grant_privileges.cmd ${SRC_DIR}\grant_sqlite3_privileges.cmd\r
709     File /oname=$PLUGINSDIR\make_catalog_backup.cmd ${SRC_DIR}\make_sqlite3_catalog_backup.cmd\r
710   ${EndIf}\r
711 \r
712   File "${SRC_DIR}\bacula-dir.exe"\r
713   File "${SRC_DIR}\dbcheck.exe"\r
714 \r
715   File "/oname=$PLUGINSDIR\delete_catalog_backup.cmd" "${SRC_DIR}\delete_catalog_backup.cmd"\r
716 \r
717   StrCpy $0 "$INSTDIR\bin"\r
718   \r
719   StrCpy $1 create_database.cmd\r
720   Call ConfigEditAndCopy\r
721 \r
722   StrCpy $1 drop_database.cmd\r
723   Call ConfigEditAndCopy\r
724 \r
725   StrCpy $1 make_tables.cmd\r
726   Call ConfigEditAndCopy\r
727 \r
728   StrCpy $1 drop_tables.cmd\r
729   Call ConfigEditAndCopy\r
730 \r
731   StrCpy $1 grant_privileges.cmd\r
732   Call ConfigEditAndCopy\r
733 \r
734   StrCpy $1 make_catalog_backup.cmd\r
735   Call ConfigEditAndCopy\r
736 \r
737   StrCpy $1 delete_catalog_backup.cmd\r
738   Call ConfigEditAndCopy\r
739 \r
740   File "${SRC_DIR}\query.sql"\r
741 \r
742   File "/oname=$PLUGINSDIR\bacula-dir.conf" "bacula-dir.conf.in"\r
743 \r
744   StrCpy $0 "$APPDATA\Bacula"\r
745   StrCpy $1 bacula-dir.conf\r
746   Call ConfigEditAndCopy\r
747 \r
748   StrCpy $0 bacula-dir\r
749   StrCpy $1 "Director Service"\r
750   StrCpy $2 $ConfigDirectorInstallService\r
751   StrCpy $3 $ConfigDirectorStartService\r
752   Call InstallDaemon\r
753 \r
754   CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Director Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bacula-dir.conf"'\r
755 SectionEnd\r
756 \r
757 SectionGroupEnd\r
758 \r
759 SectionGroup "Consoles" SecGroupConsoles\r
760 \r
761 Section "Command Console" SecConsole\r
762   SectionIn 1 2 3\r
763 \r
764   SetOutPath "$INSTDIR\bin"\r
765 \r
766   File "${SRC_DIR}\bconsole.exe"\r
767   Call InstallCommonFiles\r
768 \r
769   ${If} $InstallType = ${MigrateInstall}\r
770   ${AndIf} ${FileExists} "$OldInstallDir\bin\bconsole.conf"\r
771     CopyFiles "$OldInstallDir\bin\bconsole.conf" "$APPDATA\Bacula"\r
772   ${Else}\r
773     File "/oname=$PLUGINSDIR\bconsole.conf" "bconsole.conf.in"\r
774     StrCpy $0 "$APPDATA\Bacula"\r
775     StrCpy $1 bconsole.conf\r
776     Call ConfigEditAndCopy\r
777   ${EndIf}\r
778 \r
779   CreateShortCut "$SMPROGRAMS\Bacula\bconsole.lnk" "$INSTDIR\bin\bconsole.exe" '-c "$APPDATA\Bacula\bconsole.conf"' "$INSTDIR\bin\bconsole.exe" 0\r
780   CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Command Console Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bconsole.conf"'\r
781 \r
782 SectionEnd\r
783 \r
784 Section "Graphical Console" SecWxConsole\r
785   SectionIn 1 2 3\r
786   \r
787   SetOutPath "$INSTDIR\bin"\r
788 \r
789   Call InstallCommonFiles\r
790 !if "${BUILD_TOOLS}" == "VC8"\r
791   File "${SRC_DIR}\wxbase28_vc_bacula.dll"\r
792   File "${SRC_DIR}\wxmsw28_core_vc_bacula.dll"\r
793 !endif\r
794 !If "${BUILD_TOOLS}" == "VC8_DEBUG"\r
795   File "${SRC_DIR}\wxbase28_vc_bacula.dll"\r
796   File "${SRC_DIR}\wxmsw28_core_vc_bacula.dll"\r
797 !endif\r
798 !if "${BUILD_TOOLS}" == "MinGW"\r
799   File "${SRC_DIR}\wxbase28_gcc_bacula.dll"\r
800   File "${SRC_DIR}\wxmsw28_core_gcc_bacula.dll"\r
801 !endif\r
802 \r
803   File "${SRC_DIR}\bwx-console.exe"\r
804 \r
805   ${If} $InstallType = ${MigrateInstall}\r
806   ${AndIf} ${FileExists} "$OldInstallDir\bin\bwx-console.conf"\r
807     CopyFiles "$OldInstallDir\bin\bwx-console.conf" "$APPDATA\Bacula"\r
808   ${Else}\r
809     File "/oname=$PLUGINSDIR\bwx-console.conf" "bwx-console.conf.in"\r
810     StrCpy $0 "$APPDATA\Bacula"\r
811     StrCpy $1 bwx-console.conf\r
812     Call ConfigEditAndCopy\r
813   ${EndIf}\r
814 \r
815   ; Create Start Menu entry\r
816   CreateShortCut "$SMPROGRAMS\Bacula\bwx-console.lnk" "$INSTDIR\bin\bwx-console.exe" '-c "$APPDATA\Bacula\bwx-console.conf"' "$INSTDIR\bin\bwx-console.exe" 0\r
817   CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Graphical Console Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bwx-console.conf"'\r
818 SectionEnd\r
819 \r
820 SectionGroupEnd\r
821 \r
822 SectionGroup "Documentation" SecGroupDocumentation\r
823 \r
824 Section "Documentation (Acrobat Format)" SecDocPdf\r
825   SectionIn 1 2 3\r
826 \r
827   SetOutPath "$INSTDIR\doc"\r
828   CreateDirectory "$INSTDIR\doc"\r
829 \r
830   File "${SRC_DIR}\manual\bacula.pdf"\r
831   CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Manual.lnk" '"$INSTDIR\doc\bacula.pdf"'\r
832 SectionEnd\r
833 \r
834 Section "Documentation (HTML Format)" SecDocHtml\r
835   SectionIn 3\r
836 \r
837   SetOutPath "$INSTDIR\doc"\r
838   CreateDirectory "$INSTDIR\doc"\r
839 \r
840   File "${SRC_DIR}\manual\bacula\*.html"\r
841   File "${SRC_DIR}\manual\bacula\*.png"\r
842   File "${SRC_DIR}\manual\bacula\*.css"\r
843   CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Manual (HTML).lnk" '"$INSTDIR\doc\index.html"'\r
844 SectionEnd\r
845 \r
846 SectionGroupEnd\r
847 \r
848 Section "-Finish"\r
849   Push $R0\r
850 \r
851   ${If} $OsIsNT = 1\r
852     nsExec::ExecToLog 'cmd.exe /C echo Y|cacls "$INSTDIR" /T /G SYSTEM:F Administrators:F'\r
853     nsExec::ExecToLog 'cmd.exe /C echo Y|cacls "$APPDATA\Bacula" /T /G SYSTEM:F Administrators:F'\r
854   ${EndIf}\r
855 \r
856   ; Write the uninstall keys for Windows & create Start Menu entry\r
857   WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayName" "Bacula"\r
858   WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "InstallLocation" "$INSTDIR"\r
859   WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayVersion" "${VERSION}"\r
860   ${StrTok} $R0 "${VERSION}" "." 0 0\r
861   WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMajor" $R0\r
862   ${StrTok} $R0 "${VERSION}" "." 1 0\r
863   WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMinor" $R0\r
864   WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoModify" 1\r
865   WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoRepair" 1\r
866   WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLUpdateInfo" "http://sourceforge.net/project/showfiles.php?group_id=50727"\r
867   WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLInfoAbout" "http://www.bacula.org"\r
868   WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "HelpLink" "http://www.bacula.org/?page=support"\r
869   WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString" '"$INSTDIR\uninstall.exe"'\r
870   WriteUninstaller "$INSTDIR\Uninstall.exe"\r
871   CreateShortCut "$SMPROGRAMS\Bacula\Uninstall Bacula.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0\r
872   Pop $R0\r
873 SectionEnd\r
874 \r
875 ; Extra Page descriptions\r
876 \r
877 LangString DESC_SecFileDaemon ${LANG_ENGLISH} "Install Bacula File Daemon on this system."\r
878 LangString DESC_SecStorageDaemon ${LANG_ENGLISH} "Install Bacula Storage Daemon on this system."\r
879 LangString DESC_SecDirectorDaemon ${LANG_ENGLISH} "Install Bacula Director Daemon on this system."\r
880 LangString DESC_SecConsole ${LANG_ENGLISH} "Install command console program on this system."\r
881 LangString DESC_SecWxConsole ${LANG_ENGLISH} "Install graphical console program on this system."\r
882 LangString DESC_SecDocPdf ${LANG_ENGLISH} "Install documentation in Acrobat format on this system."\r
883 LangString DESC_SecDocHtml ${LANG_ENGLISH} "Install documentation in HTML format on this system."\r
884 \r
885 LangString TITLE_ConfigPage1 ${LANG_ENGLISH} "Configuration"\r
886 LangString SUBTITLE_ConfigPage1 ${LANG_ENGLISH} "Set installation configuration."\r
887 \r
888 LangString TITLE_ConfigPage2 ${LANG_ENGLISH} "Configuration (continued)"\r
889 LangString SUBTITLE_ConfigPage2 ${LANG_ENGLISH} "Set installation configuration."\r
890 \r
891 LangString TITLE_InstallType ${LANG_ENGLISH} "Installation Type"\r
892 LangString SUBTITLE_InstallType ${LANG_ENGLISH} "Choose installation type."\r
893 \r
894 LangString TITLE_WriteTemplates ${LANG_ENGLISH} "Create Templates"\r
895 LangString SUBTITLE_WriteTemplates ${LANG_ENGLISH} "Create resource templates for inclusion in the Director's configuration file."\r
896 \r
897 !InsertMacro MUI_FUNCTION_DESCRIPTION_BEGIN\r
898   !InsertMacro MUI_DESCRIPTION_TEXT ${SecFileDaemon} $(DESC_SecFileDaemon)\r
899   !InsertMacro MUI_DESCRIPTION_TEXT ${SecStorageDaemon} $(DESC_SecStorageDaemon)\r
900   !InsertMacro MUI_DESCRIPTION_TEXT ${SecDirectorDaemon} $(DESC_SecDirectorDaemon)\r
901   !InsertMacro MUI_DESCRIPTION_TEXT ${SecConsole} $(DESC_SecConsole)\r
902   !InsertMacro MUI_DESCRIPTION_TEXT ${SecWxConsole} $(DESC_SecWxConsole)\r
903   !InsertMacro MUI_DESCRIPTION_TEXT ${SecDocPdf} $(DESC_SecDocPdf)\r
904   !InsertMacro MUI_DESCRIPTION_TEXT ${SecDocHtml} $(DESC_SecDocHtml)\r
905 !InsertMacro MUI_FUNCTION_DESCRIPTION_END\r
906 \r
907 ; Uninstall section\r
908 \r
909 UninstallText "This will uninstall Bacula. Hit next to continue."\r
910 \r
911 Section "Uninstall"\r
912   ; Shutdown any baculum that could be running\r
913   nsExec::ExecToLog '"$INSTDIR\bin\bacula-fd.exe" /kill'\r
914   nsExec::ExecToLog '"$INSTDIR\bin\bacula-sd.exe" /kill'\r
915   nsExec::ExecToLog '"$INSTDIR\bin\bacula-dir.exe" /kill'\r
916   Sleep 3000\r
917 \r
918   ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-fd"\r
919   ${If} $R0 = 1\r
920     ; Remove bacula service\r
921     nsExec::ExecToLog '"$INSTDIR\bin\bacula-fd.exe" /remove'\r
922   ${EndIf}\r
923   \r
924   ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-sd"\r
925   ${If} $R0 = 1\r
926     ; Remove bacula service\r
927     nsExec::ExecToLog '"$INSTDIR\bin\bacula-sd.exe" /remove'\r
928   ${EndIf}\r
929   \r
930   ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-dir"\r
931   ${If} $R0 = 1\r
932     ; Remove bacula service\r
933     nsExec::ExecToLog '"$INSTDIR\bin\bacula-dir.exe" /remove'\r
934   ${EndIf}\r
935   \r
936   ; remove registry keys\r
937   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"\r
938   DeleteRegKey HKLM "Software\Bacula"\r
939 \r
940   ; remove start menu items\r
941   SetShellVarContext all\r
942   Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"\r
943   RMDir "$SMPROGRAMS\Bacula"\r
944 \r
945   ; remove files and uninstaller (preserving config for now)\r
946   Delete /REBOOTOK "$INSTDIR\bin\*"\r
947   Delete /REBOOTOK "$INSTDIR\doc\*"\r
948   Delete /REBOOTOK "$INSTDIR\*"\r
949 \r
950   ; Check for existing installation\r
951   MessageBox MB_YESNO|MB_ICONQUESTION \\r
952   "Would you like to delete the current configuration files and the working state file?" IDNO NoDel\r
953     Delete /REBOOTOK "$APPDATA\Bacula\*"\r
954     Delete /REBOOTOK "$APPDATA\Bacula\Work\*"\r
955     Delete /REBOOTOK "$APPDATA\Bacula\Spool\*"\r
956     Delete /REBOOTOK "$PLUGINSDIR\bacula-*.conf"\r
957     Delete /REBOOTOK "$PLUGINSDIR\*console.conf"\r
958     Delete /REBOOTOK "$PLUGINSDIR\*conf.in"\r
959     Delete /REBOOTOK "$PLUGINSDIR\openssl.exe"\r
960     Delete /REBOOTOK "$PLUGINSDIR\libeay32.dll"\r
961     Delete /REBOOTOK "$PLUGINSDIR\ssleay32.dll"\r
962     Delete /REBOOTOK "$PLUGINSDIR\sed.exe"    \r
963     Delete /REBOOTOK "$PLUGINSDIR\pw.txt"     \r
964     Delete /REBOOTOK "$PLUGINSDIR\*.sed" \r
965     Delete /REBOOTOK "$PLUGINSDIR\*.cmd"    \r
966     Delete /REBOOTOK "$PLUGINSDIR\*.sql"    \r
967     RMDir "$APPDATA\Bacula\Work"\r
968     RMDir "$APPDATA\Bacula\Spool"\r
969     RMDir "$APPDATA\Bacula"\r
970 NoDel:\r
971 \r
972   ; remove directories used\r
973   RMDir "$INSTDIR\bin"\r
974   RMDir "$INSTDIR\doc"\r
975   RMDir "$INSTDIR"\r
976 SectionEnd\r
977 \r
978 ;\r
979 ; $0 - Service Name (ie Bacula-FD)\r
980 ; $1 - Service Description (ie Bacula File Daemon)\r
981 ; $2 - Install as Service\r
982 ; $3 - Start Service now\r
983 ;\r
984 Function InstallDaemon\r
985   Call InstallCommonFiles\r
986 \r
987   WriteRegDWORD HKLM "Software\Bacula" "Service_$0" $2\r
988   \r
989   ${If} $2 = 1\r
990     nsExec::ExecToLog '"$INSTDIR\bin\$0.exe" /install -c "$APPDATA\Bacula\$0.conf"'\r
991 \r
992     ${If} $OsIsNT <> 1\r
993       File "Start.bat"\r
994       File "Stop.bat"\r
995     ${EndIf}\r
996 \r
997     ; Start the service?\r
998 \r
999     ${If} $3 = 1  \r
1000       ${If} $OsIsNT = 1\r
1001         nsExec::ExecToLog 'net start $0'\r
1002       ${Else}\r
1003         Exec '"$INSTDIR\bin\$0.exe" -c "$APPDATA\Bacula\$0.conf"'\r
1004       ${EndIf}\r
1005     ${EndIf}\r
1006   ${Else}\r
1007     CreateShortCut "$SMPROGRAMS\Bacula\Start $1.lnk" "$INSTDIR\bin\$0.exe" '-c "$APPDATA\Bacula\$0.conf"' "$INSTDIR\bin\$0.exe" 0\r
1008   ${EndIf}\r
1009 FunctionEnd\r
1010 \r
1011 Function GetComputerName\r
1012   Push $R0\r
1013   Push $R1\r
1014   Push $R2\r
1015 \r
1016   System::Call "kernel32::GetComputerNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2"\r
1017 \r
1018   ${StrCase} $R0 $R0 "L"\r
1019 \r
1020   Pop $R2\r
1021   Pop $R1\r
1022   Exch $R0\r
1023 FunctionEnd\r
1024 \r
1025 !define ComputerNameDnsFullyQualified   3\r
1026 \r
1027 Function GetHostName\r
1028   Push $R0\r
1029   Push $R1\r
1030   Push $R2\r
1031 \r
1032   ${If} $OsIsNT = 1\r
1033     System::Call "kernel32::GetComputerNameExA(i ${ComputerNameDnsFullyQualified}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"\r
1034     ${If} $R2 = 0\r
1035       Pop $R2\r
1036       DetailPrint "GetComputerNameExA failed - LastError = $R2"\r
1037       Call GetComputerName\r
1038       Pop $R0\r
1039     ${Else}\r
1040       Pop $R2\r
1041     ${EndIf}\r
1042   ${Else}\r
1043     Call GetComputerName\r
1044     Pop $R0\r
1045   ${EndIf}\r
1046 \r
1047   Pop $R2\r
1048   Pop $R1\r
1049   Exch $R0\r
1050 FunctionEnd\r
1051 \r
1052 !define NameUserPrincipal 8\r
1053 \r
1054 Function GetUserName\r
1055   Push $R0\r
1056   Push $R1\r
1057   Push $R2\r
1058 \r
1059   ${If} $OsIsNT = 1\r
1060     System::Call "secur32::GetUserNameExA(i ${NameUserPrincipal}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"\r
1061     ${If} $R2 = 0\r
1062       Pop $R2\r
1063       DetailPrint "GetUserNameExA failed - LastError = $R2"\r
1064       Pop $R0\r
1065       StrCpy $R0 ""\r
1066     ${Else}\r
1067       Pop $R2\r
1068     ${EndIf}\r
1069   ${Else}\r
1070       StrCpy $R0 ""\r
1071   ${EndIf}\r
1072 \r
1073   ${If} $R0 == ""\r
1074     System::Call "advapi32::GetUserNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"\r
1075     ${If} $R2 = 0\r
1076       Pop $R2\r
1077       DetailPrint "GetUserNameA failed - LastError = $R2"\r
1078       StrCpy $R0 ""\r
1079     ${Else}\r
1080       Pop $R2\r
1081     ${EndIf}\r
1082   ${EndIf}\r
1083 \r
1084   Pop $R2\r
1085   Pop $R1\r
1086   Exch $R0\r
1087 FunctionEnd\r
1088 \r
1089 Function ConfigEditAndCopy\r
1090   Push $R1\r
1091 \r
1092   ${If} ${FileExists} "$0\$1"\r
1093     StrCpy $R1 ".new"\r
1094   ${Else}\r
1095     StrCpy $R1 ""\r
1096   ${EndIf}\r
1097 \r
1098   nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\$1"'\r
1099   CopyFiles "$PLUGINSDIR\$1" "$0\$1$R1"\r
1100 \r
1101   Pop $R1\r
1102 FunctionEnd\r
1103 \r
1104 Function FindDatabaseApps\r
1105   Push $R1\r
1106 \r
1107   ReadRegStr $0 HKLM "Software\MySQL AB\MySQL Server 5.0" "Location"\r
1108 \r
1109   ${If} $0 != ""\r
1110     Call RemoveTrailingSlash\r
1111     StrCpy $MySQLPath $0\r
1112     ReadRegStr $0 HKLM "Software\MySQL AB\MySQL Server 5.0" "Version"\r
1113     StrCpy $MySQLVersion $0\r
1114   ${EndIf}\r
1115 \r
1116   EnumRegKey $R1 HKLM "Software\PostgreSQL\Installations" 0\r
1117   ${If} $R1 != ""\r
1118     ReadRegStr $0 HKLM "Software\PostgreSQL\Installations\$R1" "Base Directory"\r
1119     Call RemoveTrailingSlash\r
1120     StrCpy $PostgreSQLPath $0\r
1121     ReadRegStr $0 HKLM "Software\PostgreSQL\Installations\$R1" "Version"\r
1122     StrCpy $PostgreSQLVersion $0\r
1123   ${EndIf}\r
1124 \r
1125   Pop $R1\r
1126 FunctionEnd\r
1127 \r
1128 Function RemoveTrailingSlash\r
1129   Push $R1\r
1130   StrCpy $R1 $0 "" -1\r
1131   ${If} $R1 == "\"\r
1132     StrCpy $0 $0 -1\r
1133   ${EndIf}\r
1134   Pop $R1\r
1135 FunctionEnd\r
1136 \r
1137 Function IsDirectorSelected\r
1138   Push $R0\r
1139   SectionGetFlags ${SecDirectorDaemon} $R0\r
1140   IntOp $R0 $R0 & ${SF_SELECTED}\r
1141   Exch $R0\r
1142 FunctionEnd\r
1143 \r
1144 Function GetSelectedComponents\r
1145   Push $R0\r
1146   StrCpy $R0 0\r
1147   ${If} ${SectionIsSelected} ${SecFileDaemon}\r
1148     IntOp $R0 $R0 | ${ComponentFile}\r
1149   ${EndIf}\r
1150   ${If} ${SectionIsSelected} ${SecStorageDaemon}\r
1151     IntOp $R0 $R0 | ${ComponentStorage}\r
1152   ${EndIf}\r
1153   ${If} ${SectionIsSelected} ${SecDirectorDaemon}\r
1154     IntOp $R0 $R0 | ${ComponentDirector}\r
1155   ${EndIf}\r
1156   ${If} ${SectionIsSelected} ${SecConsole}\r
1157     IntOp $R0 $R0 | ${ComponentTextConsole}\r
1158   ${EndIf}\r
1159   ${If} ${SectionIsSelected} ${SecWxConsole}\r
1160     IntOp $R0 $R0 | ${ComponentGUIConsole}\r
1161   ${EndIf}\r
1162   ${If} ${SectionIsSelected} ${SecDocPdf}\r
1163     IntOp $R0 $R0 | ${ComponentPDFDocs}\r
1164   ${EndIf}\r
1165   ${If} ${SectionIsSelected} ${SecDocHtml}\r
1166     IntOp $R0 $R0 | ${ComponentHTMLDocs}\r
1167   ${EndIf}\r
1168   Exch $R0\r
1169 FunctionEnd\r
1170 \r
1171 Function PageComponentsShow\r
1172   ${If} $OsIsNT <> 1\r
1173     Call DisableServerSections\r
1174   ${EndIf}\r
1175 \r
1176   Call SelectPreviousComponents\r
1177   Call UpdateComponentUI\r
1178 FunctionEnd\r
1179 \r
1180 Function PageDirectoryPre\r
1181   ${If} $AutomaticInstall = 1\r
1182   ${OrIf} $InstallType = ${UpgradeInstall}\r
1183     Abort\r
1184   ${EndIf}\r
1185 FunctionEnd\r
1186 \r
1187 Function LeaveInstallPage\r
1188   Push "$INSTDIR\install.log"\r
1189   Call DumpLog\r
1190 FunctionEnd\r
1191 \r
1192 Function EnterWriteTemplates\r
1193   Push $R0\r
1194   Push $R1\r
1195 \r
1196   Call GetSelectedComponents\r
1197   Pop $R0\r
1198 \r
1199   IntOp $R0 $R0 & ${ComponentDirector}\r
1200   IntOp $R1 $NewComponents & ${ComponentsFileAndStorage}\r
1201 \r
1202   ${If} $R0 <> 0\r
1203   ${OrIf} $R1 = 0\r
1204     Pop $R1\r
1205     Pop $R0\r
1206     Abort\r
1207   ${EndIf}\r
1208 \r
1209   IntOp $R0 $NewComponents & ${ComponentFile}\r
1210   ${If} $R0 = 0\r
1211     WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 0\r
1212     WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags DISABLED\r
1213     DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State\r
1214     WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST|DISABLED\r
1215   ${Else}\r
1216     WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 1\r
1217     DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags\r
1218     WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State "C:\$ConfigClientName.conf"\r
1219     WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST\r
1220   ${EndIf}\r
1221 \r
1222   IntOp $R0 $NewComponents & ${ComponentStorage}\r
1223   ${If} $R0 = 0\r
1224     WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 4" State 0\r
1225     WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 4" Flags DISABLED\r
1226     DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" State\r
1227     WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST|DISABLED\r
1228   ${Else}\r
1229     WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 4" State 1\r
1230     DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 4" Flags\r
1231     WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" State "C:\$ConfigStorageName.conf"\r
1232     WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST\r
1233   ${EndIf}\r
1234 \r
1235   !InsertMacro MUI_HEADER_TEXT "$(TITLE_WriteTemplates)" "$(SUBTITLE_WriteTemplates)"\r
1236   !InsertMacro MUI_INSTALLOPTIONS_DISPLAY "WriteTemplates.ini"\r
1237 \r
1238   !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 2" State\r
1239   ${If} $R0 <> 0\r
1240     File "/oname=$PLUGINSDIR\client.conf.in" "client.conf.in"\r
1241 \r
1242     nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\client.conf.in"'\r
1243     !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 3" State\r
1244     ${If} $R0 != ""\r
1245       CopyFiles "$PLUGINSDIR\client.conf.in" "$R0"\r
1246     ${EndIf}\r
1247   ${EndIf}\r
1248 \r
1249   !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 4" State\r
1250   ${If} $R0 <> 0\r
1251     File "/oname=$PLUGINSDIR\storage.conf.in" "storage.conf.in"\r
1252 \r
1253     nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\storage.conf.in"'\r
1254     !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 5" State\r
1255     ${If} $R0 != ""\r
1256       CopyFiles "$PLUGINSDIR\storage.conf.in" "$R0"\r
1257     ${EndIf}\r
1258   ${EndIf}\r
1259 \r
1260   Pop $R1\r
1261   Pop $R0\r
1262 FunctionEnd\r
1263 \r
1264 Function SelectPreviousComponents\r
1265   ${If} $InstallType <> ${NewInstall}\r
1266     IntOp $R1 $PreviousComponents & ${ComponentFile}\r
1267     ${If} $R1 <> 0\r
1268       !InsertMacro SelectSection ${SecFileDaemon}\r
1269       !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_RO}\r
1270     ${Else}\r
1271       !InsertMacro UnselectSection ${SecFileDaemon}\r
1272       !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_RO}\r
1273     ${EndIf}\r
1274     IntOp $R1 $PreviousComponents & ${ComponentStorage}\r
1275     ${If} $R1 <> 0\r
1276       !InsertMacro SelectSection ${SecStorageDaemon}\r
1277       !InsertMacro SetSectionFlag ${SecStorageDaemon} ${SF_RO}\r
1278     ${Else}\r
1279       !InsertMacro UnselectSection ${SecStorageDaemon}\r
1280       !InsertMacro ClearSectionFlag ${SecStorageDaemon} ${SF_RO}\r
1281     ${EndIf}\r
1282     IntOp $R1 $PreviousComponents & ${ComponentDirector}\r
1283     ${If} $R1 <> 0\r
1284       !InsertMacro SelectSection ${SecDirectorDaemon}\r
1285       !InsertMacro SetSectionFlag ${SecDirectorDaemon} ${SF_RO}\r
1286     ${Else}\r
1287       !InsertMacro UnselectSection ${SecDirectorDaemon}\r
1288       !InsertMacro ClearSectionFlag ${SecDirectorDaemon} ${SF_RO}\r
1289     ${EndIf}\r
1290     IntOp $R1 $PreviousComponents & ${ComponentTextConsole}\r
1291     ${If} $R1 <> 0\r
1292       !InsertMacro SelectSection ${SecConsole}\r
1293       !InsertMacro SetSectionFlag ${SecConsole} ${SF_RO}\r
1294     ${Else}\r
1295       !InsertMacro UnselectSection ${SecConsole}\r
1296       !InsertMacro ClearSectionFlag ${SecConsole} ${SF_RO}\r
1297     ${EndIf}\r
1298     IntOp $R1 $PreviousComponents & ${ComponentGUIConsole}\r
1299     ${If} $R1 <> 0\r
1300       !InsertMacro SelectSection ${SecWxConsole}\r
1301       !InsertMacro SetSectionFlag ${SecWxConsole} ${SF_RO}\r
1302     ${Else}\r
1303       !InsertMacro UnselectSection ${SecWxConsole}\r
1304       !InsertMacro ClearSectionFlag ${SecWxConsole} ${SF_RO}\r
1305     ${EndIf}\r
1306     IntOp $R1 $PreviousComponents & ${ComponentPDFDocs}\r
1307     ${If} $R1 <> 0\r
1308       !InsertMacro SelectSection ${SecDocPdf}\r
1309       !InsertMacro SetSectionFlag ${SecDocPdf} ${SF_RO}\r
1310     ${Else}\r
1311       !InsertMacro UnselectSection ${SecDocPdf}\r
1312       !InsertMacro ClearSectionFlag ${SecDocPdf} ${SF_RO}\r
1313     ${EndIf}\r
1314     IntOp $R1 $PreviousComponents & ${ComponentHTMLDocs}\r
1315     ${If} $R1 <> 0\r
1316       !InsertMacro SelectSection ${SecDocHtml}\r
1317       !InsertMacro SetSectionFlag ${SecDocHtml} ${SF_RO}\r
1318     ${Else}\r
1319       !InsertMacro UnselectSection ${SecDocHtml}\r
1320       !InsertMacro ClearSectionFlag ${SecDocHtml} ${SF_RO}\r
1321     ${EndIf}\r
1322   ${EndIf}\r
1323 FunctionEnd\r
1324 \r
1325 Function DisableServerSections\r
1326   !InsertMacro UnselectSection ${SecGroupServer}\r
1327   !InsertMacro SetSectionFlag  ${SecGroupServer} ${SF_RO}\r
1328   !InsertMacro UnselectSection ${SecStorageDaemon}\r
1329   !InsertMacro SetSectionFlag  ${SecStorageDaemon} ${SF_RO}\r
1330   !InsertMacro UnselectSection ${SecDirectorDaemon}\r
1331   !InsertMacro SetSectionFlag  ${SecDirectorDaemon} ${SF_RO}\r
1332 FunctionEnd\r
1333 \r
1334 Function UpdateComponentUI\r
1335   Push $R0\r
1336   Push $R1\r
1337 \r
1338   Call GetSelectedComponents\r
1339   Pop $R0\r
1340 \r
1341   IntOp $R1 $R0 ^ $PreviousComponents\r
1342   IntOp $NewComponents $R0 & $R1\r
1343 \r
1344   ${If} $InstallType <> ${NewInstall}\r
1345     IntOp $R1 $NewComponents & ${ComponentFile}\r
1346     ${If} $R1 <> 0\r
1347       !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_BOLD}\r
1348     ${Else}\r
1349       !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_BOLD}\r
1350     ${EndIf}\r
1351     IntOp $R1 $NewComponents & ${ComponentStorage}\r
1352     ${If} $R1 <> 0\r
1353       !InsertMacro SetSectionFlag ${SecStorageDaemon} ${SF_BOLD}\r
1354     ${Else}\r
1355       !InsertMacro ClearSectionFlag ${SecStorageDaemon} ${SF_BOLD}\r
1356     ${EndIf}\r
1357     IntOp $R1 $NewComponents & ${ComponentDirector}\r
1358     ${If} $R1 <> 0\r
1359       !InsertMacro SetSectionFlag ${SecDirectorDaemon} ${SF_BOLD}\r
1360     ${Else}\r
1361       !InsertMacro ClearSectionFlag ${SecDirectorDaemon} ${SF_BOLD}\r
1362     ${EndIf}\r
1363     IntOp $R1 $NewComponents & ${ComponentTextConsole}\r
1364     ${If} $R1 <> 0\r
1365       !InsertMacro SetSectionFlag ${SecConsole} ${SF_BOLD}\r
1366     ${Else}\r
1367       !InsertMacro ClearSectionFlag ${SecConsole} ${SF_BOLD}\r
1368     ${EndIf}\r
1369     IntOp $R1 $NewComponents & ${ComponentGUIConsole}\r
1370     ${If} $R1 <> 0\r
1371       !InsertMacro SetSectionFlag ${SecWxConsole} ${SF_BOLD}\r
1372     ${Else}\r
1373       !InsertMacro ClearSectionFlag ${SecWxConsole} ${SF_BOLD}\r
1374     ${EndIf}\r
1375     IntOp $R1 $NewComponents & ${ComponentPDFDocs}\r
1376     ${If} $R1 <> 0\r
1377       !InsertMacro SetSectionFlag ${SecDocPdf} ${SF_BOLD}\r
1378     ${Else}\r
1379       !InsertMacro ClearSectionFlag ${SecDocPdf} ${SF_BOLD}\r
1380     ${EndIf}\r
1381     IntOp $R1 $NewComponents & ${ComponentHTMLDocs}\r
1382     ${If} $R1 <> 0\r
1383       !InsertMacro SetSectionFlag ${SecDocHtml} ${SF_BOLD}\r
1384     ${Else}\r
1385       !InsertMacro ClearSectionFlag ${SecDocHtml} ${SF_BOLD}\r
1386     ${EndIf}\r
1387   ${EndIf}\r
1388 \r
1389   GetDlgItem $R0 $HWNDPARENT 1\r
1390 \r
1391   IntOp $R1 $NewComponents & ${ComponentsRequiringUserConfig}\r
1392   ${If} $R1 = 0\r
1393     SendMessage $R0 ${WM_SETTEXT} 0 "STR:Install"\r
1394   ${Else}\r
1395     SendMessage $R0 ${WM_SETTEXT} 0 "STR:&Next >"\r
1396   ${EndIf}\r
1397 \r
1398   Pop $R1\r
1399   Pop $R0\r
1400 FunctionEnd\r
1401 \r
1402 !include "InstallType.nsh"\r
1403 !include "ConfigPage1.nsh"\r
1404 !include "ConfigPage2.nsh"\r
1405 !include "DumpLog.nsh"\r