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