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}\libgcc_s_dw2-1.dll"
513 File "${SRC_DIR}\mingwm10.dll"
514 File "${SRC_DIR}\ssleay32.dll"
515 File "${SRC_DIR}\libeay32.dll"
516 File "${SRC_DIR}\bat.exe"
517 File "/oname=$INSTDIR\bin32\bacula.dll" "${SRC_DIR}\bacula32.dll"
518 File "/oname=$INSTDIR\bin32\pthreadGCE.dll" "${SRC_DIR}\pthreadGCE32.dll"
519 File "/oname=$INSTDIR\bin32\zlib1.dll" "${SRC_DIR}\zlib132.dll"
521 File "/oname=$PLUGINSDIR\bat.conf" "bat.conf.in"
522 StrCpy $0 "$INSTDIR\bin32"
524 Call ConfigEditAndCopy
526 SetOutPath "$INSTDIR\help"
527 File "${SRC_DIR}\help\*"
528 SetOutPath "$INSTDIR"
531 ; Create Start Menu entry
532 CreateShortCut "$SMPROGRAMS\Bacula\Bat.lnk" "$INSTDIR\bin32\bat.exe" '-c "$INSTDIR\bin32\bat.conf"' "$INSTDIR\bin32\bat.exe" 0
533 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Bat Configuration.lnk" "write.exe" '"$INSTDIR\bin32\bat.conf"'
534 SetOutPath "$INSTDIR"
544 ; nsExec::ExecToLog 'cmd.exe /C echo Y|cacls "$INSTDIR" /T /G SYSTEM:F Administrators:F'
547 ; Write the uninstall keys for Windows & create Start Menu entry
548 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayName" "Bacula"
549 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "InstallLocation" "$INSTDIR"
550 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayVersion" "${VERSION}"
551 ${StrTok} $R0 "${VERSION}" "." 0 0
552 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMajor" $R0
553 ${StrTok} $R0 "${VERSION}" "." 1 0
554 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMinor" $R0
555 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoModify" 1
556 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoRepair" 1
557 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLUpdateInfo" "http://www.bacula.org"
558 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLInfoAbout" "http://www.bacula.org"
559 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "HelpLink" "http://www.bacula.org?page=support"
560 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString" '"$INSTDIR\uninstall.exe"'
561 WriteUninstaller "$INSTDIR\Uninstall.exe"
562 CreateShortCut "$SMPROGRAMS\Bacula\Uninstall Bacula.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
566 ; Extra Page descriptions
568 LangString DESC_SecFileDaemon ${LANG_ENGLISH} "Install Bacula File Daemon on this system."
569 LangString DESC_SecConsole ${LANG_ENGLISH} "Install command console program on this system."
570 LangString DESC_SecBatConsole ${LANG_ENGLISH} "Install Bat graphical console program on this system."
572 LangString TITLE_ConfigPage1 ${LANG_ENGLISH} "Configuration"
573 LangString SUBTITLE_ConfigPage1 ${LANG_ENGLISH} "Set installation configuration."
575 LangString TITLE_ConfigPage2 ${LANG_ENGLISH} "Configuration (continued)"
576 LangString SUBTITLE_ConfigPage2 ${LANG_ENGLISH} "Set installation configuration."
578 LangString TITLE_InstallType ${LANG_ENGLISH} "Installation Type"
579 LangString SUBTITLE_InstallType ${LANG_ENGLISH} "Choose installation type."
581 LangString TITLE_WriteTemplates ${LANG_ENGLISH} "Create Templates"
582 LangString SUBTITLE_WriteTemplates ${LANG_ENGLISH} "Create a resource template for inclusion in the Director's configuration file."
584 !InsertMacro MUI_FUNCTION_DESCRIPTION_BEGIN
585 !InsertMacro MUI_DESCRIPTION_TEXT ${SecFileDaemon} $(DESC_SecFileDaemon)
586 !InsertMacro MUI_DESCRIPTION_TEXT ${SecConsole} $(DESC_SecConsole)
587 !InsertMacro MUI_DESCRIPTION_TEXT ${SecBatConsole} $(DESC_SecBatConsole)
588 !InsertMacro MUI_FUNCTION_DESCRIPTION_END
592 UninstallText "This will uninstall Bacula. Click Uninstall to continue."
595 ; Shutdown any baculum that could be running
596 nsExec::ExecToLog '"$INSTDIR\bacula-fd.exe" /kill'
599 ; ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-fd"
600 ; Remove bacula service
601 nsExec::ExecToLog '"$INSTDIR\bacula-fd.exe" /remove'
602 nsExec::ExecToLog '"$INSTDIR\plugins\exchange-fd.dll" /remove'
604 ; remove registry keys
605 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
606 DeleteRegKey HKLM "Software\Bacula"
608 ; remove start menu items
609 SetShellVarContext all
610 Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
611 RMDir "$SMPROGRAMS\Bacula"
613 ; remove files and uninstaller (preserving config for now)
614 Delete /REBOOTOK "$INSTDIR\doc\*"
615 Delete /REBOOTOK "$INSTDIR\*"
616 Delete /REBOOTOK "$INSTDIR\help\*"
618 ; Check for existing installation
619 MessageBox MB_YESNO|MB_ICONQUESTION \
620 "Would you like to delete the current configuration files and the working state file?" IDNO NoDel
621 Delete /REBOOTOK "$INSTDIR\*"
622 Delete /REBOOTOK "$INSTDIR\bin32\*"
623 Delete /REBOOTOK "$INSTDIR\working\*"
624 Delete /REBOOTOK "$INSTDIR\plugins\*"
625 Delete /REBOOTOK "$PLUGINSDIR\bacula-*.conf"
626 Delete /REBOOTOK "$PLUGINSDIR\*console.conf"
627 Delete /REBOOTOK "$PLUGINSDIR\*conf.in"
628 Delete /REBOOTOK "$PLUGINSDIR\openssl.exe"
629 Delete /REBOOTOK "$PLUGINSDIR\libeay32.dll"
630 Delete /REBOOTOK "$PLUGINSDIR\ssleay32.dll"
631 Delete /REBOOTOK "$PLUGINSDIR\sed.exe"
632 Delete /REBOOTOK "$PLUGINSDIR\pw.txt"
633 Delete /REBOOTOK "$PLUGINSDIR\*.sed"
634 Delete /REBOOTOK "$PLUGINSDIR\*.cmd"
635 Delete /REBOOTOK "$PLUGINSDIR\*.sql"
636 RMDir "$INSTDIR\plugins"
637 RMDir "$INSTDIR\working"
638 RMDir "$INSTDIR\bin32"
642 ; remove directories used
644 RMDir "$INSTDIR\help"
649 ; $0 - Service Name (ie Bacula-FD)
650 ; $1 - Service Description (ie Bacula File Daemon)
651 ; $2 - Install as Service
652 ; $3 - Start Service now
654 Function InstallDaemon
655 Call InstallCommonFiles
657 WriteRegDWORD HKLM "Software\Bacula" "Service_$0" $2
660 nsExec::ExecToLog '"$INSTDIR\$0.exe" /kill'
662 nsExec::ExecToLog '"$INSTDIR\$0.exe" /remove'
663 nsExec::ExecToLog '"$INSTDIR\$0.exe" /install -c "$INSTDIR\$0.conf"'
674 nsExec::ExecToLog 'net start $0'
676 Exec '"$INSTDIR\$0.exe" /service -c "$INSTDIR\$0.conf"'
680 CreateShortCut "$SMPROGRAMS\Bacula\Start $1.lnk" "$INSTDIR\$0.exe" '-c "$INSTDIR\$0.conf"' "$INSTDIR\$0.exe" 0
684 Function GetComputerName
689 System::Call "kernel32::GetComputerNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2"
691 ${StrCase} $R0 $R0 "L"
698 !define ComputerNameDnsFullyQualified 3
706 System::Call "kernel32::GetComputerNameExA(i ${ComputerNameDnsFullyQualified}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
709 DetailPrint "GetComputerNameExA failed - LastError = $R2"
725 !define NameUserPrincipal 8
733 System::Call "secur32::GetUserNameExA(i ${NameUserPrincipal}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
736 DetailPrint "GetUserNameExA failed - LastError = $R2"
747 System::Call "advapi32::GetUserNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
750 DetailPrint "GetUserNameA failed - LastError = $R2"
762 Function ConfigEditAndCopy
765 ${If} ${FileExists} "$0\$1"
771 nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\$1"'
772 CopyFiles "$PLUGINSDIR\$1" "$0\$1$R1"
777 Function GetSelectedComponents
780 ${If} ${SectionIsSelected} ${SecFileDaemon}
781 IntOp $R0 $R0 | ${ComponentFile}
783 ${If} ${SectionIsSelected} ${SecConsole}
784 IntOp $R0 $R0 | ${ComponentTextConsole}
786 ${If} ${SectionIsSelected} ${SecBatConsole}
787 IntOp $R0 $R0 | ${ComponentBatConsole}
792 Function PageComponentsShow
794 Call SelectPreviousComponents
795 Call UpdateComponentUI
798 Function PageDirectoryPre
799 ${If} $AutomaticInstall = 1
800 ${OrIf} $InstallType = ${UpgradeInstall}
805 Function LeaveInstallPage
806 Push "$INSTDIR\install.log"
810 Function EnterWriteTemplates
814 Call GetSelectedComponents
817 IntOp $R0 $R0 & ${ComponentDirector}
818 IntOp $R1 $NewComponents & ${ComponentsFileAndStorage}
827 IntOp $R0 $NewComponents & ${ComponentFile}
829 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 0
830 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags DISABLED
831 DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State
832 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST|DISABLED
834 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 1
835 DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags
836 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State "C:\$ConfigClientName.conf"
840 !InsertMacro MUI_HEADER_TEXT "$(TITLE_WriteTemplates)" "$(SUBTITLE_WriteTemplates)"
841 !InsertMacro MUI_INSTALLOPTIONS_DISPLAY "WriteTemplates.ini"
843 !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 2" State
845 File "/oname=$PLUGINSDIR\client.conf.in" "client.conf.in"
847 nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\client.conf.in"'
848 !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 3" State
850 CopyFiles "$PLUGINSDIR\client.conf.in" "$R0"
859 Function SelectPreviousComponents
860 ${If} $InstallType <> ${NewInstall}
861 IntOp $R1 $PreviousComponents & ${ComponentFile}
863 !InsertMacro SelectSection ${SecFileDaemon}
864 !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_RO}
866 !InsertMacro UnselectSection ${SecFileDaemon}
867 !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_RO}
869 IntOp $R1 $PreviousComponents & ${ComponentTextConsole}
871 !InsertMacro SelectSection ${SecConsole}
872 !InsertMacro SetSectionFlag ${SecConsole} ${SF_RO}
874 !InsertMacro UnselectSection ${SecConsole}
875 !InsertMacro ClearSectionFlag ${SecConsole} ${SF_RO}
877 IntOp $R1 $PreviousComponents & ${ComponentBatConsole}
879 !InsertMacro SelectSection ${SecBatConsole}
880 !InsertMacro SetSectionFlag ${SecBatConsole} ${SF_RO}
882 !InsertMacro UnselectSection ${SecBatConsole}
883 !InsertMacro ClearSectionFlag ${SecBatConsole} ${SF_RO}
888 Function UpdateComponentUI
892 Call GetSelectedComponents
895 IntOp $R1 $R0 ^ $PreviousComponents
896 IntOp $NewComponents $R0 & $R1
898 ${If} $InstallType <> ${NewInstall}
899 IntOp $R1 $NewComponents & ${ComponentFile}
901 !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_BOLD}
903 !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_BOLD}
905 IntOp $R1 $NewComponents & ${ComponentTextConsole}
907 !InsertMacro SetSectionFlag ${SecConsole} ${SF_BOLD}
909 !InsertMacro ClearSectionFlag ${SecConsole} ${SF_BOLD}
911 IntOp $R1 $NewComponents & ${ComponentBatConsole}
913 !InsertMacro SetSectionFlag ${SecBatConsole} ${SF_BOLD}
915 !InsertMacro ClearSectionFlag ${SecBatConsole} ${SF_BOLD}
919 GetDlgItem $R0 $HWNDPARENT 1
921 IntOp $R1 $NewComponents & ${ComponentsRequiringUserConfig}
923 SendMessage $R0 ${WM_SETTEXT} 0 "STR:Install"
925 SendMessage $R0 ${WM_SETTEXT} 0 "STR:&Next >"
932 !include "InstallType.nsh"
933 !include "ConfigPage1.nsh"
934 !include "ConfigPage2.nsh"
935 !include "DumpLog.nsh"