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 2008
31 ; Remove server installs
32 ; Install into single bacula directory
33 ; (i.e. undo a large part of what Robert Nelson did)
35 ; Eric Bollengier March 2009
36 ; Updated to handle Win64 installation
38 ; Kern Sibbald April 2009
39 ; Correct some Win64 install problems
40 ; It is mind boggling how many lines of this insane scripting language
41 ; have been written with absolutely no comments
43 ; Command line options:
48 ; netsh firewall add portopening protocol=tcp port=9102 name="Bacula-FD"
51 !define PRODUCT "Bacula"
54 ; Include the Modern UI
58 !include "LogicLib.nsh"
59 !include "FileFunc.nsh"
60 !include "Sections.nsh"
61 !include "StrFunc.nsh"
62 !include "WinMessages.nsh"
67 OutFile "${OUT_DIR}\win${WINVER}bacula-${VERSION}.exe"
70 InstallDir "C:\Program Files\Bacula"
71 InstallDirRegKey HKLM "Software\Bacula" "InstallLocation"
77 !insertmacro GetParent
88 !define MUI_COMPONENTSPAGE_SMALLDESC
90 !define MUI_HEADERIMAGE
91 !define MUI_BGCOLOR 739AB9
92 !define MUI_HEADERIMAGE_BITMAP "bacula-logo.bmp"
94 !InsertMacro MUI_PAGE_WELCOME
95 !InsertMacro MUI_PAGE_LICENSE "..\..\..\LICENSE"
96 Page custom EnterInstallType
97 !define MUI_PAGE_CUSTOMFUNCTION_SHOW PageComponentsShow
98 !InsertMacro MUI_PAGE_COMPONENTS
99 !define MUI_PAGE_CUSTOMFUNCTION_PRE PageDirectoryPre
100 !InsertMacro MUI_PAGE_DIRECTORY
101 Page custom EnterConfigPage1 LeaveConfigPage1
102 Page custom EnterConfigPage2 LeaveConfigPage2
103 !Define MUI_PAGE_CUSTOMFUNCTION_LEAVE LeaveInstallPage
104 !InsertMacro MUI_PAGE_INSTFILES
105 Page custom EnterWriteTemplates
106 !Define MUI_FINISHPAGE_SHOWREADME $INSTDIR\Readme.txt
107 !InsertMacro MUI_PAGE_FINISH
109 !InsertMacro MUI_UNPAGE_WELCOME
110 !InsertMacro MUI_UNPAGE_CONFIRM
111 !InsertMacro MUI_UNPAGE_INSTFILES
112 !InsertMacro MUI_UNPAGE_FINISH
114 !define MUI_ABORTWARNING
116 !InsertMacro MUI_LANGUAGE "English"
118 !InsertMacro GetParameters
119 !InsertMacro GetOptions
121 DirText "Setup will install Bacula ${VERSION} to the directory specified below. To install in a different folder, click Browse and select another folder."
123 !InsertMacro MUI_RESERVEFILE_INSTALLOPTIONS
139 Var ConfigClientMaxJobs
140 Var ConfigClientPassword
141 Var ConfigClientInstallService
142 Var ConfigClientStartService
144 Var ConfigStorageName
145 Var ConfigStoragePort
146 Var ConfigStorageMaxJobs
147 Var ConfigStoragePassword
148 Var ConfigStorageInstallService
149 Var ConfigStorageStartService
151 Var ConfigDirectorName
152 Var ConfigDirectorPort
153 Var ConfigDirectorMaxJobs
154 Var ConfigDirectorPassword
155 Var ConfigDirectorAddress
156 Var ConfigDirectorMailServer
157 Var ConfigDirectorMailAddress
159 Var ConfigDirectorInstallService
160 Var ConfigDirectorStartService
162 Var ConfigMonitorName
163 Var ConfigMonitorPassword
165 Var LocalDirectorPassword
171 Var PostgreSQLVersion
177 !define UpgradeInstall 1
178 !define MigrateInstall 2
181 Var PreviousComponents
184 ; Bit 0 = File Service
185 ; 1 = Storage Service
186 ; 2 = Director Service
187 ; 3 = Command Console
189 ; 5 = wxWidgits Console
190 ; 6 = Documentation (PDF)
191 ; 7 = Documentation (HTML)
193 !define ComponentFile 1
194 !define ComponentStorage 2
195 !define ComponentDirector 4
196 !define ComponentTextConsole 8
197 !define ComponentBatConsole 16
198 !define ComponentGUIConsole 32
199 !define ComponentPDFDocs 64
200 !define ComponentHTMLDocs 128
202 !define ComponentsRequiringUserConfig 63
203 !define ComponentsFileAndStorage 3
204 !define ComponentsFileAndStorageAndDirector 7
205 !define ComponentsDirectorAndTextGuiConsoles 60
206 !define ComponentsTextAndGuiConsoles 56
215 ; Process Command Line Options
219 StrCpy $CommonFilesDone 0
221 StrCpy $AutomaticInstall 0
222 StrCpy $InstallType ${NewInstall}
223 StrCpy $OldInstallDir ""
224 StrCpy $PreviousComponents 0
225 StrCpy $NewComponents 0
227 StrCpy $MySQLVersion ""
228 StrCpy $PostgreSQLPath ""
229 StrCpy $PostgreSQLVersion ""
230 StrCpy $LocalDirectorPassword ""
235 ${GetOptions} $R0 "/noservice" $R1
240 ${GetOptions} $R0 "/nostart" $R1
247 ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
256 Pop $LocalHostAddress
260 ; Configuration Defaults
262 StrCpy $ConfigClientName "$HostName-fd"
263 StrCpy $ConfigClientPort 9102
264 StrCpy $ConfigClientMaxJobs 10
265 ;StrCpy $ConfigClientPassword
266 StrCpy $ConfigClientInstallService "$OptService"
267 StrCpy $ConfigClientStartService "$OptStart"
269 StrCpy $ConfigDirectorPort 9101
271 StrCpy $ConfigMonitorName "$HostName-mon"
272 ;StrCpy $ConfigMonitorPassword
274 ; PLUGINSDIR refers to temporary helper programs and not Bacula plugins!
276 File "/oname=$PLUGINSDIR\openssl.exe" "${SRC_DIR}\openssl.exe"
277 File "/oname=$PLUGINSDIR\ssleay32-0.9.8.dll" "${SRC_DIR}\ssleay32-0.9.8.dll"
278 File "/oname=$PLUGINSDIR\cryptoeay32-0.9.8.dll" "${SRC_DIR}\cryptoeay32-0.9.8.dll"
279 ; File "/oname=$PLUGINSDIR\libeay32.dll" "${SRC_DIR}\libeay32.dll"
280 ; File "/oname=$PLUGINSDIR\ssleay32.dll" "${SRC_DIR}\ssleay32.dll"
281 File "/oname=$PLUGINSDIR\sed.exe" "${SRC_DIR}\sed.exe"
283 !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "InstallType.ini"
284 !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "WriteTemplates.ini"
286 SetPluginUnload alwaysoff
288 ; Set client password
289 nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
292 FileOpen $R1 "$PLUGINSDIR\pw.txt" r
295 ${StrTrimNewLines} $ConfigClientPassword $R0
299 SetPluginUnload manual
301 ; Set monitor password
302 nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
305 FileOpen $R1 "$PLUGINSDIR\pw.txt" r
308 ${StrTrimNewLines} $ConfigMonitorPassword $R0
316 Function .onSelChange
317 Call UpdateComponentUI
320 Function InstallCommonFiles
321 ${If} $CommonFilesDone = 0
322 SetOutPath "$INSTDIR"
325 SetOutPath "$INSTDIR"
326 !if "${BUILD_TOOLS}" == "MinGW32"
327 File "${SRC_DIR}\mingwm10.dll"
328 File "${SRC_DIR}\pthreadGCE.dll"
329 File "${SRC_DIR}\zlib1.dll"
330 File "${SRC_DIR}\ssleay32.dll"
331 File "${SRC_DIR}\libeay32.dll"
333 !if "${BUILD_TOOLS}" == "MinGW64"
334 File "${SRC_DIR}\pthreadGCE.dll"
335 File "${SRC_DIR}\cryptoeay32-0.9.8.dll"
336 File "${SRC_DIR}\ssleay32-0.9.8.dll"
337 File "${SRC_DIR}\zlib1.dll"
339 File "${SRC_DIR}\bacula.dll"
340 File "/oname=$INSTDIR\openssl.cnf" "${SRC_DIR}\openssl.cnf"
341 File "${SRC_DIR}\openssl.exe"
342 File "${SRC_DIR}\bsleep.exe"
343 File "${SRC_DIR}\bsmtp.exe"
344 File "${SRC_DIR}\expr64.exe"
345 File "${SRC_DIR}\snooze.exe"
347 CreateShortCut "$SMPROGRAMS\Bacula\Documentation\View Readme.lnk" "write.exe" '"$INSTDIR\Readme.txt"'
349 StrCpy $CommonFilesDone 1
353 Section "-Initialize"
355 WriteRegStr HKLM Software\Bacula InstallLocation "$INSTDIR"
357 Call GetSelectedComponents
359 WriteRegDWORD HKLM Software\Bacula Components $R2
361 ; remove start menu items
362 SetShellVarContext all
364 Delete /REBOOTOK "$SMPROGRAMS\Bacula\Configuration\*"
365 Delete /REBOOTOK "$SMPROGRAMS\Bacula\Documentation\*"
366 Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
367 RMDir "$SMPROGRAMS\Bacula\Configuration"
368 RMDir "$SMPROGRAMS\Bacula\Documentation"
369 RMDir "$SMPROGRAMS\Bacula"
370 CreateDirectory "$SMPROGRAMS\Bacula"
371 CreateDirectory "$SMPROGRAMS\Bacula\Configuration"
372 CreateDirectory "$SMPROGRAMS\Bacula\Documentation"
374 CreateDirectory "$INSTDIR"
375 CreateDirectory "$INSTDIR\working"
377 SetOutPath "$INSTDIR"
378 File "..\..\..\LICENSE"
379 Delete /REBOOTOK "$INSTDIR\License.txt"
381 ; Output a series of SED commands to configure the .conf file(s)
382 FileOpen $R1 $PLUGINSDIR\config.sed w
383 FileWrite $R1 "s;@VERSION@;${VERSION};g$\r$\n"
384 FileWrite $R1 "s;@DATE@;${__DATE__};g$\r$\n"
385 FileWrite $R1 "s;@DISTNAME@;Windows;g$\r$\n"
387 StrCpy $R2 ${BUILD_TOOLS}
393 FileWrite $R1 "s;@DISTVER@;$R2;g$\r$\n"
395 ${StrRep} $R2 "$INSTDIR\working" "\" "\\\\"
396 FileWrite $R1 's;@working_dir@;$R2;g$\r$\n'
397 ${StrRep} $R2 "$INSTDIR\working" "\" "\\"
398 FileWrite $R1 's;@working_dir_cmd@;$R2;g$\r$\n'
400 ${StrRep} $R2 "$INSTDIR" "\" "\\\\"
401 FileWrite $R1 's;@bin_dir@;$R2;g$\r$\n'
402 ${StrRep} $R2 "$INSTDIR" "\" "\\"
403 FileWrite $R1 's;@bin_dir_cmd@;$R2;g$\r$\n'
405 ${StrRep} $R2 "$INSTDIR\plugins" "\" "\\\\"
406 FileWrite $R1 's;@fdplugins_dir@;$R2;g$\r$\n'
408 ${StrRep} $R2 "$INSTDIR" "\" "/"
409 FileWrite $R1 "s;@BUILD_DIR@;$R2;g$\r$\n"
411 FileWrite $R1 "s;@client_address@;$LocalHostAddress;g$\r$\n"
413 ${If} "$ConfigClientName" != ""
414 FileWrite $R1 "s;@client_name@;$ConfigClientName;g$\r$\n"
416 ${If} "$ConfigClientPort" != ""
417 FileWrite $R1 "s;@client_port@;$ConfigClientPort;g$\r$\n"
419 ${If} "$ConfigClientMaxJobs" != ""
420 FileWrite $R1 "s;@client_maxjobs@;$ConfigClientMaxJobs;g$\r$\n"
422 ${If} "$ConfigClientPassword" != ""
423 FileWrite $R1 "s;@client_password@;$ConfigClientPassword;g$\r$\n"
425 ${If} "$ConfigDirectorName" != ""
426 FileWrite $R1 "s;@director_name@;$ConfigDirectorName;g$\r$\n"
428 ${If} "$ConfigDirectorPort" != ""
429 FileWrite $R1 "s;@director_port@;$ConfigDirectorPort;g$\r$\n"
431 ${If} "$ConfigDirectorPassword" != ""
432 FileWrite $R1 "s;@director_password@;$ConfigDirectorPassword;g$\r$\n"
434 ${If} "$ConfigDirectorAddress" != ""
435 FileWrite $R1 "s;@director_address@;$ConfigDirectorAddress;g$\r$\n"
437 ${If} "$ConfigMonitorName" != ""
438 FileWrite $R1 "s;@monitor_name@;$ConfigMonitorName;g$\r$\n"
440 ${If} "$ConfigMonitorPassword" != ""
441 FileWrite $R1 "s;@monitor_password@;$ConfigMonitorPassword;g$\r$\n"
446 ${If} ${FileExists} "$OldInstallDir\bacula-fd.exe"
447 nsExec::ExecToLog '"$OldInstallDir\bacula-fd.exe" /kill' ; Shutdown any bacula that could be running
449 nsExec::ExecToLog '"$OldInstallDir\bacula-fd.exe" /remove' ; Remove existing service
454 SectionGroup "Client" SecGroupClient
456 Section "File Service" SecFileDaemon
459 SetOutPath "$INSTDIR\plugins"
460 File "${SRC_DIR}\exchange-fd.dll"
462 SetOutPath "$INSTDIR"
464 File "${SRC_DIR}\bacula-fd.exe"
466 File "/oname=$PLUGINSDIR\bacula-fd.conf" "bacula-fd.conf.in"
469 StrCpy $1 bacula-fd.conf
470 Call ConfigEditAndCopy
473 StrCpy $1 "File Service"
474 StrCpy $2 $ConfigClientInstallService
475 StrCpy $3 $ConfigClientStartService
479 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Client Configuration.lnk" "write.exe" '"$INSTDIR\bacula-fd.conf"'
484 SectionGroup "Consoles" SecGroupConsoles
486 Section "Command Console" SecConsole
489 SetOutPath "$INSTDIR"
491 File "${SRC_DIR}\bconsole.exe"
492 Call InstallCommonFiles
494 File "/oname=$PLUGINSDIR\bconsole.conf" "bconsole.conf.in"
496 StrCpy $1 bconsole.conf
497 Call ConfigEditAndCopy
499 CreateShortCut "$SMPROGRAMS\Bacula\bconsole.lnk" "$INSTDIR\bconsole.exe" '-c "$INSTDIR\bconsole.conf"' "$INSTDIR\bconsole.exe" 0
500 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Command Console Configuration.lnk" "write.exe" '"$INSTDIR\bconsole.conf"'
504 Section "Bat Console" SecBatConsole
507 SetOutPath "$INSTDIR\bin32"
509 Call InstallCommonFiles
510 File "${SRC_DIR}\QtCore4.dll"
511 File "${SRC_DIR}\QtGui4.dll"
512 File "${SRC_DIR}\mingwm10.dll"
513 File "${SRC_DIR}\ssleay32.dll"
514 File "${SRC_DIR}\libeay32.dll"
515 File "${SRC_DIR}\bat.exe"
516 File "/oname=$INSTDIR\bin32\bacula.dll" "${SRC_DIR}\bacula32.dll"
517 File "/oname=$INSTDIR\bin32\pthreadGCE.dll" "${SRC_DIR}\pthreadGCE32.dll"
518 File "/oname=$INSTDIR\bin32\zlib1.dll" "${SRC_DIR}\zlib132.dll"
520 File "/oname=$PLUGINSDIR\bat.conf" "bat.conf.in"
521 StrCpy $0 "$INSTDIR\bin32"
523 Call ConfigEditAndCopy
525 SetOutPath "$INSTDIR\help"
526 File "${SRC_DIR}\help\*"
527 SetOutPath "$INSTDIR"
530 ; Create Start Menu entry
531 CreateShortCut "$SMPROGRAMS\Bacula\Bat.lnk" "$INSTDIR\bin32\bat.exe" '-c "$INSTDIR\bin32\bat.conf"' "$INSTDIR\bin32\bat.exe" 0
532 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Bat Configuration.lnk" "write.exe" '"$INSTDIR\bin32\bat.conf"'
533 SetOutPath "$INSTDIR"
543 ; nsExec::ExecToLog 'cmd.exe /C echo Y|cacls "$INSTDIR" /T /G SYSTEM:F Administrators:F'
546 ; Write the uninstall keys for Windows & create Start Menu entry
547 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayName" "Bacula"
548 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "InstallLocation" "$INSTDIR"
549 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayVersion" "${VERSION}"
550 ${StrTok} $R0 "${VERSION}" "." 0 0
551 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMajor" $R0
552 ${StrTok} $R0 "${VERSION}" "." 1 0
553 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMinor" $R0
554 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoModify" 1
555 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoRepair" 1
556 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLUpdateInfo" "http://www.bacula.org"
557 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLInfoAbout" "http://www.bacula.org"
558 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "HelpLink" "http://www.bacula.org?page=support"
559 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString" '"$INSTDIR\uninstall.exe"'
560 WriteUninstaller "$INSTDIR\Uninstall.exe"
561 CreateShortCut "$SMPROGRAMS\Bacula\Uninstall Bacula.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
565 ; Extra Page descriptions
567 LangString DESC_SecFileDaemon ${LANG_ENGLISH} "Install Bacula File Daemon on this system."
568 LangString DESC_SecConsole ${LANG_ENGLISH} "Install command console program on this system."
569 LangString DESC_SecBatConsole ${LANG_ENGLISH} "Install Bat graphical console program on this system."
571 LangString TITLE_ConfigPage1 ${LANG_ENGLISH} "Configuration"
572 LangString SUBTITLE_ConfigPage1 ${LANG_ENGLISH} "Set installation configuration."
574 LangString TITLE_ConfigPage2 ${LANG_ENGLISH} "Configuration (continued)"
575 LangString SUBTITLE_ConfigPage2 ${LANG_ENGLISH} "Set installation configuration."
577 LangString TITLE_InstallType ${LANG_ENGLISH} "Installation Type"
578 LangString SUBTITLE_InstallType ${LANG_ENGLISH} "Choose installation type."
580 LangString TITLE_WriteTemplates ${LANG_ENGLISH} "Create Templates"
581 LangString SUBTITLE_WriteTemplates ${LANG_ENGLISH} "Create a resource template for inclusion in the Director's configuration file."
583 !InsertMacro MUI_FUNCTION_DESCRIPTION_BEGIN
584 !InsertMacro MUI_DESCRIPTION_TEXT ${SecFileDaemon} $(DESC_SecFileDaemon)
585 !InsertMacro MUI_DESCRIPTION_TEXT ${SecConsole} $(DESC_SecConsole)
586 !InsertMacro MUI_DESCRIPTION_TEXT ${SecBatConsole} $(DESC_SecBatConsole)
587 !InsertMacro MUI_FUNCTION_DESCRIPTION_END
591 UninstallText "This will uninstall Bacula. Click Uninstall to continue."
594 ; Shutdown any baculum that could be running
595 nsExec::ExecToLog '"$INSTDIR\bacula-fd.exe" /kill'
598 ; ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-fd"
599 ; Remove bacula service
600 nsExec::ExecToLog '"$INSTDIR\bacula-fd.exe" /remove'
601 nsExec::ExecToLog '"$INSTDIR\plugins\exchange-fd.dll" /remove'
603 ; remove registry keys
604 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
605 DeleteRegKey HKLM "Software\Bacula"
607 ; remove start menu items
608 SetShellVarContext all
609 Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
610 RMDir "$SMPROGRAMS\Bacula"
612 ; remove files and uninstaller (preserving config for now)
613 Delete /REBOOTOK "$INSTDIR\doc\*"
614 Delete /REBOOTOK "$INSTDIR\*"
615 Delete /REBOOTOK "$INSTDIR\help\*"
617 ; Check for existing installation
618 MessageBox MB_YESNO|MB_ICONQUESTION \
619 "Would you like to delete the current configuration files and the working state file?" IDNO NoDel
620 Delete /REBOOTOK "$INSTDIR\*"
621 Delete /REBOOTOK "$INSTDIR\bin32\*"
622 Delete /REBOOTOK "$INSTDIR\working\*"
623 Delete /REBOOTOK "$INSTDIR\plugins\*"
624 Delete /REBOOTOK "$PLUGINSDIR\bacula-*.conf"
625 Delete /REBOOTOK "$PLUGINSDIR\*console.conf"
626 Delete /REBOOTOK "$PLUGINSDIR\*conf.in"
627 Delete /REBOOTOK "$PLUGINSDIR\openssl.exe"
628 Delete /REBOOTOK "$PLUGINSDIR\libeay32.dll"
629 Delete /REBOOTOK "$PLUGINSDIR\ssleay32.dll"
630 Delete /REBOOTOK "$PLUGINSDIR\sed.exe"
631 Delete /REBOOTOK "$PLUGINSDIR\pw.txt"
632 Delete /REBOOTOK "$PLUGINSDIR\*.sed"
633 Delete /REBOOTOK "$PLUGINSDIR\*.cmd"
634 Delete /REBOOTOK "$PLUGINSDIR\*.sql"
635 RMDir "$INSTDIR\plugins"
636 RMDir "$INSTDIR\working"
637 RMDir "$INSTDIR\bin32"
641 ; remove directories used
643 RMDir "$INSTDIR\help"
648 ; $0 - Service Name (ie Bacula-FD)
649 ; $1 - Service Description (ie Bacula File Daemon)
650 ; $2 - Install as Service
651 ; $3 - Start Service now
653 Function InstallDaemon
654 Call InstallCommonFiles
656 WriteRegDWORD HKLM "Software\Bacula" "Service_$0" $2
659 nsExec::ExecToLog '"$INSTDIR\$0.exe" /kill'
661 nsExec::ExecToLog '"$INSTDIR\$0.exe" /remove'
662 nsExec::ExecToLog '"$INSTDIR\$0.exe" /install -c "$INSTDIR\$0.conf"'
673 nsExec::ExecToLog 'net start $0'
675 Exec '"$INSTDIR\$0.exe" /service -c "$INSTDIR\$0.conf"'
679 CreateShortCut "$SMPROGRAMS\Bacula\Start $1.lnk" "$INSTDIR\$0.exe" '-c "$INSTDIR\$0.conf"' "$INSTDIR\$0.exe" 0
683 Function GetComputerName
688 System::Call "kernel32::GetComputerNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2"
690 ${StrCase} $R0 $R0 "L"
697 !define ComputerNameDnsFullyQualified 3
705 System::Call "kernel32::GetComputerNameExA(i ${ComputerNameDnsFullyQualified}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
708 DetailPrint "GetComputerNameExA failed - LastError = $R2"
724 !define NameUserPrincipal 8
732 System::Call "secur32::GetUserNameExA(i ${NameUserPrincipal}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
735 DetailPrint "GetUserNameExA failed - LastError = $R2"
746 System::Call "advapi32::GetUserNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
749 DetailPrint "GetUserNameA failed - LastError = $R2"
761 Function ConfigEditAndCopy
764 ${If} ${FileExists} "$0\$1"
770 nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\$1"'
771 CopyFiles "$PLUGINSDIR\$1" "$0\$1$R1"
776 Function GetSelectedComponents
779 ${If} ${SectionIsSelected} ${SecFileDaemon}
780 IntOp $R0 $R0 | ${ComponentFile}
782 ${If} ${SectionIsSelected} ${SecConsole}
783 IntOp $R0 $R0 | ${ComponentTextConsole}
785 ${If} ${SectionIsSelected} ${SecBatConsole}
786 IntOp $R0 $R0 | ${ComponentBatConsole}
791 Function PageComponentsShow
793 Call SelectPreviousComponents
794 Call UpdateComponentUI
797 Function PageDirectoryPre
798 ${If} $AutomaticInstall = 1
799 ${OrIf} $InstallType = ${UpgradeInstall}
804 Function LeaveInstallPage
805 Push "$INSTDIR\install.log"
809 Function EnterWriteTemplates
813 Call GetSelectedComponents
816 IntOp $R0 $R0 & ${ComponentDirector}
817 IntOp $R1 $NewComponents & ${ComponentsFileAndStorage}
826 IntOp $R0 $NewComponents & ${ComponentFile}
828 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 0
829 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags DISABLED
830 DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State
831 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST|DISABLED
833 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 1
834 DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags
835 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State "C:\$ConfigClientName.conf"
839 !InsertMacro MUI_HEADER_TEXT "$(TITLE_WriteTemplates)" "$(SUBTITLE_WriteTemplates)"
840 !InsertMacro MUI_INSTALLOPTIONS_DISPLAY "WriteTemplates.ini"
842 !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 2" State
844 File "/oname=$PLUGINSDIR\client.conf.in" "client.conf.in"
846 nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\client.conf.in"'
847 !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 3" State
849 CopyFiles "$PLUGINSDIR\client.conf.in" "$R0"
858 Function SelectPreviousComponents
859 ${If} $InstallType <> ${NewInstall}
860 IntOp $R1 $PreviousComponents & ${ComponentFile}
862 !InsertMacro SelectSection ${SecFileDaemon}
863 !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_RO}
865 !InsertMacro UnselectSection ${SecFileDaemon}
866 !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_RO}
868 IntOp $R1 $PreviousComponents & ${ComponentTextConsole}
870 !InsertMacro SelectSection ${SecConsole}
871 !InsertMacro SetSectionFlag ${SecConsole} ${SF_RO}
873 !InsertMacro UnselectSection ${SecConsole}
874 !InsertMacro ClearSectionFlag ${SecConsole} ${SF_RO}
876 IntOp $R1 $PreviousComponents & ${ComponentBatConsole}
878 !InsertMacro SelectSection ${SecBatConsole}
879 !InsertMacro SetSectionFlag ${SecBatConsole} ${SF_RO}
881 !InsertMacro UnselectSection ${SecBatConsole}
882 !InsertMacro ClearSectionFlag ${SecBatConsole} ${SF_RO}
887 Function UpdateComponentUI
891 Call GetSelectedComponents
894 IntOp $R1 $R0 ^ $PreviousComponents
895 IntOp $NewComponents $R0 & $R1
897 ${If} $InstallType <> ${NewInstall}
898 IntOp $R1 $NewComponents & ${ComponentFile}
900 !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_BOLD}
902 !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_BOLD}
904 IntOp $R1 $NewComponents & ${ComponentTextConsole}
906 !InsertMacro SetSectionFlag ${SecConsole} ${SF_BOLD}
908 !InsertMacro ClearSectionFlag ${SecConsole} ${SF_BOLD}
910 IntOp $R1 $NewComponents & ${ComponentBatConsole}
912 !InsertMacro SetSectionFlag ${SecBatConsole} ${SF_BOLD}
914 !InsertMacro ClearSectionFlag ${SecBatConsole} ${SF_BOLD}
918 GetDlgItem $R0 $HWNDPARENT 1
920 IntOp $R1 $NewComponents & ${ComponentsRequiringUserConfig}
922 SendMessage $R0 ${WM_SETTEXT} 0 "STR:Install"
924 SendMessage $R0 ${WM_SETTEXT} 0 "STR:&Next >"
931 !include "InstallType.nsh"
932 !include "ConfigPage1.nsh"
933 !include "ConfigPage2.nsh"
934 !include "DumpLog.nsh"