3 ; Began as a version written by Michel Meyers (michel@tcnnet.dyndns.org)
\r
5 ; Adapted by Kern Sibbald for native Win32 Bacula
\r
6 ; added a number of elements from Christopher Hull's installer
\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
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
20 ; D. Scott Barninger Apr 17 2005
\r
21 ; 1.36.3 release docs update
\r
22 ; add pdf manual and menu shortcut
\r
24 ; Robert Nelson May 15 2006
\r
25 ; Pretty much rewritten
\r
27 ; Added Bacula-SD and Bacula-DIR
\r
28 ; Replaced ParameterGiven with standard GetOptions
\r
31 ; Command line options:
\r
36 !define PRODUCT "Bacula"
\r
39 ; Include the Modern UI
\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
52 OutFile "${OUT_DIR}\winbacula-${VERSION}.exe"
\r
54 InstallDir "$PROGRAMFILES\Bacula"
\r
55 InstallDirRegKey HKLM "Software\Bacula" "InstallLocation"
\r
61 !insertmacro GetParent
\r
72 !define MUI_COMPONENTSPAGE_SMALLDESC
\r
74 !define MUI_HEADERIMAGE
\r
75 !define MUI_BGCOLOR 739AB9
\r
76 !define MUI_HEADERIMAGE_BITMAP "bacula-logo.bmp"
\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
93 !InsertMacro MUI_UNPAGE_WELCOME
\r
94 !InsertMacro MUI_UNPAGE_CONFIRM
\r
95 !InsertMacro MUI_UNPAGE_INSTFILES
\r
96 !InsertMacro MUI_UNPAGE_FINISH
\r
98 !define MUI_ABORTWARNING
\r
100 !InsertMacro MUI_LANGUAGE "English"
\r
102 !InsertMacro GetParameters
\r
103 !InsertMacro GetOptions
\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
107 !InsertMacro MUI_RESERVEFILE_INSTALLOPTIONS
\r
115 Var CommonFilesDone
\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
128 Var ConfigStorageName
\r
129 Var ConfigStoragePort
\r
130 Var ConfigStorageMaxJobs
\r
131 Var ConfigStoragePassword
\r
132 Var ConfigStorageInstallService
\r
133 Var ConfigStorageStartService
\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
146 Var ConfigMonitorName
\r
147 Var ConfigMonitorPassword
\r
149 Var LocalDirectorPassword
\r
150 Var LocalHostAddress
\r
155 Var PostgreSQLVersion
\r
157 Var AutomaticInstall
\r
159 !define NewInstall 0
\r
160 !define UpgradeInstall 1
\r
161 !define MigrateInstall 2
\r
164 Var PreviousComponents
\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
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
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
196 ; Process Command Line Options
\r
197 StrCpy $OptService 1
\r
199 StrCpy $OptSilent 0
\r
200 StrCpy $CommonFilesDone 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
212 ${GetParameters} $R0
\r
215 ${GetOptions} $R0 "/noservice" $R1
\r
217 StrCpy $OptService 0
\r
220 ${GetOptions} $R0 "/nostart" $R1
\r
225 StrCpy $OptSilent 1
\r
227 ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
\r
232 Call GetComputerName
\r
236 Pop $LocalHostAddress
\r
239 Pop $ConfigDirectorMailAddress
\r
241 Call FindDatabaseApps
\r
243 ; Configuration Defaults
\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
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
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
267 StrCpy $ConfigMonitorName "$HostName-mon"
\r
268 ;StrCpy $ConfigMonitorPassword
\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
276 !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "InstallType.ini"
\r
277 !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "WriteTemplates.ini"
\r
279 SetPluginUnload alwaysoff
\r
281 nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
\r
284 FileOpen $R1 "$PLUGINSDIR\pw.txt" r
\r
287 ${StrTrimNewLines} $ConfigClientPassword $R0
\r
291 nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
\r
294 FileOpen $R1 "$PLUGINSDIR\pw.txt" r
\r
297 ${StrTrimNewLines} $ConfigStoragePassword $R0
\r
301 nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
\r
304 FileOpen $R1 "$PLUGINSDIR\pw.txt" r
\r
307 ${StrTrimNewLines} $LocalDirectorPassword $R0
\r
311 SetPluginUnload manual
\r
313 nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
\r
316 FileOpen $R1 "$PLUGINSDIR\pw.txt" r
\r
319 ${StrTrimNewLines} $ConfigMonitorPassword $R0
\r
327 Function .onSelChange
\r
328 Call UpdateComponentUI
\r
331 Function InstallCommonFiles
\r
332 ${If} $CommonFilesDone = 0
\r
333 SetOutPath "$INSTDIR"
\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
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
355 !if "${BUILD_TOOLS}" == "MinGW"
\r
356 File "${SRC_DIR}\mingwm10.dll"
\r
357 File "${SRC_DIR}\pthreadGCE.dll"
\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
365 !If "${BUILD_TOOLS}" == "VC8_DEBUG"
\r
366 File "${SRC_DIR}\zlib1.dll.manifest"
\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
376 CreateShortCut "$SMPROGRAMS\Bacula\Documentation\View Readme.lnk" "write.exe" '"$INSTDIR\Readme.txt"'
\r
378 StrCpy $CommonFilesDone 1
\r
382 Section "-Initialize"
\r
383 ${If} $MySQLPath != ""
\r
384 DetailPrint "Found MySQL (version $MySQLVersion)"
\r
386 ${If} $PostgreSQLPath != ""
\r
387 DetailPrint "Found PostgreSQL (version $PostgreSQLVersion)"
\r
390 WriteRegStr HKLM Software\Bacula InstallLocation "$INSTDIR"
\r
392 Call GetSelectedComponents
\r
394 WriteRegDWORD HKLM Software\Bacula Components $R2
\r
396 WriteRegDWORD HKLM Software\Bacula Database $ConfigDirectorDB
\r
398 ; remove start menu items
\r
399 SetShellVarContext all
\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
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
417 File "..\..\..\LICENSE"
\r
418 Delete /REBOOTOK "$INSTDIR\bin\License.txt"
\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
425 !If "$BUILD_TOOLS" == "MinGW"
\r
426 StrCpy $R2 "MinGW32"
\r
435 FileWrite $R1 "s;@DISTVER@;$R2;g$\r$\n"
\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
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
447 ${StrRep} $R2 "$INSTDIR" "\" "/"
\r
448 FileWrite $R1 "s;@BUILD_DIR@;$R2;g$\r$\n"
\r
450 Call IsDirectorSelected
\r
453 FileWrite $R1 "s;@director_address@;$LocalHostAddress;g$\r$\n"
\r
455 ${If} "$ConfigDirectorAddress" != ""
\r
456 FileWrite $R1 "s;@director_address@;$ConfigDirectorAddress;g$\r$\n"
\r
460 FileWrite $R1 "s;@client_address@;$LocalHostAddress;g$\r$\n"
\r
461 FileWrite $R1 "s;@storage_address@;$LocalHostAddress;g$\r$\n"
\r
463 ${If} "$ConfigClientName" != ""
\r
464 FileWrite $R1 "s;@client_name@;$ConfigClientName;g$\r$\n"
\r
466 ${If} "$ConfigClientPort" != ""
\r
467 FileWrite $R1 "s;@client_port@;$ConfigClientPort;g$\r$\n"
\r
469 ${If} "$ConfigClientMaxJobs" != ""
\r
470 FileWrite $R1 "s;@client_maxjobs@;$ConfigClientMaxJobs;g$\r$\n"
\r
472 ${If} "$ConfigClientPassword" != ""
\r
473 FileWrite $R1 "s;@client_password@;$ConfigClientPassword;g$\r$\n"
\r
475 ${If} "$ConfigStorageName" != ""
\r
476 FileWrite $R1 "s;@storage_name@;$ConfigStorageName;g$\r$\n"
\r
478 ${If} "$ConfigStoragePort" != ""
\r
479 FileWrite $R1 "s;@storage_port@;$ConfigStoragePort;g$\r$\n"
\r
481 ${If} "$ConfigStorageMaxJobs" != ""
\r
482 FileWrite $R1 "s;@storage_maxjobs@;$ConfigStorageMaxJobs;g$\r$\n"
\r
484 ${If} "$ConfigStoragePassword" != ""
\r
485 FileWrite $R1 "s;@storage_password@;$ConfigStoragePassword;g$\r$\n"
\r
487 ${If} "$ConfigDirectorName" != ""
\r
488 FileWrite $R1 "s;@director_name@;$ConfigDirectorName;g$\r$\n"
\r
490 ${If} "$ConfigDirectorPort" != ""
\r
491 FileWrite $R1 "s;@director_port@;$ConfigDirectorPort;g$\r$\n"
\r
493 ${If} "$ConfigDirectorMaxJobs" != ""
\r
494 FileWrite $R1 "s;@director_maxjobs@;$ConfigDirectorMaxJobs;g$\r$\n"
\r
496 ${If} "$ConfigDirectorPassword" != ""
\r
497 FileWrite $R1 "s;@director_password@;$ConfigDirectorPassword;g$\r$\n"
\r
499 ${If} "$ConfigDirectorMailServer" != ""
\r
500 FileWrite $R1 "s;@smtp_host@;$ConfigDirectorMailServer;g$\r$\n"
\r
502 ${If} "$ConfigDirectorMailAddress" != ""
\r
503 FileWrite $R1 "s;@job_email@;$ConfigDirectorMailAddress;g$\r$\n"
\r
505 ${If} "$ConfigMonitorName" != ""
\r
506 FileWrite $R1 "s;@monitor_name@;$ConfigMonitorName;g$\r$\n"
\r
508 ${If} "$ConfigMonitorPassword" != ""
\r
509 FileWrite $R1 "s;@monitor_password@;$ConfigMonitorPassword;g$\r$\n"
\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
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
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
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
537 nsExec::ExecToLog '"$OldInstallDir\bin\bacula-fd.exe" /remove' ; Remove existing service
\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
543 nsExec::ExecToLog '"$OldInstallDir\bin\bacula-sd.exe" /remove' ; Remove existing service
\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
549 nsExec::ExecToLog '"$OldInstallDir\bin\bacula-dir.exe" /remove' ; Remove existing service
\r
554 SectionGroup "Client" SecGroupClient
\r
556 Section "File Service" SecFileDaemon
\r
559 SetOutPath "$INSTDIR\bin"
\r
561 File "${SRC_DIR}\bacula-fd.exe"
\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
568 File "/oname=$PLUGINSDIR\bacula-fd.conf" "bacula-fd.conf.in"
\r
570 StrCpy $0 "$APPDATA\Bacula"
\r
571 StrCpy $1 bacula-fd.conf
\r
572 Call ConfigEditAndCopy
\r
575 StrCpy $0 bacula-fd
\r
576 StrCpy $1 "File Service"
\r
577 StrCpy $2 $ConfigClientInstallService
\r
578 StrCpy $3 $ConfigClientStartService
\r
582 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Client Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bacula-fd.conf"'
\r
587 SectionGroup "Server" SecGroupServer
\r
589 Section "Storage Service" SecStorageDaemon
\r
592 SetOutPath "$INSTDIR\bin"
\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
613 File "/oname=$PLUGINSDIR\mtx-changer.cmd" "${SRC_DIR}\mtx-changer.cmd"
\r
615 StrCpy $0 "$INSTDIR\bin"
\r
616 StrCpy $1 mtx-changer.cmd
\r
617 Call ConfigEditAndCopy
\r
619 File "/oname=$PLUGINSDIR\disk-changer.cmd" "${SRC_DIR}\disk-changer.cmd"
\r
621 StrCpy $0 "$INSTDIR\bin"
\r
622 StrCpy $1 disk-changer.cmd
\r
623 Call ConfigEditAndCopy
\r
625 File "/oname=$PLUGINSDIR\dvd-handler.cmd" "${SRC_DIR}\dvd-handler.cmd"
\r
627 StrCpy $0 "$INSTDIR\bin"
\r
628 StrCpy $1 dvd-handler.cmd
\r
629 Call ConfigEditAndCopy
\r
631 File "/oname=$PLUGINSDIR\bacula-sd.conf" "bacula-sd.conf.in"
\r
633 StrCpy $0 "$APPDATA\Bacula"
\r
634 StrCpy $1 bacula-sd.conf
\r
635 Call ConfigEditAndCopy
\r
637 StrCpy $0 bacula-sd
\r
638 StrCpy $1 "Storage Service"
\r
639 StrCpy $2 $ConfigStorageInstallService
\r
640 StrCpy $3 $ConfigStorageStartService
\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
647 Section "Director Service" SecDirectorDaemon
\r
650 SetOutPath "$INSTDIR\bin"
\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
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
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
693 !If "${BUILD_TOOLS}" == "VC8_DEBUG"
\r
694 File "${SRC_DIR}\sqlite3.exe.manifest"
\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
706 File "${SRC_DIR}\bacula-dir.exe"
\r
707 File "${SRC_DIR}\dbcheck.exe"
\r
709 File "/oname=$PLUGINSDIR\delete_catalog_backup.cmd" "${SRC_DIR}\delete_catalog_backup.cmd"
\r
711 StrCpy $0 "$INSTDIR\bin"
\r
713 StrCpy $1 create_database.cmd
\r
714 Call ConfigEditAndCopy
\r
716 StrCpy $1 drop_database.cmd
\r
717 Call ConfigEditAndCopy
\r
719 StrCpy $1 make_tables.cmd
\r
720 Call ConfigEditAndCopy
\r
722 StrCpy $1 drop_tables.cmd
\r
723 Call ConfigEditAndCopy
\r
725 StrCpy $1 grant_privileges.cmd
\r
726 Call ConfigEditAndCopy
\r
728 StrCpy $1 make_catalog_backup.cmd
\r
729 Call ConfigEditAndCopy
\r
731 StrCpy $1 delete_catalog_backup.cmd
\r
732 Call ConfigEditAndCopy
\r
734 File "${SRC_DIR}\query.sql"
\r
736 File "/oname=$PLUGINSDIR\bacula-dir.conf" "bacula-dir.conf.in"
\r
738 StrCpy $0 "$APPDATA\Bacula"
\r
739 StrCpy $1 bacula-dir.conf
\r
740 Call ConfigEditAndCopy
\r
742 StrCpy $0 bacula-dir
\r
743 StrCpy $1 "Director Service"
\r
744 StrCpy $2 $ConfigDirectorInstallService
\r
745 StrCpy $3 $ConfigDirectorStartService
\r
748 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Director Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bacula-dir.conf"'
\r
753 SectionGroup "Consoles" SecGroupConsoles
\r
755 Section "Command Console" SecConsole
\r
758 SetOutPath "$INSTDIR\bin"
\r
760 File "${SRC_DIR}\bconsole.exe"
\r
761 Call InstallCommonFiles
\r
763 ${If} $InstallType = ${MigrateInstall}
\r
764 ${AndIf} ${FileExists} "$OldInstallDir\bin\bconsole.conf"
\r
765 CopyFiles "$OldInstallDir\bin\bconsole.conf" "$APPDATA\Bacula"
\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
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
778 Section "Graphical Console" SecWxConsole
\r
781 SetOutPath "$INSTDIR\bin"
\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
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
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
797 File "${SRC_DIR}\bwx-console.exe"
\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
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
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
816 SectionGroup "Documentation" SecGroupDocumentation
\r
818 Section "Documentation (Acrobat Format)" SecDocPdf
\r
821 SetOutPath "$INSTDIR\doc"
\r
822 CreateDirectory "$INSTDIR\doc"
\r
824 File "${SRC_DIR}\manual\bacula.pdf"
\r
825 CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Manual.lnk" '"$INSTDIR\doc\bacula.pdf"'
\r
828 Section "Documentation (HTML Format)" SecDocHtml
\r
831 SetOutPath "$INSTDIR\doc"
\r
832 CreateDirectory "$INSTDIR\doc"
\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
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
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
869 ; Extra Page descriptions
\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
879 LangString TITLE_ConfigPage1 ${LANG_ENGLISH} "Configuration"
\r
880 LangString SUBTITLE_ConfigPage1 ${LANG_ENGLISH} "Set installation configuration."
\r
882 LangString TITLE_ConfigPage2 ${LANG_ENGLISH} "Configuration (continued)"
\r
883 LangString SUBTITLE_ConfigPage2 ${LANG_ENGLISH} "Set installation configuration."
\r
885 LangString TITLE_InstallType ${LANG_ENGLISH} "Installation Type"
\r
886 LangString SUBTITLE_InstallType ${LANG_ENGLISH} "Choose installation type."
\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
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
901 ; Uninstall section
\r
903 UninstallText "This will uninstall Bacula. Hit next to continue."
\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
912 ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-fd"
\r
914 ; Remove bacula service
\r
915 nsExec::ExecToLog '"$INSTDIR\bin\bacula-fd.exe" /remove'
\r
918 ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-sd"
\r
920 ; Remove bacula service
\r
921 nsExec::ExecToLog '"$INSTDIR\bin\bacula-sd.exe" /remove'
\r
924 ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-dir"
\r
926 ; Remove bacula service
\r
927 nsExec::ExecToLog '"$INSTDIR\bin\bacula-dir.exe" /remove'
\r
930 ; remove registry keys
\r
931 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
\r
932 DeleteRegKey HKLM "Software\Bacula"
\r
934 ; remove start menu items
\r
935 SetShellVarContext all
\r
936 Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
\r
937 RMDir "$SMPROGRAMS\Bacula"
\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
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
954 ; remove directories used
\r
955 RMDir "$INSTDIR\bin"
\r
956 RMDir "$INSTDIR\doc"
\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
966 Function InstallDaemon
\r
967 Call InstallCommonFiles
\r
969 WriteRegDWORD HKLM "Software\Bacula" "Service_$0" $2
\r
972 nsExec::ExecToLog '"$INSTDIR\bin\$0.exe" /install -c "$APPDATA\Bacula\$0.conf"'
\r
979 ; Start the service?
\r
983 nsExec::ExecToLog 'net start $0'
\r
985 Exec '"$INSTDIR\bin\$0.exe" -c "$APPDATA\Bacula\$0.conf"'
\r
989 CreateShortCut "$SMPROGRAMS\Bacula\Start $1.lnk" "$INSTDIR\bin\$0.exe" '-c "$APPDATA\Bacula\$0.conf"' "$INSTDIR\bin\$0.exe" 0
\r
993 Function GetComputerName
\r
998 System::Call "kernel32::GetComputerNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2"
\r
1000 ${StrCase} $R0 $R0 "L"
\r
1007 !define ComputerNameDnsFullyQualified 3
\r
1009 Function GetHostName
\r
1015 System::Call "kernel32::GetComputerNameExA(i ${ComputerNameDnsFullyQualified}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
\r
1018 DetailPrint "GetComputerNameExA failed - LastError = $R2"
\r
1019 Call GetComputerName
\r
1025 Call GetComputerName
\r
1034 !define NameUserPrincipal 8
\r
1036 Function GetUserName
\r
1042 System::Call "secur32::GetUserNameExA(i ${NameUserPrincipal}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
\r
1045 DetailPrint "GetUserNameExA failed - LastError = $R2"
\r
1056 System::Call "advapi32::GetUserNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
\r
1059 DetailPrint "GetUserNameA failed - LastError = $R2"
\r
1071 Function ConfigEditAndCopy
\r
1074 ${If} ${FileExists} "$0\$1"
\r
1080 nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\$1"'
\r
1081 CopyFiles "$PLUGINSDIR\$1" "$0\$1$R1"
\r
1086 Function FindDatabaseApps
\r
1089 ReadRegStr $0 HKLM "Software\MySQL AB\MySQL Server 5.0" "Location"
\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
1098 EnumRegKey $R1 HKLM "Software\PostgreSQL\Installations" 0
\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
1110 Function RemoveTrailingSlash
\r
1112 StrCpy $R1 $0 "" -1
\r
1119 Function IsDirectorSelected
\r
1121 SectionGetFlags ${SecDirectorDaemon} $R0
\r
1122 IntOp $R0 $R0 & ${SF_SELECTED}
\r
1126 Function GetSelectedComponents
\r
1129 ${If} ${SectionIsSelected} ${SecFileDaemon}
\r
1130 IntOp $R0 $R0 | ${ComponentFile}
\r
1132 ${If} ${SectionIsSelected} ${SecStorageDaemon}
\r
1133 IntOp $R0 $R0 | ${ComponentStorage}
\r
1135 ${If} ${SectionIsSelected} ${SecDirectorDaemon}
\r
1136 IntOp $R0 $R0 | ${ComponentDirector}
\r
1138 ${If} ${SectionIsSelected} ${SecConsole}
\r
1139 IntOp $R0 $R0 | ${ComponentTextConsole}
\r
1141 ${If} ${SectionIsSelected} ${SecWxConsole}
\r
1142 IntOp $R0 $R0 | ${ComponentGUIConsole}
\r
1144 ${If} ${SectionIsSelected} ${SecDocPdf}
\r
1145 IntOp $R0 $R0 | ${ComponentPDFDocs}
\r
1147 ${If} ${SectionIsSelected} ${SecDocHtml}
\r
1148 IntOp $R0 $R0 | ${ComponentHTMLDocs}
\r
1153 Function PageComponentsShow
\r
1154 ${If} $OsIsNT <> 1
\r
1155 Call DisableServerSections
\r
1158 Call SelectPreviousComponents
\r
1159 Call UpdateComponentUI
\r
1162 Function PageDirectoryPre
\r
1163 ${If} $AutomaticInstall = 1
\r
1164 ${OrIf} $InstallType = ${UpgradeInstall}
\r
1169 Function LeaveInstallPage
\r
1170 Push "$INSTDIR\install.log"
\r
1174 Function EnterWriteTemplates
\r
1178 Call GetSelectedComponents
\r
1181 IntOp $R0 $R0 & ${ComponentDirector}
\r
1182 IntOp $R1 $NewComponents & ${ComponentsFileAndStorage}
\r
1191 IntOp $R0 $NewComponents & ${ComponentFile}
\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
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
1204 IntOp $R0 $NewComponents & ${ComponentStorage}
\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
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
1217 !InsertMacro MUI_HEADER_TEXT "$(TITLE_WriteTemplates)" "$(SUBTITLE_WriteTemplates)"
\r
1218 !InsertMacro MUI_INSTALLOPTIONS_DISPLAY "WriteTemplates.ini"
\r
1220 !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 2" State
\r
1222 File "/oname=$PLUGINSDIR\client.conf.in" "client.conf.in"
\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
1227 CopyFiles "$PLUGINSDIR\client.conf.in" "$R0"
\r
1231 !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 4" State
\r
1233 File "/oname=$PLUGINSDIR\storage.conf.in" "storage.conf.in"
\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
1238 CopyFiles "$PLUGINSDIR\storage.conf.in" "$R0"
\r
1246 Function SelectPreviousComponents
\r
1247 ${If} $InstallType <> ${NewInstall}
\r
1248 IntOp $R1 $PreviousComponents & ${ComponentFile}
\r
1250 !InsertMacro SelectSection ${SecFileDaemon}
\r
1251 !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_RO}
\r
1253 !InsertMacro UnselectSection ${SecFileDaemon}
\r
1254 !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_RO}
\r
1256 IntOp $R1 $PreviousComponents & ${ComponentStorage}
\r
1258 !InsertMacro SelectSection ${SecStorageDaemon}
\r
1259 !InsertMacro SetSectionFlag ${SecStorageDaemon} ${SF_RO}
\r
1261 !InsertMacro UnselectSection ${SecStorageDaemon}
\r
1262 !InsertMacro ClearSectionFlag ${SecStorageDaemon} ${SF_RO}
\r
1264 IntOp $R1 $PreviousComponents & ${ComponentDirector}
\r
1266 !InsertMacro SelectSection ${SecDirectorDaemon}
\r
1267 !InsertMacro SetSectionFlag ${SecDirectorDaemon} ${SF_RO}
\r
1269 !InsertMacro UnselectSection ${SecDirectorDaemon}
\r
1270 !InsertMacro ClearSectionFlag ${SecDirectorDaemon} ${SF_RO}
\r
1272 IntOp $R1 $PreviousComponents & ${ComponentTextConsole}
\r
1274 !InsertMacro SelectSection ${SecConsole}
\r
1275 !InsertMacro SetSectionFlag ${SecConsole} ${SF_RO}
\r
1277 !InsertMacro UnselectSection ${SecConsole}
\r
1278 !InsertMacro ClearSectionFlag ${SecConsole} ${SF_RO}
\r
1280 IntOp $R1 $PreviousComponents & ${ComponentGUIConsole}
\r
1282 !InsertMacro SelectSection ${SecWxConsole}
\r
1283 !InsertMacro SetSectionFlag ${SecWxConsole} ${SF_RO}
\r
1285 !InsertMacro UnselectSection ${SecWxConsole}
\r
1286 !InsertMacro ClearSectionFlag ${SecWxConsole} ${SF_RO}
\r
1288 IntOp $R1 $PreviousComponents & ${ComponentPDFDocs}
\r
1290 !InsertMacro SelectSection ${SecDocPdf}
\r
1291 !InsertMacro SetSectionFlag ${SecDocPdf} ${SF_RO}
\r
1293 !InsertMacro UnselectSection ${SecDocPdf}
\r
1294 !InsertMacro ClearSectionFlag ${SecDocPdf} ${SF_RO}
\r
1296 IntOp $R1 $PreviousComponents & ${ComponentHTMLDocs}
\r
1298 !InsertMacro SelectSection ${SecDocHtml}
\r
1299 !InsertMacro SetSectionFlag ${SecDocHtml} ${SF_RO}
\r
1301 !InsertMacro UnselectSection ${SecDocHtml}
\r
1302 !InsertMacro ClearSectionFlag ${SecDocHtml} ${SF_RO}
\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
1316 Function UpdateComponentUI
\r
1320 Call GetSelectedComponents
\r
1323 IntOp $R1 $R0 ^ $PreviousComponents
\r
1324 IntOp $NewComponents $R0 & $R1
\r
1326 ${If} $InstallType <> ${NewInstall}
\r
1327 IntOp $R1 $NewComponents & ${ComponentFile}
\r
1329 !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_BOLD}
\r
1331 !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_BOLD}
\r
1333 IntOp $R1 $NewComponents & ${ComponentStorage}
\r
1335 !InsertMacro SetSectionFlag ${SecStorageDaemon} ${SF_BOLD}
\r
1337 !InsertMacro ClearSectionFlag ${SecStorageDaemon} ${SF_BOLD}
\r
1339 IntOp $R1 $NewComponents & ${ComponentDirector}
\r
1341 !InsertMacro SetSectionFlag ${SecDirectorDaemon} ${SF_BOLD}
\r
1343 !InsertMacro ClearSectionFlag ${SecDirectorDaemon} ${SF_BOLD}
\r
1345 IntOp $R1 $NewComponents & ${ComponentTextConsole}
\r
1347 !InsertMacro SetSectionFlag ${SecConsole} ${SF_BOLD}
\r
1349 !InsertMacro ClearSectionFlag ${SecConsole} ${SF_BOLD}
\r
1351 IntOp $R1 $NewComponents & ${ComponentGUIConsole}
\r
1353 !InsertMacro SetSectionFlag ${SecWxConsole} ${SF_BOLD}
\r
1355 !InsertMacro ClearSectionFlag ${SecWxConsole} ${SF_BOLD}
\r
1357 IntOp $R1 $NewComponents & ${ComponentPDFDocs}
\r
1359 !InsertMacro SetSectionFlag ${SecDocPdf} ${SF_BOLD}
\r
1361 !InsertMacro ClearSectionFlag ${SecDocPdf} ${SF_BOLD}
\r
1363 IntOp $R1 $NewComponents & ${ComponentHTMLDocs}
\r
1365 !InsertMacro SetSectionFlag ${SecDocHtml} ${SF_BOLD}
\r
1367 !InsertMacro ClearSectionFlag ${SecDocHtml} ${SF_BOLD}
\r
1371 GetDlgItem $R0 $HWNDPARENT 1
\r
1373 IntOp $R1 $NewComponents & ${ComponentsRequiringUserConfig}
\r
1375 SendMessage $R0 ${WM_SETTEXT} 0 "STR:Install"
\r
1377 SendMessage $R0 ${WM_SETTEXT} 0 "STR:&Next >"
\r
1384 !include "InstallType.nsh"
\r
1385 !include "ConfigPage1.nsh"
\r
1386 !include "ConfigPage2.nsh"
\r
1387 !include "DumpLog.nsh"
\r