3 ; Began as a version written by Michel Meyers (michel@tcnnet.dyndns.org)
5 ; Adapted by Kern Sibbald for native Win32 Bacula
6 ; added a number of elements from Christopher Hull's installer
8 ; D. Scott Barninger Nov 13 2004
9 ; added configuration editing for bconsole.conf and bwx-console.conf
10 ; better explanation in dialog boxes for editing config files
11 ; added Start Menu items
12 ; fix uninstall of config files to do all not just bacula-fd.conf
14 ; D. Scott Barninger Dec 05 2004
15 ; added specification of default permissions for bacula-fd.conf
16 ; - thanks to Jamie Ffolliott for pointing me at cacls
17 ; added removal of working-dir files if user selects to remove config
18 ; uninstall is now 100% clean
20 ; D. Scott Barninger Apr 17 2005
21 ; 1.36.3 release docs update
22 ; add pdf manual and menu shortcut
24 ; Robert Nelson May 15 2006
25 ; Added server installs and implemented Microsoft install locations
27 ; Added Bacula-SD and Bacula-DIR
28 ; Replaced ParameterGiven with standard GetOptions
30 ; Kern Sibbald October 2010
31 ; Remove server installs
32 ; Install into single bacula directory
33 ; (i.e. undo a large part of what Robert Nelson did)
36 ; Command line options:
41 ; netsh firewall add portopening protocol=tcp port=9102 name="Bacula-FD"
44 !define PRODUCT "Bacula"
47 ; Include the Modern UI
51 !include "LogicLib.nsh"
52 !include "FileFunc.nsh"
53 !include "Sections.nsh"
54 !include "StrFunc.nsh"
55 !include "WinMessages.nsh"
60 OutFile "${OUT_DIR}\win${WINVER}bacula-${VERSION}.exe"
63 InstallDir "C:\Program Files\Bacula"
64 InstallDirRegKey HKLM "Software\Bacula" "InstallLocation"
70 !insertmacro GetParent
81 !define MUI_COMPONENTSPAGE_SMALLDESC
83 !define MUI_HEADERIMAGE
84 !define MUI_BGCOLOR 739AB9
85 !define MUI_HEADERIMAGE_BITMAP "bacula-logo.bmp"
87 !InsertMacro MUI_PAGE_WELCOME
88 !InsertMacro MUI_PAGE_LICENSE "..\..\..\LICENSE"
89 Page custom EnterInstallType
90 !define MUI_PAGE_CUSTOMFUNCTION_SHOW PageComponentsShow
91 !InsertMacro MUI_PAGE_COMPONENTS
92 !define MUI_PAGE_CUSTOMFUNCTION_PRE PageDirectoryPre
93 !InsertMacro MUI_PAGE_DIRECTORY
94 Page custom EnterConfigPage1 LeaveConfigPage1
95 Page custom EnterConfigPage2 LeaveConfigPage2
96 !Define MUI_PAGE_CUSTOMFUNCTION_LEAVE LeaveInstallPage
97 !InsertMacro MUI_PAGE_INSTFILES
98 Page custom EnterWriteTemplates
99 !Define MUI_FINISHPAGE_SHOWREADME $INSTDIR\Readme.txt
100 !InsertMacro MUI_PAGE_FINISH
102 !InsertMacro MUI_UNPAGE_WELCOME
103 !InsertMacro MUI_UNPAGE_CONFIRM
104 !InsertMacro MUI_UNPAGE_INSTFILES
105 !InsertMacro MUI_UNPAGE_FINISH
107 !define MUI_ABORTWARNING
109 !InsertMacro MUI_LANGUAGE "English"
111 !InsertMacro GetParameters
112 !InsertMacro GetOptions
114 DirText "Setup will install Bacula ${VERSION} to the directory specified below. To install in a different folder, click Browse and select another folder."
116 !InsertMacro MUI_RESERVEFILE_INSTALLOPTIONS
132 Var ConfigClientMaxJobs
133 Var ConfigClientPassword
134 Var ConfigClientInstallService
135 Var ConfigClientStartService
137 Var ConfigStorageName
138 Var ConfigStoragePort
139 Var ConfigStorageMaxJobs
140 Var ConfigStoragePassword
141 Var ConfigStorageInstallService
142 Var ConfigStorageStartService
144 Var ConfigDirectorName
145 Var ConfigDirectorPort
146 Var ConfigDirectorMaxJobs
147 Var ConfigDirectorPassword
148 Var ConfigDirectorAddress
149 Var ConfigDirectorMailServer
150 Var ConfigDirectorMailAddress
152 Var ConfigDirectorInstallService
153 Var ConfigDirectorStartService
155 Var ConfigMonitorName
156 Var ConfigMonitorPassword
158 Var LocalDirectorPassword
164 Var PostgreSQLVersion
170 !define UpgradeInstall 1
171 !define MigrateInstall 2
174 Var PreviousComponents
177 ; Bit 0 = File Service
178 ; 1 = Storage Service
179 ; 2 = Director Service
180 ; 3 = Command Console
182 ; 5 = wxWidgits Console
183 ; 6 = Documentation (PDF)
184 ; 7 = Documentation (HTML)
186 !define ComponentFile 1
187 !define ComponentStorage 2
188 !define ComponentDirector 4
189 !define ComponentTextConsole 8
190 !define ComponentBatConsole 16
191 !define ComponentGUIConsole 32
192 !define ComponentPDFDocs 64
193 !define ComponentHTMLDocs 128
195 !define ComponentsRequiringUserConfig 63
196 !define ComponentsFileAndStorage 3
197 !define ComponentsFileAndStorageAndDirector 7
198 !define ComponentsDirectorAndTextGuiConsoles 60
199 !define ComponentsTextAndGuiConsoles 56
208 ; Process Command Line Options
212 StrCpy $CommonFilesDone 0
214 StrCpy $AutomaticInstall 0
215 StrCpy $InstallType ${NewInstall}
216 StrCpy $OldInstallDir ""
217 StrCpy $PreviousComponents 0
218 StrCpy $NewComponents 0
220 StrCpy $MySQLVersion ""
221 StrCpy $PostgreSQLPath ""
222 StrCpy $PostgreSQLVersion ""
223 StrCpy $LocalDirectorPassword ""
228 ${GetOptions} $R0 "/noservice" $R1
233 ${GetOptions} $R0 "/nostart" $R1
240 ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
249 Pop $LocalHostAddress
253 ; Configuration Defaults
255 StrCpy $ConfigClientName "$HostName-fd"
256 StrCpy $ConfigClientPort 9102
257 StrCpy $ConfigClientMaxJobs 10
258 ;StrCpy $ConfigClientPassword
259 StrCpy $ConfigClientInstallService "$OptService"
260 StrCpy $ConfigClientStartService "$OptStart"
262 StrCpy $ConfigDirectorPort 9101
264 StrCpy $ConfigMonitorName "$HostName-mon"
265 ;StrCpy $ConfigMonitorPassword
267 ; PLUGINSDIR refers to temporary helper programs and not Bacula plugins!
269 File "/oname=$PLUGINSDIR\openssl.exe" "${SRC_DIR}\openssl.exe"
270 File "/oname=$PLUGINSDIR\libeay32.dll" "${SRC_DIR}\libeay32.dll"
271 File "/oname=$PLUGINSDIR\ssleay32.dll" "${SRC_DIR}\ssleay32.dll"
272 File "/oname=$PLUGINSDIR\sed.exe" "${SRC_DIR}\sed.exe"
274 !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "InstallType.ini"
275 !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "WriteTemplates.ini"
277 SetPluginUnload alwaysoff
279 ; Set client password
280 nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
283 FileOpen $R1 "$PLUGINSDIR\pw.txt" r
286 ${StrTrimNewLines} $ConfigClientPassword $R0
290 SetPluginUnload manual
292 ; Set monitor password
293 nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
296 FileOpen $R1 "$PLUGINSDIR\pw.txt" r
299 ${StrTrimNewLines} $ConfigMonitorPassword $R0
307 Function .onSelChange
308 Call UpdateComponentUI
311 Function InstallCommonFiles
312 ${If} $CommonFilesDone = 0
313 SetOutPath "$INSTDIR"
316 SetOutPath "$INSTDIR"
317 !if "${BUILD_TOOLS}" == "MinGW32"
318 File "${SRC_DIR}\mingwm10.dll"
319 File "${SRC_DIR}\pthreadGCE.dll"
320 File "${SRC_DIR}\zlib1.dll"
321 File "${SRC_DIR}\ssleay32.dll"
322 File "${SRC_DIR}\libeay32.dll"
324 !if "${BUILD_TOOLS}" == "MinGW64"
325 File "${SRC_DIR}\pthreadGCE.dll"
326 File "${SRC_DIR}\cryptoeay32-0.9.8.dll"
327 File "${SRC_DIR}\ssleay32-0.9.8.dll"
328 File "${SRC_DIR}\zlib1.dll"
330 File "${SRC_DIR}\bacula.dll"
332 File "/oname=$INSTDIR\openssl.cnf" "${SRC_DIR}\openssl.cnf"
333 File "${SRC_DIR}\openssl.exe"
334 File "${SRC_DIR}\bsleep.exe"
335 File "${SRC_DIR}\bsmtp.exe"
336 File "${SRC_DIR}\expr64.exe"
337 File "${SRC_DIR}\snooze.exe"
339 CreateShortCut "$SMPROGRAMS\Bacula\Documentation\View Readme.lnk" "write.exe" '"$INSTDIR\Readme.txt"'
341 StrCpy $CommonFilesDone 1
345 Section "-Initialize"
347 WriteRegStr HKLM Software\Bacula InstallLocation "$INSTDIR"
349 Call GetSelectedComponents
351 WriteRegDWORD HKLM Software\Bacula Components $R2
353 ; remove start menu items
354 SetShellVarContext all
356 Delete /REBOOTOK "$SMPROGRAMS\Bacula\Configuration\*"
357 Delete /REBOOTOK "$SMPROGRAMS\Bacula\Documentation\*"
358 Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
359 RMDir "$SMPROGRAMS\Bacula\Configuration"
360 RMDir "$SMPROGRAMS\Bacula\Documentation"
361 RMDir "$SMPROGRAMS\Bacula"
362 CreateDirectory "$SMPROGRAMS\Bacula"
363 CreateDirectory "$SMPROGRAMS\Bacula\Configuration"
364 CreateDirectory "$SMPROGRAMS\Bacula\Documentation"
366 CreateDirectory "$INSTDIR"
367 CreateDirectory "$INSTDIR\working"
369 SetOutPath "$INSTDIR"
370 File "..\..\..\LICENSE"
371 Delete /REBOOTOK "$INSTDIR\License.txt"
373 ; Output a series of SED commands to configure the .conf file(s)
374 FileOpen $R1 $PLUGINSDIR\config.sed w
375 FileWrite $R1 "s;@VERSION@;${VERSION};g$\r$\n"
376 FileWrite $R1 "s;@DATE@;${__DATE__};g$\r$\n"
377 FileWrite $R1 "s;@DISTNAME@;Windows;g$\r$\n"
379 StrCpy $R2 ${BUILD_TOOLS}
385 FileWrite $R1 "s;@DISTVER@;$R2;g$\r$\n"
387 ${StrRep} $R2 "$INSTDIR\working" "\" "\\\\"
388 FileWrite $R1 's;@working_dir@;$R2;g$\r$\n'
389 ${StrRep} $R2 "$INSTDIR\working" "\" "\\"
390 FileWrite $R1 's;@working_dir_cmd@;$R2;g$\r$\n'
392 ; ${StrRep} $R2 "$INSTDIR" "\" "\\\\"
393 ; FileWrite $R1 's;@bin_dir@;$R2;g$\r$\n'
394 ; ${StrRep} $R2 "$INSTDIR" "\" "\\"
395 ; FileWrite $R1 's;@bin_dir_cmd@;$R2;g$\r$\n'
397 ${StrRep} $R2 "$INSTDIR\plugins" "\" "\\\\"
398 FileWrite $R1 's;@fdplugins_dir@;$R2;g$\r$\n'
400 ${StrRep} $R2 "$INSTDIR" "\" "/"
401 FileWrite $R1 "s;@BUILD_DIR@;$R2;g$\r$\n"
403 FileWrite $R1 "s;@client_address@;$LocalHostAddress;g$\r$\n"
405 ${If} "$ConfigClientName" != ""
406 FileWrite $R1 "s;@client_name@;$ConfigClientName;g$\r$\n"
408 ${If} "$ConfigClientPort" != ""
409 FileWrite $R1 "s;@client_port@;$ConfigClientPort;g$\r$\n"
411 ${If} "$ConfigClientMaxJobs" != ""
412 FileWrite $R1 "s;@client_maxjobs@;$ConfigClientMaxJobs;g$\r$\n"
414 ${If} "$ConfigClientPassword" != ""
415 FileWrite $R1 "s;@client_password@;$ConfigClientPassword;g$\r$\n"
417 ${If} "$ConfigDirectorName" != ""
418 FileWrite $R1 "s;@director_name@;$ConfigDirectorName;g$\r$\n"
420 ${If} "$ConfigDirectorPort" != ""
421 FileWrite $R1 "s;@director_port@;$ConfigDirectorPort;g$\r$\n"
423 ${If} "$ConfigDirectorPassword" != ""
424 FileWrite $R1 "s;@director_password@;$ConfigDirectorPassword;g$\r$\n"
426 ${If} "$ConfigDirectorAddress" != ""
427 FileWrite $R1 "s;@director_address@;$ConfigDirectorAddress;g$\r$\n"
429 ${If} "$ConfigMonitorName" != ""
430 FileWrite $R1 "s;@monitor_name@;$ConfigMonitorName;g$\r$\n"
432 ${If} "$ConfigMonitorPassword" != ""
433 FileWrite $R1 "s;@monitor_password@;$ConfigMonitorPassword;g$\r$\n"
438 ${If} ${FileExists} "$OldInstallDir\bacula-fd.exe"
439 nsExec::ExecToLog '"$OldInstallDir\bacula-fd.exe" /kill' ; Shutdown any bacula that could be running
441 nsExec::ExecToLog '"$OldInstallDir\bacula-fd.exe" /remove' ; Remove existing service
447 SectionGroup "Client" SecGroupClient
449 Section "File Service" SecFileDaemon
452 SetOutPath "$INSTDIR\plugins"
453 File "${SRC_DIR}\exchange-fd.dll"
455 SetOutPath "$INSTDIR"
457 File "${SRC_DIR}\bacula-fd.exe"
459 File "/oname=$PLUGINSDIR\bacula-fd.conf" "bacula-fd.conf.in"
462 StrCpy $1 bacula-fd.conf
463 Call ConfigEditAndCopy
466 StrCpy $1 "File Service"
467 StrCpy $2 $ConfigClientInstallService
468 StrCpy $3 $ConfigClientStartService
472 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Client Configuration.lnk" "write.exe" '"$INSTDIR\bacula-fd.conf"'
477 SectionGroup "Consoles" SecGroupConsoles
479 Section "Command Console" SecConsole
482 SetOutPath "$INSTDIR"
484 File "${SRC_DIR}\bconsole.exe"
485 Call InstallCommonFiles
487 File "/oname=$PLUGINSDIR\bconsole.conf" "bconsole.conf.in"
489 StrCpy $1 bconsole.conf
490 Call ConfigEditAndCopy
492 CreateShortCut "$SMPROGRAMS\Bacula\bconsole.lnk" "$INSTDIR\bconsole.exe" '-c "$INSTDIR\bconsole.conf"' "$INSTDIR\bconsole.exe" 0
493 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Command Console Configuration.lnk" "write.exe" '"$INSTDIR\bconsole.conf"'
497 Section "Bat Console" SecBatConsole
500 SetOutPath "$INSTDIR"
502 Call InstallCommonFiles
503 File "${SRC_DIR}\QtCore4.dll"
504 File "${SRC_DIR}\QtGui4.dll"
506 File "${SRC_DIR}\bat.exe"
508 File "/oname=$PLUGINSDIR\bat.conf" "bat.conf.in"
511 Call ConfigEditAndCopy
513 SetOutPath "$INSTDIR\help"
514 File "${SRC_DIR}\help\*"
515 SetOutPath "$INSTDIR"
518 ; Create Start Menu entry
519 CreateShortCut "$SMPROGRAMS\Bacula\Bat.lnk" "$INSTDIR\bat.exe" '-c "$INSTDIR\bat.conf"' "$INSTDIR\bat.exe" 0
520 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Bat Configuration.lnk" "write.exe" '"$INSTDIR\bat.conf"'
524 ; Deleted because wxconsole is deprecated
525 ;Section "Graphical Console" SecWxConsole
528 ; SetOutPath "$INSTDIR"
534 SectionGroup "Documentation" SecGroupDocumentation
536 Section "Documentation (Acrobat Format)" SecDocPdf
539 SetOutPath "$INSTDIR\doc"
540 CreateDirectory "$INSTDIR\doc"
542 File "${SRC_DIR}\docs\manuals\en\console\console.pdf"
543 File "${SRC_DIR}\docs\manuals\en\misc\misc.pdf"
544 File "${SRC_DIR}\docs\manuals\en\main\main.pdf"
545 File "${SRC_DIR}\docs\manuals\en\utility\utility.pdf"
546 File "${SRC_DIR}\docs\manuals\en\problems\problems.pdf"
547 CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Console.lnk" '"$INSTDIR\doc\console.pdf"'
548 CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Main.lnk" '"$INSTDIR\doc\main.pdf"'
549 CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Misc.lnk" '"$INSTDIR\doc\misc.pdf"'
550 CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Utility.lnk" '"$INSTDIR\doc\utility.pdf"'
551 CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Problems.lnk" '"$INSTDIR\doc\problems.pdf"'
552 SetOutPath "$INSTDIR"
555 ;Section "Documentation (HTML Format)" SecDocHtml
558 ; SetOutPath "$INSTDIR\doc"
559 ; CreateDirectory "$INSTDIR\doc"
561 ; File "${SRC_DIR}\manual\bacula\*.html"
562 ; File "${SRC_DIR}\manual\bacula\*.png"
563 ; File "${SRC_DIR}\manual\bacula\*.css"
564 ; CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Manual (HTML).lnk" '"$INSTDIR\doc\index.html"'
573 ; nsExec::ExecToLog 'cmd.exe /C echo Y|cacls "$INSTDIR" /T /G SYSTEM:F Administrators:F'
576 ; Write the uninstall keys for Windows & create Start Menu entry
577 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayName" "Bacula"
578 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "InstallLocation" "$INSTDIR"
579 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayVersion" "${VERSION}"
580 ${StrTok} $R0 "${VERSION}" "." 0 0
581 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMajor" $R0
582 ${StrTok} $R0 "${VERSION}" "." 1 0
583 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMinor" $R0
584 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoModify" 1
585 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoRepair" 1
586 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLUpdateInfo" "http://www.bacula.org"
587 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLInfoAbout" "http://www.bacula.org"
588 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "HelpLink" "http://www.bacula.org?page=support"
589 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString" '"$INSTDIR\uninstall.exe"'
590 WriteUninstaller "$INSTDIR\Uninstall.exe"
591 CreateShortCut "$SMPROGRAMS\Bacula\Uninstall Bacula.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
595 ; Extra Page descriptions
597 LangString DESC_SecFileDaemon ${LANG_ENGLISH} "Install Bacula File Daemon on this system."
598 LangString DESC_SecConsole ${LANG_ENGLISH} "Install command console program on this system."
599 LangString DESC_SecBatConsole ${LANG_ENGLISH} "Install Bat graphical console program on this system."
601 LangString TITLE_ConfigPage1 ${LANG_ENGLISH} "Configuration"
602 LangString SUBTITLE_ConfigPage1 ${LANG_ENGLISH} "Set installation configuration."
604 LangString TITLE_ConfigPage2 ${LANG_ENGLISH} "Configuration (continued)"
605 LangString SUBTITLE_ConfigPage2 ${LANG_ENGLISH} "Set installation configuration."
607 LangString TITLE_InstallType ${LANG_ENGLISH} "Installation Type"
608 LangString SUBTITLE_InstallType ${LANG_ENGLISH} "Choose installation type."
610 LangString TITLE_WriteTemplates ${LANG_ENGLISH} "Create Templates"
611 LangString SUBTITLE_WriteTemplates ${LANG_ENGLISH} "Create a resource template for inclusion in the Director's configuration file."
613 !InsertMacro MUI_FUNCTION_DESCRIPTION_BEGIN
614 !InsertMacro MUI_DESCRIPTION_TEXT ${SecFileDaemon} $(DESC_SecFileDaemon)
615 !InsertMacro MUI_DESCRIPTION_TEXT ${SecConsole} $(DESC_SecConsole)
616 !InsertMacro MUI_DESCRIPTION_TEXT ${SecBatConsole} $(DESC_SecBatConsole)
617 !InsertMacro MUI_FUNCTION_DESCRIPTION_END
621 UninstallText "This will uninstall Bacula. Click Uninstall to continue."
624 ; Shutdown any baculum that could be running
625 nsExec::ExecToLog '"$INSTDIR\bacula-fd.exe" /kill'
628 ; ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-fd"
629 ; Remove bacula service
630 nsExec::ExecToLog '"$INSTDIR\bacula-fd.exe" /remove'
631 nsExec::ExecToLog '"$INSTDIR\plugins\exchange-fd.dll" /remove'
633 ; remove registry keys
634 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
635 DeleteRegKey HKLM "Software\Bacula"
637 ; remove start menu items
638 SetShellVarContext all
639 Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
640 RMDir "$SMPROGRAMS\Bacula"
642 ; remove files and uninstaller (preserving config for now)
643 Delete /REBOOTOK "$INSTDIR\doc\*"
644 Delete /REBOOTOK "$INSTDIR\*"
646 ; Check for existing installation
647 MessageBox MB_YESNO|MB_ICONQUESTION \
648 "Would you like to delete the current configuration files and the working state file?" IDNO NoDel
649 Delete /REBOOTOK "$INSTDIR\*"
650 Delete /REBOOTOK "$INSTDIR\working\*"
651 Delete /REBOOTOK "$INSTDIR\plugins\*"
652 Delete /REBOOTOK "$PLUGINSDIR\bacula-*.conf"
653 Delete /REBOOTOK "$PLUGINSDIR\*console.conf"
654 Delete /REBOOTOK "$PLUGINSDIR\*conf.in"
655 Delete /REBOOTOK "$PLUGINSDIR\openssl.exe"
656 Delete /REBOOTOK "$PLUGINSDIR\libeay32.dll"
657 Delete /REBOOTOK "$PLUGINSDIR\ssleay32.dll"
658 Delete /REBOOTOK "$PLUGINSDIR\sed.exe"
659 Delete /REBOOTOK "$PLUGINSDIR\pw.txt"
660 Delete /REBOOTOK "$PLUGINSDIR\*.sed"
661 Delete /REBOOTOK "$PLUGINSDIR\*.cmd"
662 Delete /REBOOTOK "$PLUGINSDIR\*.sql"
663 RMDir "$INSTDIR\plugins"
664 RMDir "$INSTDIR\working"
668 ; remove directories used
674 ; $0 - Service Name (ie Bacula-FD)
675 ; $1 - Service Description (ie Bacula File Daemon)
676 ; $2 - Install as Service
677 ; $3 - Start Service now
679 Function InstallDaemon
680 Call InstallCommonFiles
682 WriteRegDWORD HKLM "Software\Bacula" "Service_$0" $2
685 nsExec::ExecToLog '"$INSTDIR\$0.exe" /kill'
687 nsExec::ExecToLog '"$INSTDIR\$0.exe" /remove'
688 nsExec::ExecToLog '"$INSTDIR\$0.exe" /install -c "$INSTDIR\$0.conf"'
699 nsExec::ExecToLog 'net start $0'
701 Exec '"$INSTDIR\$0.exe" /service -c "$INSTDIR\$0.conf"'
705 CreateShortCut "$SMPROGRAMS\Bacula\Start $1.lnk" "$INSTDIR\$0.exe" '-c "$INSTDIR\$0.conf"' "$INSTDIR\$0.exe" 0
709 Function GetComputerName
714 System::Call "kernel32::GetComputerNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2"
716 ${StrCase} $R0 $R0 "L"
723 !define ComputerNameDnsFullyQualified 3
731 System::Call "kernel32::GetComputerNameExA(i ${ComputerNameDnsFullyQualified}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
734 DetailPrint "GetComputerNameExA failed - LastError = $R2"
750 !define NameUserPrincipal 8
758 System::Call "secur32::GetUserNameExA(i ${NameUserPrincipal}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
761 DetailPrint "GetUserNameExA failed - LastError = $R2"
772 System::Call "advapi32::GetUserNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
775 DetailPrint "GetUserNameA failed - LastError = $R2"
787 Function ConfigEditAndCopy
790 ${If} ${FileExists} "$0\$1"
796 nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\$1"'
797 CopyFiles "$PLUGINSDIR\$1" "$0\$1$R1"
802 Function GetSelectedComponents
805 ${If} ${SectionIsSelected} ${SecFileDaemon}
806 IntOp $R0 $R0 | ${ComponentFile}
808 ${If} ${SectionIsSelected} ${SecConsole}
809 IntOp $R0 $R0 | ${ComponentTextConsole}
811 ${If} ${SectionIsSelected} ${SecBatConsole}
812 IntOp $R0 $R0 | ${ComponentBatConsole}
814 ${If} ${SectionIsSelected} ${SecDocPdf}
815 IntOp $R0 $R0 | ${ComponentPDFDocs}
820 Function PageComponentsShow
821 Call SelectPreviousComponents
822 Call UpdateComponentUI
825 Function PageDirectoryPre
826 ${If} $AutomaticInstall = 1
827 ${OrIf} $InstallType = ${UpgradeInstall}
832 Function LeaveInstallPage
833 Push "$INSTDIR\install.log"
837 Function EnterWriteTemplates
841 Call GetSelectedComponents
844 IntOp $R0 $R0 & ${ComponentDirector}
845 IntOp $R1 $NewComponents & ${ComponentsFileAndStorage}
854 IntOp $R0 $NewComponents & ${ComponentFile}
856 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 0
857 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags DISABLED
858 DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State
859 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST|DISABLED
861 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 1
862 DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags
863 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State "C:\$ConfigClientName.conf"
867 !InsertMacro MUI_HEADER_TEXT "$(TITLE_WriteTemplates)" "$(SUBTITLE_WriteTemplates)"
868 !InsertMacro MUI_INSTALLOPTIONS_DISPLAY "WriteTemplates.ini"
870 !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 2" State
872 File "/oname=$PLUGINSDIR\client.conf.in" "client.conf.in"
874 nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\client.conf.in"'
875 !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 3" State
877 CopyFiles "$PLUGINSDIR\client.conf.in" "$R0"
886 Function SelectPreviousComponents
887 ${If} $InstallType <> ${NewInstall}
888 IntOp $R1 $PreviousComponents & ${ComponentFile}
890 !InsertMacro SelectSection ${SecFileDaemon}
891 !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_RO}
893 !InsertMacro UnselectSection ${SecFileDaemon}
894 !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_RO}
896 IntOp $R1 $PreviousComponents & ${ComponentTextConsole}
898 !InsertMacro SelectSection ${SecConsole}
899 !InsertMacro SetSectionFlag ${SecConsole} ${SF_RO}
901 !InsertMacro UnselectSection ${SecConsole}
902 !InsertMacro ClearSectionFlag ${SecConsole} ${SF_RO}
904 IntOp $R1 $PreviousComponents & ${ComponentBatConsole}
906 !InsertMacro SelectSection ${SecBatConsole}
907 !InsertMacro SetSectionFlag ${SecBatConsole} ${SF_RO}
909 !InsertMacro UnselectSection ${SecBatConsole}
910 !InsertMacro ClearSectionFlag ${SecBatConsole} ${SF_RO}
913 !InsertMacro SelectSection ${SecDocPdf}
914 !InsertMacro SetSectionFlag ${SecDocPdf} ${SF_RO}
916 !InsertMacro UnselectSection ${SecDocPdf}
917 !InsertMacro ClearSectionFlag ${SecDocPdf} ${SF_RO}
922 Function UpdateComponentUI
926 Call GetSelectedComponents
929 IntOp $R1 $R0 ^ $PreviousComponents
930 IntOp $NewComponents $R0 & $R1
932 ${If} $InstallType <> ${NewInstall}
933 IntOp $R1 $NewComponents & ${ComponentFile}
935 !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_BOLD}
937 !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_BOLD}
939 IntOp $R1 $NewComponents & ${ComponentTextConsole}
941 !InsertMacro SetSectionFlag ${SecConsole} ${SF_BOLD}
943 !InsertMacro ClearSectionFlag ${SecConsole} ${SF_BOLD}
945 IntOp $R1 $NewComponents & ${ComponentBatConsole}
947 !InsertMacro SetSectionFlag ${SecBatConsole} ${SF_BOLD}
949 !InsertMacro ClearSectionFlag ${SecBatConsole} ${SF_BOLD}
951 IntOp $R1 $NewComponents & ${ComponentPDFDocs}
953 !InsertMacro SetSectionFlag ${SecDocPdf} ${SF_BOLD}
955 !InsertMacro ClearSectionFlag ${SecDocPdf} ${SF_BOLD}
959 GetDlgItem $R0 $HWNDPARENT 1
961 IntOp $R1 $NewComponents & ${ComponentsRequiringUserConfig}
963 SendMessage $R0 ${WM_SETTEXT} 0 "STR:Install"
965 SendMessage $R0 ${WM_SETTEXT} 0 "STR:&Next >"
972 !include "InstallType.nsh"
973 !include "ConfigPage1.nsh"
974 !include "ConfigPage2.nsh"
975 !include "DumpLog.nsh"