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 ; Added server installs and implemented Microsoft install locations
\r
27 ; Added Bacula-SD and Bacula-DIR
\r
28 ; Replaced ParameterGiven with standard GetOptions
\r
32 ; Command line options:
\r
37 ; netsh firewall add portopening protocol=tcp port=9102 name="Bacula-FD"
\r
40 !define PRODUCT "Bacula"
\r
43 ; Include the Modern UI
\r
47 !include "LogicLib.nsh"
\r
48 !include "FileFunc.nsh"
\r
49 !include "Sections.nsh"
\r
50 !include "StrFunc.nsh"
\r
51 !include "WinMessages.nsh"
\r
56 OutFile "${OUT_DIR}\winbacula-${VERSION}.exe"
\r
58 InstallDir "$PROGRAMFILES\Bacula"
\r
59 InstallDirRegKey HKLM "Software\Bacula" "InstallLocation"
\r
65 !insertmacro GetParent
\r
76 !define MUI_COMPONENTSPAGE_SMALLDESC
\r
78 !define MUI_HEADERIMAGE
\r
79 !define MUI_BGCOLOR 739AB9
\r
80 !define MUI_HEADERIMAGE_BITMAP "bacula-logo.bmp"
\r
82 !InsertMacro MUI_PAGE_WELCOME
\r
83 !InsertMacro MUI_PAGE_LICENSE "..\..\..\LICENSE"
\r
84 Page custom EnterInstallType
\r
85 !define MUI_PAGE_CUSTOMFUNCTION_SHOW PageComponentsShow
\r
86 !InsertMacro MUI_PAGE_COMPONENTS
\r
87 !define MUI_PAGE_CUSTOMFUNCTION_PRE PageDirectoryPre
\r
88 !InsertMacro MUI_PAGE_DIRECTORY
\r
89 Page custom EnterConfigPage1 LeaveConfigPage1
\r
90 Page custom EnterConfigPage2 LeaveConfigPage2
\r
91 !Define MUI_PAGE_CUSTOMFUNCTION_LEAVE LeaveInstallPage
\r
92 !InsertMacro MUI_PAGE_INSTFILES
\r
93 Page custom EnterWriteTemplates
\r
94 !Define MUI_FINISHPAGE_SHOWREADME $INSTDIR\Readme.txt
\r
95 !InsertMacro MUI_PAGE_FINISH
\r
97 !InsertMacro MUI_UNPAGE_WELCOME
\r
98 !InsertMacro MUI_UNPAGE_CONFIRM
\r
99 !InsertMacro MUI_UNPAGE_INSTFILES
\r
100 !InsertMacro MUI_UNPAGE_FINISH
\r
102 !define MUI_ABORTWARNING
\r
104 !InsertMacro MUI_LANGUAGE "English"
\r
106 !InsertMacro GetParameters
\r
107 !InsertMacro GetOptions
\r
109 DirText "Setup will install Bacula ${VERSION} to the directory specified below. To install in a different folder, click Browse and select another folder."
\r
111 !InsertMacro MUI_RESERVEFILE_INSTALLOPTIONS
\r
119 Var CommonFilesDone
\r
125 Var ConfigClientName
\r
126 Var ConfigClientPort
\r
127 Var ConfigClientMaxJobs
\r
128 Var ConfigClientPassword
\r
129 Var ConfigClientInstallService
\r
130 Var ConfigClientStartService
\r
132 Var ConfigStorageName
\r
133 Var ConfigStoragePort
\r
134 Var ConfigStorageMaxJobs
\r
135 Var ConfigStoragePassword
\r
136 Var ConfigStorageInstallService
\r
137 Var ConfigStorageStartService
\r
139 Var ConfigDirectorName
\r
140 Var ConfigDirectorPort
\r
141 Var ConfigDirectorMaxJobs
\r
142 Var ConfigDirectorPassword
\r
143 Var ConfigDirectorAddress
\r
144 Var ConfigDirectorMailServer
\r
145 Var ConfigDirectorMailAddress
\r
146 Var ConfigDirectorDB
\r
147 Var ConfigDirectorInstallService
\r
148 Var ConfigDirectorStartService
\r
150 Var ConfigMonitorName
\r
151 Var ConfigMonitorPassword
\r
153 Var LocalDirectorPassword
\r
154 Var LocalHostAddress
\r
159 Var PostgreSQLVersion
\r
161 Var AutomaticInstall
\r
163 !define NewInstall 0
\r
164 !define UpgradeInstall 1
\r
165 !define MigrateInstall 2
\r
168 Var PreviousComponents
\r
171 ; Bit 0 = File Service
\r
172 ; 1 = Storage Service
\r
173 ; 2 = Director Service
\r
174 ; 3 = Command Console
\r
175 ; 4 = Graphical Console
\r
176 ; 5 = Documentation (PDF)
\r
177 ; 6 = Documentation (HTML)
\r
179 !define ComponentFile 1
\r
180 !define ComponentStorage 2
\r
181 !define ComponentDirector 4
\r
182 !define ComponentTextConsole 8
\r
183 !define ComponentGUIConsole 16
\r
184 !define ComponentPDFDocs 32
\r
185 !define ComponentHTMLDocs 64
\r
187 !define ComponentsRequiringUserConfig 31
\r
188 !define ComponentsFileAndStorage 3
\r
189 !define ComponentsFileAndStorageAndDirector 7
\r
190 !define ComponentsDirectorAndTextGuiConsoles 28
\r
191 !define ComponentsTextAndGuiConsoles 24
\r
200 ; Process Command Line Options
\r
201 StrCpy $OptService 1
\r
203 StrCpy $OptSilent 0
\r
204 StrCpy $CommonFilesDone 0
\r
206 StrCpy $AutomaticInstall 0
\r
207 StrCpy $InstallType ${NewInstall}
\r
208 StrCpy $OldInstallDir ""
\r
209 StrCpy $PreviousComponents 0
\r
210 StrCpy $NewComponents 0
\r
211 StrCpy $MySQLPath ""
\r
212 StrCpy $MySQLVersion ""
\r
213 StrCpy $PostgreSQLPath ""
\r
214 StrCpy $PostgreSQLVersion ""
\r
216 ${GetParameters} $R0
\r
219 ${GetOptions} $R0 "/noservice" $R1
\r
221 StrCpy $OptService 0
\r
224 ${GetOptions} $R0 "/nostart" $R1
\r
229 StrCpy $OptSilent 1
\r
231 ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
\r
236 Call GetComputerName
\r
240 Pop $LocalHostAddress
\r
243 Pop $ConfigDirectorMailAddress
\r
245 Call FindDatabaseApps
\r
247 ; Configuration Defaults
\r
249 StrCpy $ConfigClientName "$HostName-fd"
\r
250 StrCpy $ConfigClientPort 9102
\r
251 StrCpy $ConfigClientMaxJobs 2
\r
252 ;StrCpy $ConfigClientPassword
\r
253 StrCpy $ConfigClientInstallService "$OptService"
\r
254 StrCpy $ConfigClientStartService "$OptStart"
\r
256 StrCpy $ConfigStorageName "$HostName-sd"
\r
257 StrCpy $ConfigStoragePort 9103
\r
258 StrCpy $ConfigStorageMaxJobs 10
\r
259 ;StrCpy $ConfigStoragePassword
\r
260 StrCpy $ConfigStorageInstallService "$OptService"
\r
261 StrCpy $ConfigStorageStartService "$OptStart"
\r
263 ;StrCpy $ConfigDirectorName "$HostName-dir"
\r
264 StrCpy $ConfigDirectorPort 9101
\r
265 StrCpy $ConfigDirectorMaxJobs 1
\r
266 ;StrCpy $ConfigDirectorPassword
\r
267 StrCpy $ConfigDirectorDB 0
\r
268 StrCpy $ConfigDirectorInstallService "$OptService"
\r
269 StrCpy $ConfigDirectorStartService "$OptStart"
\r
271 StrCpy $ConfigMonitorName "$HostName-mon"
\r
272 ;StrCpy $ConfigMonitorPassword
\r
275 File "/oname=$PLUGINSDIR\openssl.exe" "${SRC_DIR}\openssl.exe"
\r
276 File "/oname=$PLUGINSDIR\libeay32.dll" "${SRC_DIR}\libeay32.dll"
\r
277 File "/oname=$PLUGINSDIR\ssleay32.dll" "${SRC_DIR}\ssleay32.dll"
\r
278 File "/oname=$PLUGINSDIR\sed.exe" "${SRC_DIR}\sed.exe"
\r
280 !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "InstallType.ini"
\r
281 !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "WriteTemplates.ini"
\r
283 SetPluginUnload alwaysoff
\r
285 nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
\r
288 FileOpen $R1 "$PLUGINSDIR\pw.txt" r
\r
291 ${StrTrimNewLines} $ConfigClientPassword $R0
\r
295 nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
\r
298 FileOpen $R1 "$PLUGINSDIR\pw.txt" r
\r
301 ${StrTrimNewLines} $ConfigStoragePassword $R0
\r
305 nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
\r
308 FileOpen $R1 "$PLUGINSDIR\pw.txt" r
\r
311 ${StrTrimNewLines} $LocalDirectorPassword $R0
\r
315 SetPluginUnload manual
\r
317 nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
\r
320 FileOpen $R1 "$PLUGINSDIR\pw.txt" r
\r
323 ${StrTrimNewLines} $ConfigMonitorPassword $R0
\r
331 Function .onSelChange
\r
332 Call UpdateComponentUI
\r
335 Function InstallCommonFiles
\r
336 ${If} $CommonFilesDone = 0
\r
337 SetOutPath "$INSTDIR"
\r
340 SetOutPath "$INSTDIR\bin"
\r
341 !if "${BUILD_TOOLS}" == "VC8"
\r
342 File "${SRC_DIR}\msvcm80.dll"
\r
343 File "${SRC_DIR}\msvcp80.dll"
\r
344 File "${SRC_DIR}\msvcr80.dll"
\r
345 File "${SRC_DIR}\Microsoft.VC80.CRT.manifest"
\r
346 File "${SRC_DIR}\pthreadVCE.dll"
\r
348 !if "${BUILD_TOOLS}" == "VC8_DEBUG"
\r
349 File "${SRC_DIR}\msvcm80.dll"
\r
350 File "${SRC_DIR}\msvcp80.dll"
\r
351 File "${SRC_DIR}\msvcr80.dll"
\r
352 File "${SRC_DIR}\Microsoft.VC80.CRT.manifest"
\r
353 File "${SRC_DIR}\msvcm80d.dll"
\r
354 File "${SRC_DIR}\msvcp80d.dll"
\r
355 File "${SRC_DIR}\msvcr80d.dll"
\r
356 File "${SRC_DIR}\Microsoft.VC80.DebugCRT.manifest"
\r
357 File "${SRC_DIR}\pthreadVCE.dll"
\r
359 !if "${BUILD_TOOLS}" == "MinGW"
\r
360 File "${SRC_DIR}\mingwm10.dll"
\r
361 File "${SRC_DIR}\pthreadGCE.dll"
\r
363 File "${SRC_DIR}\libeay32.dll"
\r
364 File "${SRC_DIR}\ssleay32.dll"
\r
365 File "${SRC_DIR}\zlib1.dll"
\r
366 !if "${BUILD_TOOLS}" == "VC8"
\r
367 File "${SRC_DIR}\zlib1.dll.manifest"
\r
369 !If "${BUILD_TOOLS}" == "VC8_DEBUG"
\r
370 File "${SRC_DIR}\zlib1.dll.manifest"
\r
372 File "/oname=$INSTDIR\openssl.cnf" "${SRC_DIR}\openssl.cnf"
\r
373 File "${SRC_DIR}\openssl.exe"
\r
374 File "${SRC_DIR}\bsleep.exe"
\r
375 File "${SRC_DIR}\bsmtp.exe"
\r
376 File "${SRC_DIR}\bacula.dll"
\r
377 File "${SRC_DIR}\expr64.exe"
\r
378 File "${SRC_DIR}\snooze.exe"
\r
380 CreateShortCut "$SMPROGRAMS\Bacula\Documentation\View Readme.lnk" "write.exe" '"$INSTDIR\Readme.txt"'
\r
382 StrCpy $CommonFilesDone 1
\r
386 Section "-Initialize"
\r
387 ${If} $MySQLPath != ""
\r
388 DetailPrint "Found MySQL (version $MySQLVersion)"
\r
390 ${If} $PostgreSQLPath != ""
\r
391 DetailPrint "Found PostgreSQL (version $PostgreSQLVersion)"
\r
394 WriteRegStr HKLM Software\Bacula InstallLocation "$INSTDIR"
\r
396 Call GetSelectedComponents
\r
398 WriteRegDWORD HKLM Software\Bacula Components $R2
\r
400 WriteRegDWORD HKLM Software\Bacula Database $ConfigDirectorDB
\r
402 ; remove start menu items
\r
403 SetShellVarContext all
\r
405 Delete /REBOOTOK "$SMPROGRAMS\Bacula\Configuration\*"
\r
406 Delete /REBOOTOK "$SMPROGRAMS\Bacula\Documentation\*"
\r
407 Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
\r
408 RMDir "$SMPROGRAMS\Bacula\Configuration"
\r
409 RMDir "$SMPROGRAMS\Bacula\Documentation"
\r
410 RMDir "$SMPROGRAMS\Bacula"
\r
411 CreateDirectory "$SMPROGRAMS\Bacula"
\r
412 CreateDirectory "$SMPROGRAMS\Bacula\Configuration"
\r
413 CreateDirectory "$SMPROGRAMS\Bacula\Documentation"
\r
415 CreateDirectory "$INSTDIR"
\r
416 CreateDirectory "$INSTDIR\bin"
\r
417 CreateDirectory "$APPDATA\Bacula"
\r
418 CreateDirectory "$APPDATA\Bacula\Work"
\r
419 CreateDirectory "$APPDATA\Bacula\Spool"
\r
421 SetOutPath "$INSTDIR"
\r
422 File "..\..\..\LICENSE"
\r
423 Delete /REBOOTOK "$INSTDIR\bin\License.txt"
\r
425 FileOpen $R1 $PLUGINSDIR\config.sed w
\r
426 FileWrite $R1 "s;@VERSION@;${VERSION};g$\r$\n"
\r
427 FileWrite $R1 "s;@DATE@;${__DATE__};g$\r$\n"
\r
428 FileWrite $R1 "s;@DISTNAME@;Windows;g$\r$\n"
\r
430 !If "$BUILD_TOOLS" == "MinGW"
\r
431 StrCpy $R2 "MinGW32"
\r
440 FileWrite $R1 "s;@DISTVER@;$R2;g$\r$\n"
\r
442 ${StrRep} $R2 "$APPDATA\Bacula\Work" "\" "\\\\"
\r
443 FileWrite $R1 's;@working_dir@;$R2;g$\r$\n'
\r
444 ${StrRep} $R2 "$APPDATA\Bacula\Work" "\" "\\"
\r
445 FileWrite $R1 's;@working_dir_cmd@;$R2;g$\r$\n'
\r
447 ${StrRep} $R2 "$INSTDIR\bin" "\" "\\\\"
\r
448 FileWrite $R1 's;@bin_dir@;$R2;g$\r$\n'
\r
449 ${StrRep} $R2 "$INSTDIR\bin" "\" "\\"
\r
450 FileWrite $R1 's;@bin_dir_cmd@;$R2;g$\r$\n'
\r
452 ${StrRep} $R2 "$INSTDIR" "\" "/"
\r
453 FileWrite $R1 "s;@BUILD_DIR@;$R2;g$\r$\n"
\r
455 Call IsDirectorSelected
\r
458 FileWrite $R1 "s;@director_address@;$LocalHostAddress;g$\r$\n"
\r
460 ${If} "$ConfigDirectorAddress" != ""
\r
461 FileWrite $R1 "s;@director_address@;$ConfigDirectorAddress;g$\r$\n"
\r
465 FileWrite $R1 "s;@client_address@;$LocalHostAddress;g$\r$\n"
\r
466 FileWrite $R1 "s;@storage_address@;$LocalHostAddress;g$\r$\n"
\r
468 ${If} "$ConfigClientName" != ""
\r
469 FileWrite $R1 "s;@client_name@;$ConfigClientName;g$\r$\n"
\r
471 ${If} "$ConfigClientPort" != ""
\r
472 FileWrite $R1 "s;@client_port@;$ConfigClientPort;g$\r$\n"
\r
474 ${If} "$ConfigClientMaxJobs" != ""
\r
475 FileWrite $R1 "s;@client_maxjobs@;$ConfigClientMaxJobs;g$\r$\n"
\r
477 ${If} "$ConfigClientPassword" != ""
\r
478 FileWrite $R1 "s;@client_password@;$ConfigClientPassword;g$\r$\n"
\r
480 ${If} "$ConfigStorageName" != ""
\r
481 FileWrite $R1 "s;@storage_name@;$ConfigStorageName;g$\r$\n"
\r
483 ${If} "$ConfigStoragePort" != ""
\r
484 FileWrite $R1 "s;@storage_port@;$ConfigStoragePort;g$\r$\n"
\r
486 ${If} "$ConfigStorageMaxJobs" != ""
\r
487 FileWrite $R1 "s;@storage_maxjobs@;$ConfigStorageMaxJobs;g$\r$\n"
\r
489 ${If} "$ConfigStoragePassword" != ""
\r
490 FileWrite $R1 "s;@storage_password@;$ConfigStoragePassword;g$\r$\n"
\r
492 ${If} "$ConfigDirectorName" != ""
\r
493 FileWrite $R1 "s;@director_name@;$ConfigDirectorName;g$\r$\n"
\r
495 ${If} "$ConfigDirectorPort" != ""
\r
496 FileWrite $R1 "s;@director_port@;$ConfigDirectorPort;g$\r$\n"
\r
498 ${If} "$ConfigDirectorMaxJobs" != ""
\r
499 FileWrite $R1 "s;@director_maxjobs@;$ConfigDirectorMaxJobs;g$\r$\n"
\r
501 ${If} "$ConfigDirectorPassword" != ""
\r
502 FileWrite $R1 "s;@director_password@;$ConfigDirectorPassword;g$\r$\n"
\r
504 ${If} "$ConfigDirectorMailServer" != ""
\r
505 FileWrite $R1 "s;@smtp_host@;$ConfigDirectorMailServer;g$\r$\n"
\r
507 ${If} "$ConfigDirectorMailAddress" != ""
\r
508 FileWrite $R1 "s;@job_email@;$ConfigDirectorMailAddress;g$\r$\n"
\r
510 ${If} "$ConfigMonitorName" != ""
\r
511 FileWrite $R1 "s;@monitor_name@;$ConfigMonitorName;g$\r$\n"
\r
513 ${If} "$ConfigMonitorPassword" != ""
\r
514 FileWrite $R1 "s;@monitor_password@;$ConfigMonitorPassword;g$\r$\n"
\r
517 ${If} $ConfigDirectorDB = 1
\r
518 ${If} $MySQLPath != ""
\r
519 ${StrRep} $R2 "$MySQLPath\bin" "\" "\\"
\r
520 FileWrite $R1 "s;@SQL_BINDIR@;$R2;g$\r$\n"
\r
522 ${ElseIf} $ConfigDirectorDB = 2
\r
523 ${If} $PostgreSQLPath != ""
\r
524 ${StrRep} $R2 "$PostgreSQLPath\bin" "\" "\\"
\r
525 FileWrite $R1 "s;@SQL_BINDIR@;$R2;g$\r$\n"
\r
531 ${If} $InstallType = ${MigrateInstall}
\r
532 FileOpen $R1 $PLUGINSDIR\migrate.sed w
\r
533 ${StrRep} $R2 "$APPDATA\Bacula\Work" "\" "\\\\"
\r
534 FileWrite $R1 's;\(Working *Directory *= *\)[^ ][^ ]*.*$$;\1"$R2";$\r$\n'
\r
535 FileWrite $R1 's;\(Pid *Directory *= *\)[^ ][^ ]*.*$$;\1"$R2";$\r$\n'
\r
539 ${If} ${FileExists} "$OldInstallDir\bin\bacula-fd.exe"
\r
540 nsExec::ExecToLog '"$OldInstallDir\bin\bacula-fd.exe" /kill' ; Shutdown any bacula that could be running
\r
542 nsExec::ExecToLog '"$OldInstallDir\bin\bacula-fd.exe" /remove' ; Remove existing service
\r
545 ${If} ${FileExists} "$OldInstallDir\bin\bacula-sd.exe"
\r
546 nsExec::ExecToLog '"$OldInstallDir\bin\bacula-sd.exe" /kill' ; Shutdown any bacula that could be running
\r
548 nsExec::ExecToLog '"$OldInstallDir\bin\bacula-sd.exe" /remove' ; Remove existing service
\r
551 ${If} ${FileExists} "$OldInstallDir\bin\bacula-dir.exe"
\r
552 nsExec::ExecToLog '"$OldInstallDir\bin\bacula-dir.exe" /kill' ; Shutdown any bacula that could be running
\r
554 nsExec::ExecToLog '"$OldInstallDir\bin\bacula-dir.exe" /remove' ; Remove existing service
\r
559 SectionGroup "Client" SecGroupClient
\r
561 Section "File Service" SecFileDaemon
\r
564 SetOutPath "$INSTDIR\bin"
\r
566 File "${SRC_DIR}\bacula-fd.exe"
\r
568 ${If} $InstallType = ${MigrateInstall}
\r
569 ${AndIf} ${FileExists} "$OldInstallDir\bin\bacula-fd.conf"
\r
570 CopyFiles "$OldInstallDir\bin\bacula-fd.conf" "$APPDATA\Bacula"
\r
571 nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\migrate.sed" -i.bak "$APPDATA\Bacula\bacula-fd.conf"'
\r
573 File "/oname=$PLUGINSDIR\bacula-fd.conf" "bacula-fd.conf.in"
\r
575 StrCpy $0 "$APPDATA\Bacula"
\r
576 StrCpy $1 bacula-fd.conf
\r
577 Call ConfigEditAndCopy
\r
580 StrCpy $0 bacula-fd
\r
581 StrCpy $1 "File Service"
\r
582 StrCpy $2 $ConfigClientInstallService
\r
583 StrCpy $3 $ConfigClientStartService
\r
587 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Client Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bacula-fd.conf"'
\r
592 SectionGroup "Server" SecGroupServer
\r
594 Section "Storage Service" SecStorageDaemon
\r
597 SetOutPath "$INSTDIR\bin"
\r
599 File "${SRC_DIR}\loaderinfo.exe"
\r
600 File "${SRC_DIR}\mt.exe"
\r
601 File "${SRC_DIR}\mtx.exe"
\r
602 File "${SRC_DIR}\scsitape.exe"
\r
603 File "${SRC_DIR}\tapeinfo.exe"
\r
604 File "${SRC_DIR}\bacula-sd.exe"
\r
605 File "${SRC_DIR}\bcopy.exe"
\r
606 File "${SRC_DIR}\bextract.exe"
\r
607 File "${SRC_DIR}\bls.exe"
\r
608 File "${SRC_DIR}\bscan.exe"
\r
609 File "${SRC_DIR}\btape.exe"
\r
610 File "${SRC_DIR}\scsilist.exe"
\r
611 File "${SRC_DIR}\mkisofs.exe"
\r
612 File "${SRC_DIR}\growisofs.exe"
\r
613 File "${SRC_DIR}\dvd-ram-control.exe"
\r
614 File "${SRC_DIR}\dvd+rw-booktype.exe"
\r
615 File "${SRC_DIR}\dvd+rw-format.exe"
\r
616 File "${SRC_DIR}\dvd+rw-mediainfo.exe"
\r
618 File "/oname=$PLUGINSDIR\mtx-changer.cmd" "${SRC_DIR}\mtx-changer.cmd"
\r
620 StrCpy $0 "$INSTDIR\bin"
\r
621 StrCpy $1 mtx-changer.cmd
\r
622 Call ConfigEditAndCopy
\r
624 File "/oname=$PLUGINSDIR\disk-changer.cmd" "${SRC_DIR}\disk-changer.cmd"
\r
626 StrCpy $0 "$INSTDIR\bin"
\r
627 StrCpy $1 disk-changer.cmd
\r
628 Call ConfigEditAndCopy
\r
630 File "/oname=$PLUGINSDIR\dvd-handler.cmd" "${SRC_DIR}\dvd-handler.cmd"
\r
632 StrCpy $0 "$INSTDIR\bin"
\r
633 StrCpy $1 dvd-handler.cmd
\r
634 Call ConfigEditAndCopy
\r
636 File "/oname=$PLUGINSDIR\bacula-sd.conf" "bacula-sd.conf.in"
\r
638 StrCpy $0 "$APPDATA\Bacula"
\r
639 StrCpy $1 bacula-sd.conf
\r
640 Call ConfigEditAndCopy
\r
642 StrCpy $0 bacula-sd
\r
643 StrCpy $1 "Storage Service"
\r
644 StrCpy $2 $ConfigStorageInstallService
\r
645 StrCpy $3 $ConfigStorageStartService
\r
648 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\List Devices.lnk" "$INSTDIR\bin\scsilist.exe" "/pause"
\r
649 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Storage Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bacula-sd.conf"'
\r
652 Section "Director Service" SecDirectorDaemon
\r
655 SetOutPath "$INSTDIR\bin"
\r
657 ${If} $ConfigDirectorDB = 1
\r
658 File /oname=bacula_cats.dll "${SRC_DIR}\cats_mysql.dll"
\r
659 File "${SRC_DIR}\libmysql.dll"
\r
660 File /oname=$PLUGINSDIR\create_database.cmd ${SRC_DIR}\create_mysql_database.cmd
\r
661 File /oname=$PLUGINSDIR\drop_database.cmd ${SRC_DIR}\drop_mysql_database.cmd
\r
662 File /oname=$PLUGINSDIR\make_tables.cmd ${SRC_DIR}\make_mysql_tables.cmd
\r
663 File ${SRC_DIR}\make_mysql_tables.sql
\r
664 File /oname=$PLUGINSDIR\drop_tables.cmd ${SRC_DIR}\drop_mysql_tables.cmd
\r
665 File ${SRC_DIR}\drop_mysql_tables.sql
\r
666 File /oname=$PLUGINSDIR\grant_privileges.cmd ${SRC_DIR}\grant_mysql_privileges.cmd
\r
667 File ${SRC_DIR}\grant_mysql_privileges.sql
\r
668 File /oname=$PLUGINSDIR\make_catalog_backup.cmd ${SRC_DIR}\make_mysql_catalog_backup.cmd
\r
669 ${ElseIf} $ConfigDirectorDB = 2
\r
670 File /oname=bacula_cats.dll "${SRC_DIR}\cats_postgresql.dll"
\r
671 File "${SRC_DIR}\libpq.dll"
\r
672 !if "${BUILD_TOOLS}" == "VC8"
\r
673 File "${SRC_DIR}\comerr32.dll"
\r
674 File "${SRC_DIR}\libintl-2.dll"
\r
675 File "${SRC_DIR}\libiconv-2.dll"
\r
676 File "${SRC_DIR}\krb5_32.dll"
\r
678 !If "${BUILD_TOOLS}" == "VC8_DEBUG"
\r
679 File "${SRC_DIR}\comerr32.dll"
\r
680 File "${SRC_DIR}\libintl-2.dll"
\r
681 File "${SRC_DIR}\libiconv-2.dll"
\r
682 File "${SRC_DIR}\krb5_32.dll"
\r
684 File /oname=$PLUGINSDIR\create_database.cmd ${SRC_DIR}\create_postgresql_database.cmd
\r
685 File /oname=$PLUGINSDIR\drop_database.cmd ${SRC_DIR}\drop_postgresql_database.cmd
\r
686 File /oname=$PLUGINSDIR\make_tables.cmd ${SRC_DIR}\make_postgresql_tables.cmd
\r
687 File ${SRC_DIR}\create_postgresql_database.sql
\r
688 File ${SRC_DIR}\make_postgresql_tables.sql
\r
689 File /oname=$PLUGINSDIR\drop_tables.cmd ${SRC_DIR}\drop_postgresql_tables.cmd
\r
690 File ${SRC_DIR}\drop_postgresql_tables.sql
\r
691 File /oname=$PLUGINSDIR\grant_privileges.cmd ${SRC_DIR}\grant_postgresql_privileges.cmd
\r
692 File ${SRC_DIR}\grant_postgresql_privileges.sql
\r
693 File /oname=$PLUGINSDIR\make_catalog_backup.cmd ${SRC_DIR}\make_postgresql_catalog_backup.cmd
\r
694 ${ElseIf} $ConfigDirectorDB = 3
\r
695 File "${SRC_DIR}\sqlite3.exe"
\r
696 !if "${BUILD_TOOLS}" == "VC8"
\r
697 File "${SRC_DIR}\sqlite3.exe.manifest"
\r
699 !If "${BUILD_TOOLS}" == "VC8_DEBUG"
\r
700 File "${SRC_DIR}\sqlite3.exe.manifest"
\r
702 File /oname=bacula_cats.dll "${SRC_DIR}\cats_sqlite3.dll"
\r
703 File /oname=$PLUGINSDIR\create_database.cmd ${SRC_DIR}\create_sqlite3_database.cmd
\r
704 File /oname=$PLUGINSDIR\drop_database.cmd ${SRC_DIR}\drop_sqlite3_database.cmd
\r
705 File /oname=$PLUGINSDIR\make_tables.cmd ${SRC_DIR}\make_sqlite3_tables.cmd
\r
706 File ${SRC_DIR}\make_sqlite3_tables.sql
\r
707 File /oname=$PLUGINSDIR\drop_tables.cmd ${SRC_DIR}\drop_sqlite3_tables.cmd
\r
708 File /oname=$PLUGINSDIR\grant_privileges.cmd ${SRC_DIR}\grant_sqlite3_privileges.cmd
\r
709 File /oname=$PLUGINSDIR\make_catalog_backup.cmd ${SRC_DIR}\make_sqlite3_catalog_backup.cmd
\r
712 File "${SRC_DIR}\bacula-dir.exe"
\r
713 File "${SRC_DIR}\dbcheck.exe"
\r
715 File "/oname=$PLUGINSDIR\delete_catalog_backup.cmd" "${SRC_DIR}\delete_catalog_backup.cmd"
\r
717 StrCpy $0 "$INSTDIR\bin"
\r
719 StrCpy $1 create_database.cmd
\r
720 Call ConfigEditAndCopy
\r
722 StrCpy $1 drop_database.cmd
\r
723 Call ConfigEditAndCopy
\r
725 StrCpy $1 make_tables.cmd
\r
726 Call ConfigEditAndCopy
\r
728 StrCpy $1 drop_tables.cmd
\r
729 Call ConfigEditAndCopy
\r
731 StrCpy $1 grant_privileges.cmd
\r
732 Call ConfigEditAndCopy
\r
734 StrCpy $1 make_catalog_backup.cmd
\r
735 Call ConfigEditAndCopy
\r
737 StrCpy $1 delete_catalog_backup.cmd
\r
738 Call ConfigEditAndCopy
\r
740 File "${SRC_DIR}\query.sql"
\r
742 File "/oname=$PLUGINSDIR\bacula-dir.conf" "bacula-dir.conf.in"
\r
744 StrCpy $0 "$APPDATA\Bacula"
\r
745 StrCpy $1 bacula-dir.conf
\r
746 Call ConfigEditAndCopy
\r
748 StrCpy $0 bacula-dir
\r
749 StrCpy $1 "Director Service"
\r
750 StrCpy $2 $ConfigDirectorInstallService
\r
751 StrCpy $3 $ConfigDirectorStartService
\r
754 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Director Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bacula-dir.conf"'
\r
759 SectionGroup "Consoles" SecGroupConsoles
\r
761 Section "Command Console" SecConsole
\r
764 SetOutPath "$INSTDIR\bin"
\r
766 File "${SRC_DIR}\bconsole.exe"
\r
767 Call InstallCommonFiles
\r
769 ${If} $InstallType = ${MigrateInstall}
\r
770 ${AndIf} ${FileExists} "$OldInstallDir\bin\bconsole.conf"
\r
771 CopyFiles "$OldInstallDir\bin\bconsole.conf" "$APPDATA\Bacula"
\r
773 File "/oname=$PLUGINSDIR\bconsole.conf" "bconsole.conf.in"
\r
774 StrCpy $0 "$APPDATA\Bacula"
\r
775 StrCpy $1 bconsole.conf
\r
776 Call ConfigEditAndCopy
\r
779 CreateShortCut "$SMPROGRAMS\Bacula\bconsole.lnk" "$INSTDIR\bin\bconsole.exe" '-c "$APPDATA\Bacula\bconsole.conf"' "$INSTDIR\bin\bconsole.exe" 0
\r
780 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Command Console Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bconsole.conf"'
\r
784 Section "Graphical Console" SecWxConsole
\r
787 SetOutPath "$INSTDIR\bin"
\r
789 Call InstallCommonFiles
\r
790 !if "${BUILD_TOOLS}" == "VC8"
\r
791 File "${SRC_DIR}\wxbase28_vc_bacula.dll"
\r
792 File "${SRC_DIR}\wxmsw28_core_vc_bacula.dll"
\r
794 !If "${BUILD_TOOLS}" == "VC8_DEBUG"
\r
795 File "${SRC_DIR}\wxbase28_vc_bacula.dll"
\r
796 File "${SRC_DIR}\wxmsw28_core_vc_bacula.dll"
\r
798 !if "${BUILD_TOOLS}" == "MinGW"
\r
799 File "${SRC_DIR}\wxbase28_gcc_bacula.dll"
\r
800 File "${SRC_DIR}\wxmsw28_core_gcc_bacula.dll"
\r
803 File "${SRC_DIR}\bwx-console.exe"
\r
805 ${If} $InstallType = ${MigrateInstall}
\r
806 ${AndIf} ${FileExists} "$OldInstallDir\bin\bwx-console.conf"
\r
807 CopyFiles "$OldInstallDir\bin\bwx-console.conf" "$APPDATA\Bacula"
\r
809 File "/oname=$PLUGINSDIR\bwx-console.conf" "bwx-console.conf.in"
\r
810 StrCpy $0 "$APPDATA\Bacula"
\r
811 StrCpy $1 bwx-console.conf
\r
812 Call ConfigEditAndCopy
\r
815 ; Create Start Menu entry
\r
816 CreateShortCut "$SMPROGRAMS\Bacula\bwx-console.lnk" "$INSTDIR\bin\bwx-console.exe" '-c "$APPDATA\Bacula\bwx-console.conf"' "$INSTDIR\bin\bwx-console.exe" 0
\r
817 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Graphical Console Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bwx-console.conf"'
\r
822 SectionGroup "Documentation" SecGroupDocumentation
\r
824 Section "Documentation (Acrobat Format)" SecDocPdf
\r
827 SetOutPath "$INSTDIR\doc"
\r
828 CreateDirectory "$INSTDIR\doc"
\r
830 File "${SRC_DIR}\manual\bacula.pdf"
\r
831 CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Manual.lnk" '"$INSTDIR\doc\bacula.pdf"'
\r
834 Section "Documentation (HTML Format)" SecDocHtml
\r
837 SetOutPath "$INSTDIR\doc"
\r
838 CreateDirectory "$INSTDIR\doc"
\r
840 File "${SRC_DIR}\manual\bacula\*.html"
\r
841 File "${SRC_DIR}\manual\bacula\*.png"
\r
842 File "${SRC_DIR}\manual\bacula\*.css"
\r
843 CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Manual (HTML).lnk" '"$INSTDIR\doc\index.html"'
\r
852 nsExec::ExecToLog 'cmd.exe /C echo Y|cacls "$INSTDIR" /T /G SYSTEM:F Administrators:F'
\r
853 nsExec::ExecToLog 'cmd.exe /C echo Y|cacls "$APPDATA\Bacula" /T /G SYSTEM:F Administrators:F'
\r
856 ; Write the uninstall keys for Windows & create Start Menu entry
\r
857 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayName" "Bacula"
\r
858 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "InstallLocation" "$INSTDIR"
\r
859 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayVersion" "${VERSION}"
\r
860 ${StrTok} $R0 "${VERSION}" "." 0 0
\r
861 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMajor" $R0
\r
862 ${StrTok} $R0 "${VERSION}" "." 1 0
\r
863 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMinor" $R0
\r
864 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoModify" 1
\r
865 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoRepair" 1
\r
866 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLUpdateInfo" "http://sourceforge.net/project/showfiles.php?group_id=50727"
\r
867 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLInfoAbout" "http://www.bacula.org"
\r
868 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "HelpLink" "http://www.bacula.org/?page=support"
\r
869 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString" '"$INSTDIR\uninstall.exe"'
\r
870 WriteUninstaller "$INSTDIR\Uninstall.exe"
\r
871 CreateShortCut "$SMPROGRAMS\Bacula\Uninstall Bacula.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
\r
875 ; Extra Page descriptions
\r
877 LangString DESC_SecFileDaemon ${LANG_ENGLISH} "Install Bacula File Daemon on this system."
\r
878 LangString DESC_SecStorageDaemon ${LANG_ENGLISH} "Install Bacula Storage Daemon on this system."
\r
879 LangString DESC_SecDirectorDaemon ${LANG_ENGLISH} "Install Bacula Director Daemon on this system."
\r
880 LangString DESC_SecConsole ${LANG_ENGLISH} "Install command console program on this system."
\r
881 LangString DESC_SecWxConsole ${LANG_ENGLISH} "Install graphical console program on this system."
\r
882 LangString DESC_SecDocPdf ${LANG_ENGLISH} "Install documentation in Acrobat format on this system."
\r
883 LangString DESC_SecDocHtml ${LANG_ENGLISH} "Install documentation in HTML format on this system."
\r
885 LangString TITLE_ConfigPage1 ${LANG_ENGLISH} "Configuration"
\r
886 LangString SUBTITLE_ConfigPage1 ${LANG_ENGLISH} "Set installation configuration."
\r
888 LangString TITLE_ConfigPage2 ${LANG_ENGLISH} "Configuration (continued)"
\r
889 LangString SUBTITLE_ConfigPage2 ${LANG_ENGLISH} "Set installation configuration."
\r
891 LangString TITLE_InstallType ${LANG_ENGLISH} "Installation Type"
\r
892 LangString SUBTITLE_InstallType ${LANG_ENGLISH} "Choose installation type."
\r
894 LangString TITLE_WriteTemplates ${LANG_ENGLISH} "Create Templates"
\r
895 LangString SUBTITLE_WriteTemplates ${LANG_ENGLISH} "Create resource templates for inclusion in the Director's configuration file."
\r
897 !InsertMacro MUI_FUNCTION_DESCRIPTION_BEGIN
\r
898 !InsertMacro MUI_DESCRIPTION_TEXT ${SecFileDaemon} $(DESC_SecFileDaemon)
\r
899 !InsertMacro MUI_DESCRIPTION_TEXT ${SecStorageDaemon} $(DESC_SecStorageDaemon)
\r
900 !InsertMacro MUI_DESCRIPTION_TEXT ${SecDirectorDaemon} $(DESC_SecDirectorDaemon)
\r
901 !InsertMacro MUI_DESCRIPTION_TEXT ${SecConsole} $(DESC_SecConsole)
\r
902 !InsertMacro MUI_DESCRIPTION_TEXT ${SecWxConsole} $(DESC_SecWxConsole)
\r
903 !InsertMacro MUI_DESCRIPTION_TEXT ${SecDocPdf} $(DESC_SecDocPdf)
\r
904 !InsertMacro MUI_DESCRIPTION_TEXT ${SecDocHtml} $(DESC_SecDocHtml)
\r
905 !InsertMacro MUI_FUNCTION_DESCRIPTION_END
\r
907 ; Uninstall section
\r
909 UninstallText "This will uninstall Bacula. Hit next to continue."
\r
911 Section "Uninstall"
\r
912 ; Shutdown any baculum that could be running
\r
913 nsExec::ExecToLog '"$INSTDIR\bin\bacula-fd.exe" /kill'
\r
914 nsExec::ExecToLog '"$INSTDIR\bin\bacula-sd.exe" /kill'
\r
915 nsExec::ExecToLog '"$INSTDIR\bin\bacula-dir.exe" /kill'
\r
918 ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-fd"
\r
920 ; Remove bacula service
\r
921 nsExec::ExecToLog '"$INSTDIR\bin\bacula-fd.exe" /remove'
\r
924 ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-sd"
\r
926 ; Remove bacula service
\r
927 nsExec::ExecToLog '"$INSTDIR\bin\bacula-sd.exe" /remove'
\r
930 ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-dir"
\r
932 ; Remove bacula service
\r
933 nsExec::ExecToLog '"$INSTDIR\bin\bacula-dir.exe" /remove'
\r
936 ; remove registry keys
\r
937 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
\r
938 DeleteRegKey HKLM "Software\Bacula"
\r
940 ; remove start menu items
\r
941 SetShellVarContext all
\r
942 Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
\r
943 RMDir "$SMPROGRAMS\Bacula"
\r
945 ; remove files and uninstaller (preserving config for now)
\r
946 Delete /REBOOTOK "$INSTDIR\bin\*"
\r
947 Delete /REBOOTOK "$INSTDIR\doc\*"
\r
948 Delete /REBOOTOK "$INSTDIR\*"
\r
950 ; Check for existing installation
\r
951 MessageBox MB_YESNO|MB_ICONQUESTION \
\r
952 "Would you like to delete the current configuration files and the working state file?" IDNO NoDel
\r
953 Delete /REBOOTOK "$APPDATA\Bacula\*"
\r
954 Delete /REBOOTOK "$APPDATA\Bacula\Work\*"
\r
955 Delete /REBOOTOK "$APPDATA\Bacula\Spool\*"
\r
956 Delete /REBOOTOK "$PLUGINSDIR\bacula-*.conf"
\r
957 Delete /REBOOTOK "$PLUGINSDIR\*console.conf"
\r
958 Delete /REBOOTOK "$PLUGINSDIR\*conf.in"
\r
959 Delete /REBOOTOK "$PLUGINSDIR\openssl.exe"
\r
960 Delete /REBOOTOK "$PLUGINSDIR\libeay32.dll"
\r
961 Delete /REBOOTOK "$PLUGINSDIR\ssleay32.dll"
\r
962 Delete /REBOOTOK "$PLUGINSDIR\sed.exe"
\r
963 Delete /REBOOTOK "$PLUGINSDIR\pw.txt"
\r
964 Delete /REBOOTOK "$PLUGINSDIR\*.sed"
\r
965 Delete /REBOOTOK "$PLUGINSDIR\*.cmd"
\r
966 Delete /REBOOTOK "$PLUGINSDIR\*.sql"
\r
967 RMDir "$APPDATA\Bacula\Work"
\r
968 RMDir "$APPDATA\Bacula\Spool"
\r
969 RMDir "$APPDATA\Bacula"
\r
972 ; remove directories used
\r
973 RMDir "$INSTDIR\bin"
\r
974 RMDir "$INSTDIR\doc"
\r
979 ; $0 - Service Name (ie Bacula-FD)
\r
980 ; $1 - Service Description (ie Bacula File Daemon)
\r
981 ; $2 - Install as Service
\r
982 ; $3 - Start Service now
\r
984 Function InstallDaemon
\r
985 Call InstallCommonFiles
\r
987 WriteRegDWORD HKLM "Software\Bacula" "Service_$0" $2
\r
990 nsExec::ExecToLog '"$INSTDIR\bin\$0.exe" /install -c "$APPDATA\Bacula\$0.conf"'
\r
997 ; Start the service?
\r
1001 nsExec::ExecToLog 'net start $0'
\r
1003 Exec '"$INSTDIR\bin\$0.exe" -c "$APPDATA\Bacula\$0.conf"'
\r
1007 CreateShortCut "$SMPROGRAMS\Bacula\Start $1.lnk" "$INSTDIR\bin\$0.exe" '-c "$APPDATA\Bacula\$0.conf"' "$INSTDIR\bin\$0.exe" 0
\r
1011 Function GetComputerName
\r
1016 System::Call "kernel32::GetComputerNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2"
\r
1018 ${StrCase} $R0 $R0 "L"
\r
1025 !define ComputerNameDnsFullyQualified 3
\r
1027 Function GetHostName
\r
1033 System::Call "kernel32::GetComputerNameExA(i ${ComputerNameDnsFullyQualified}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
\r
1036 DetailPrint "GetComputerNameExA failed - LastError = $R2"
\r
1037 Call GetComputerName
\r
1043 Call GetComputerName
\r
1052 !define NameUserPrincipal 8
\r
1054 Function GetUserName
\r
1060 System::Call "secur32::GetUserNameExA(i ${NameUserPrincipal}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
\r
1063 DetailPrint "GetUserNameExA failed - LastError = $R2"
\r
1074 System::Call "advapi32::GetUserNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
\r
1077 DetailPrint "GetUserNameA failed - LastError = $R2"
\r
1089 Function ConfigEditAndCopy
\r
1092 ${If} ${FileExists} "$0\$1"
\r
1098 nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\$1"'
\r
1099 CopyFiles "$PLUGINSDIR\$1" "$0\$1$R1"
\r
1104 Function FindDatabaseApps
\r
1107 ReadRegStr $0 HKLM "Software\MySQL AB\MySQL Server 5.0" "Location"
\r
1110 Call RemoveTrailingSlash
\r
1111 StrCpy $MySQLPath $0
\r
1112 ReadRegStr $0 HKLM "Software\MySQL AB\MySQL Server 5.0" "Version"
\r
1113 StrCpy $MySQLVersion $0
\r
1116 EnumRegKey $R1 HKLM "Software\PostgreSQL\Installations" 0
\r
1118 ReadRegStr $0 HKLM "Software\PostgreSQL\Installations\$R1" "Base Directory"
\r
1119 Call RemoveTrailingSlash
\r
1120 StrCpy $PostgreSQLPath $0
\r
1121 ReadRegStr $0 HKLM "Software\PostgreSQL\Installations\$R1" "Version"
\r
1122 StrCpy $PostgreSQLVersion $0
\r
1128 Function RemoveTrailingSlash
\r
1130 StrCpy $R1 $0 "" -1
\r
1137 Function IsDirectorSelected
\r
1139 SectionGetFlags ${SecDirectorDaemon} $R0
\r
1140 IntOp $R0 $R0 & ${SF_SELECTED}
\r
1144 Function GetSelectedComponents
\r
1147 ${If} ${SectionIsSelected} ${SecFileDaemon}
\r
1148 IntOp $R0 $R0 | ${ComponentFile}
\r
1150 ${If} ${SectionIsSelected} ${SecStorageDaemon}
\r
1151 IntOp $R0 $R0 | ${ComponentStorage}
\r
1153 ${If} ${SectionIsSelected} ${SecDirectorDaemon}
\r
1154 IntOp $R0 $R0 | ${ComponentDirector}
\r
1156 ${If} ${SectionIsSelected} ${SecConsole}
\r
1157 IntOp $R0 $R0 | ${ComponentTextConsole}
\r
1159 ${If} ${SectionIsSelected} ${SecWxConsole}
\r
1160 IntOp $R0 $R0 | ${ComponentGUIConsole}
\r
1162 ${If} ${SectionIsSelected} ${SecDocPdf}
\r
1163 IntOp $R0 $R0 | ${ComponentPDFDocs}
\r
1165 ${If} ${SectionIsSelected} ${SecDocHtml}
\r
1166 IntOp $R0 $R0 | ${ComponentHTMLDocs}
\r
1171 Function PageComponentsShow
\r
1172 ${If} $OsIsNT <> 1
\r
1173 Call DisableServerSections
\r
1176 Call SelectPreviousComponents
\r
1177 Call UpdateComponentUI
\r
1180 Function PageDirectoryPre
\r
1181 ${If} $AutomaticInstall = 1
\r
1182 ${OrIf} $InstallType = ${UpgradeInstall}
\r
1187 Function LeaveInstallPage
\r
1188 Push "$INSTDIR\install.log"
\r
1192 Function EnterWriteTemplates
\r
1196 Call GetSelectedComponents
\r
1199 IntOp $R0 $R0 & ${ComponentDirector}
\r
1200 IntOp $R1 $NewComponents & ${ComponentsFileAndStorage}
\r
1209 IntOp $R0 $NewComponents & ${ComponentFile}
\r
1211 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 0
\r
1212 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags DISABLED
\r
1213 DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State
\r
1214 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST|DISABLED
\r
1216 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 1
\r
1217 DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags
\r
1218 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State "C:\$ConfigClientName.conf"
\r
1219 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST
\r
1222 IntOp $R0 $NewComponents & ${ComponentStorage}
\r
1224 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 4" State 0
\r
1225 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 4" Flags DISABLED
\r
1226 DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" State
\r
1227 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST|DISABLED
\r
1229 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 4" State 1
\r
1230 DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 4" Flags
\r
1231 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" State "C:\$ConfigStorageName.conf"
\r
1232 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST
\r
1235 !InsertMacro MUI_HEADER_TEXT "$(TITLE_WriteTemplates)" "$(SUBTITLE_WriteTemplates)"
\r
1236 !InsertMacro MUI_INSTALLOPTIONS_DISPLAY "WriteTemplates.ini"
\r
1238 !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 2" State
\r
1240 File "/oname=$PLUGINSDIR\client.conf.in" "client.conf.in"
\r
1242 nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\client.conf.in"'
\r
1243 !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 3" State
\r
1245 CopyFiles "$PLUGINSDIR\client.conf.in" "$R0"
\r
1249 !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 4" State
\r
1251 File "/oname=$PLUGINSDIR\storage.conf.in" "storage.conf.in"
\r
1253 nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\storage.conf.in"'
\r
1254 !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 5" State
\r
1256 CopyFiles "$PLUGINSDIR\storage.conf.in" "$R0"
\r
1264 Function SelectPreviousComponents
\r
1265 ${If} $InstallType <> ${NewInstall}
\r
1266 IntOp $R1 $PreviousComponents & ${ComponentFile}
\r
1268 !InsertMacro SelectSection ${SecFileDaemon}
\r
1269 !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_RO}
\r
1271 !InsertMacro UnselectSection ${SecFileDaemon}
\r
1272 !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_RO}
\r
1274 IntOp $R1 $PreviousComponents & ${ComponentStorage}
\r
1276 !InsertMacro SelectSection ${SecStorageDaemon}
\r
1277 !InsertMacro SetSectionFlag ${SecStorageDaemon} ${SF_RO}
\r
1279 !InsertMacro UnselectSection ${SecStorageDaemon}
\r
1280 !InsertMacro ClearSectionFlag ${SecStorageDaemon} ${SF_RO}
\r
1282 IntOp $R1 $PreviousComponents & ${ComponentDirector}
\r
1284 !InsertMacro SelectSection ${SecDirectorDaemon}
\r
1285 !InsertMacro SetSectionFlag ${SecDirectorDaemon} ${SF_RO}
\r
1287 !InsertMacro UnselectSection ${SecDirectorDaemon}
\r
1288 !InsertMacro ClearSectionFlag ${SecDirectorDaemon} ${SF_RO}
\r
1290 IntOp $R1 $PreviousComponents & ${ComponentTextConsole}
\r
1292 !InsertMacro SelectSection ${SecConsole}
\r
1293 !InsertMacro SetSectionFlag ${SecConsole} ${SF_RO}
\r
1295 !InsertMacro UnselectSection ${SecConsole}
\r
1296 !InsertMacro ClearSectionFlag ${SecConsole} ${SF_RO}
\r
1298 IntOp $R1 $PreviousComponents & ${ComponentGUIConsole}
\r
1300 !InsertMacro SelectSection ${SecWxConsole}
\r
1301 !InsertMacro SetSectionFlag ${SecWxConsole} ${SF_RO}
\r
1303 !InsertMacro UnselectSection ${SecWxConsole}
\r
1304 !InsertMacro ClearSectionFlag ${SecWxConsole} ${SF_RO}
\r
1306 IntOp $R1 $PreviousComponents & ${ComponentPDFDocs}
\r
1308 !InsertMacro SelectSection ${SecDocPdf}
\r
1309 !InsertMacro SetSectionFlag ${SecDocPdf} ${SF_RO}
\r
1311 !InsertMacro UnselectSection ${SecDocPdf}
\r
1312 !InsertMacro ClearSectionFlag ${SecDocPdf} ${SF_RO}
\r
1314 IntOp $R1 $PreviousComponents & ${ComponentHTMLDocs}
\r
1316 !InsertMacro SelectSection ${SecDocHtml}
\r
1317 !InsertMacro SetSectionFlag ${SecDocHtml} ${SF_RO}
\r
1319 !InsertMacro UnselectSection ${SecDocHtml}
\r
1320 !InsertMacro ClearSectionFlag ${SecDocHtml} ${SF_RO}
\r
1325 Function DisableServerSections
\r
1326 !InsertMacro UnselectSection ${SecGroupServer}
\r
1327 !InsertMacro SetSectionFlag ${SecGroupServer} ${SF_RO}
\r
1328 !InsertMacro UnselectSection ${SecStorageDaemon}
\r
1329 !InsertMacro SetSectionFlag ${SecStorageDaemon} ${SF_RO}
\r
1330 !InsertMacro UnselectSection ${SecDirectorDaemon}
\r
1331 !InsertMacro SetSectionFlag ${SecDirectorDaemon} ${SF_RO}
\r
1334 Function UpdateComponentUI
\r
1338 Call GetSelectedComponents
\r
1341 IntOp $R1 $R0 ^ $PreviousComponents
\r
1342 IntOp $NewComponents $R0 & $R1
\r
1344 ${If} $InstallType <> ${NewInstall}
\r
1345 IntOp $R1 $NewComponents & ${ComponentFile}
\r
1347 !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_BOLD}
\r
1349 !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_BOLD}
\r
1351 IntOp $R1 $NewComponents & ${ComponentStorage}
\r
1353 !InsertMacro SetSectionFlag ${SecStorageDaemon} ${SF_BOLD}
\r
1355 !InsertMacro ClearSectionFlag ${SecStorageDaemon} ${SF_BOLD}
\r
1357 IntOp $R1 $NewComponents & ${ComponentDirector}
\r
1359 !InsertMacro SetSectionFlag ${SecDirectorDaemon} ${SF_BOLD}
\r
1361 !InsertMacro ClearSectionFlag ${SecDirectorDaemon} ${SF_BOLD}
\r
1363 IntOp $R1 $NewComponents & ${ComponentTextConsole}
\r
1365 !InsertMacro SetSectionFlag ${SecConsole} ${SF_BOLD}
\r
1367 !InsertMacro ClearSectionFlag ${SecConsole} ${SF_BOLD}
\r
1369 IntOp $R1 $NewComponents & ${ComponentGUIConsole}
\r
1371 !InsertMacro SetSectionFlag ${SecWxConsole} ${SF_BOLD}
\r
1373 !InsertMacro ClearSectionFlag ${SecWxConsole} ${SF_BOLD}
\r
1375 IntOp $R1 $NewComponents & ${ComponentPDFDocs}
\r
1377 !InsertMacro SetSectionFlag ${SecDocPdf} ${SF_BOLD}
\r
1379 !InsertMacro ClearSectionFlag ${SecDocPdf} ${SF_BOLD}
\r
1381 IntOp $R1 $NewComponents & ${ComponentHTMLDocs}
\r
1383 !InsertMacro SetSectionFlag ${SecDocHtml} ${SF_BOLD}
\r
1385 !InsertMacro ClearSectionFlag ${SecDocHtml} ${SF_BOLD}
\r
1389 GetDlgItem $R0 $HWNDPARENT 1
\r
1391 IntOp $R1 $NewComponents & ${ComponentsRequiringUserConfig}
\r
1393 SendMessage $R0 ${WM_SETTEXT} 0 "STR:Install"
\r
1395 SendMessage $R0 ${WM_SETTEXT} 0 "STR:&Next >"
\r
1402 !include "InstallType.nsh"
\r
1403 !include "ConfigPage1.nsh"
\r
1404 !include "ConfigPage2.nsh"
\r
1405 !include "DumpLog.nsh"
\r