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
188 ; 4 = Graphical Console
189 ; 5 = Documentation (PDF)
190 ; 6 = Documentation (HTML)
192 !define ComponentFile 1
193 !define ComponentStorage 2
194 !define ComponentDirector 4
195 !define ComponentTextConsole 8
196 !define ComponentGUIConsole 16
197 !define ComponentPDFDocs 32
198 !define ComponentHTMLDocs 64
200 !define ComponentsRequiringUserConfig 31
201 !define ComponentsFileAndStorage 3
202 !define ComponentsFileAndStorageAndDirector 7
203 !define ComponentsDirectorAndTextGuiConsoles 28
204 !define ComponentsTextAndGuiConsoles 24
213 ; Process Command Line Options
217 StrCpy $CommonFilesDone 0
219 StrCpy $AutomaticInstall 0
220 StrCpy $InstallType ${NewInstall}
221 StrCpy $OldInstallDir ""
222 StrCpy $PreviousComponents 0
223 StrCpy $NewComponents 0
225 StrCpy $MySQLVersion ""
226 StrCpy $PostgreSQLPath ""
227 StrCpy $PostgreSQLVersion ""
228 StrCpy $LocalDirectorPassword ""
233 ${GetOptions} $R0 "/noservice" $R1
238 ${GetOptions} $R0 "/nostart" $R1
245 ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
254 Pop $LocalHostAddress
258 ; Configuration Defaults
260 StrCpy $ConfigClientName "$HostName-fd"
261 StrCpy $ConfigClientPort 9102
262 StrCpy $ConfigClientMaxJobs 5
263 ;StrCpy $ConfigClientPassword
264 StrCpy $ConfigClientInstallService "$OptService"
265 StrCpy $ConfigClientStartService "$OptStart"
268 StrCpy $ConfigMonitorName "$HostName-mon"
269 ;StrCpy $ConfigMonitorPassword
271 ; PLUGINSDIR refers to temporary helper programs and not Bacula plugins!
273 File "/oname=$PLUGINSDIR\openssl.exe" "${SRC_DIR}\openssl.exe"
274 File "/oname=$PLUGINSDIR\ssleay32-0.9.8.dll" "${SRC_DIR}\ssleay32-0.9.8.dll"
275 File "/oname=$PLUGINSDIR\cryptoeay32-0.9.8.dll" "${SRC_DIR}\cryptoeay32-0.9.8.dll"
276 ; File "/oname=$PLUGINSDIR\libeay32.dll" "${SRC_DIR}\libeay32.dll"
277 ; File "/oname=$PLUGINSDIR\ssleay32.dll" "${SRC_DIR}\ssleay32.dll"
278 File "/oname=$PLUGINSDIR\sed.exe" "${SRC_DIR}\sed.exe"
280 !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "InstallType.ini"
281 !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "WriteTemplates.ini"
283 SetPluginUnload alwaysoff
285 ; Set client password
286 nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
289 FileOpen $R1 "$PLUGINSDIR\pw.txt" r
292 ${StrTrimNewLines} $ConfigClientPassword $R0
296 SetPluginUnload manual
298 ; Set monitor password
299 nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
302 FileOpen $R1 "$PLUGINSDIR\pw.txt" r
305 ${StrTrimNewLines} $ConfigMonitorPassword $R0
313 Function .onSelChange
314 Call UpdateComponentUI
317 Function InstallCommonFiles
318 ${If} $CommonFilesDone = 0
319 SetOutPath "$INSTDIR"
322 SetOutPath "$INSTDIR"
323 !if "${BUILD_TOOLS}" == "MinGW"
324 File "${SRC_DIR}\mingwm10.dll"
325 File "${SRC_DIR}\pthreadGCE.dll"
326 File "${SRC_DIR}\zlib1.dll"
327 File "${SRC_DIR}\ssleay32.dll"
328 File "${SRC_DIR}\libeay32.dll"
330 !if "${BUILD_TOOLS}" == "MinGW64"
331 File "${SRC_DIR}\pthreadGCE.dll"
332 File "${SRC_DIR}\cryptoeay32-0.9.8.dll"
333 File "${SRC_DIR}\ssleay32-0.9.8.dll"
334 File "${SRC_DIR}\zlib1.dll"
336 File "${SRC_DIR}\bacula.dll"
338 File "/oname=$INSTDIR\openssl.cnf" "${SRC_DIR}\openssl.cnf"
339 File "${SRC_DIR}\openssl.exe"
340 File "${SRC_DIR}\bsleep.exe"
341 File "${SRC_DIR}\bsmtp.exe"
342 File "${SRC_DIR}\expr64.exe"
343 File "${SRC_DIR}\snooze.exe"
345 CreateShortCut "$SMPROGRAMS\Bacula\Documentation\View Readme.lnk" "write.exe" '"$INSTDIR\Readme.txt"'
347 StrCpy $CommonFilesDone 1
351 Section "-Initialize"
353 WriteRegStr HKLM Software\Bacula InstallLocation "$INSTDIR"
355 Call GetSelectedComponents
357 WriteRegDWORD HKLM Software\Bacula Components $R2
359 ; remove start menu items
360 SetShellVarContext all
362 Delete /REBOOTOK "$SMPROGRAMS\Bacula\Configuration\*"
363 Delete /REBOOTOK "$SMPROGRAMS\Bacula\Documentation\*"
364 Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
365 RMDir "$SMPROGRAMS\Bacula\Configuration"
366 RMDir "$SMPROGRAMS\Bacula\Documentation"
367 RMDir "$SMPROGRAMS\Bacula"
368 CreateDirectory "$SMPROGRAMS\Bacula"
369 CreateDirectory "$SMPROGRAMS\Bacula\Configuration"
370 CreateDirectory "$SMPROGRAMS\Bacula\Documentation"
372 CreateDirectory "$INSTDIR"
373 CreateDirectory "$INSTDIR\working"
375 SetOutPath "$INSTDIR"
376 File "..\..\..\LICENSE"
377 Delete /REBOOTOK "$INSTDIR\License.txt"
379 ; Output a series of SED commands to configure the .conf file(s)
380 FileOpen $R1 $PLUGINSDIR\config.sed w
381 FileWrite $R1 "s;@VERSION@;${VERSION};g$\r$\n"
382 FileWrite $R1 "s;@DATE@;${__DATE__};g$\r$\n"
383 FileWrite $R1 "s;@DISTNAME@;Windows;g$\r$\n"
385 !If "$BUILD_TOOLS" == "MinGW"
395 FileWrite $R1 "s;@DISTVER@;$R2;g$\r$\n"
397 ${StrRep} $R2 "$INSTDIR\working" "\" "\\\\"
398 FileWrite $R1 's;@working_dir@;$R2;g$\r$\n'
399 ${StrRep} $R2 "$INSTDIR\working" "\" "\\"
400 FileWrite $R1 's;@working_dir_cmd@;$R2;g$\r$\n'
402 ${StrRep} $R2 "$INSTDIR" "\" "\\\\"
403 FileWrite $R1 's;@bin_dir@;$R2;g$\r$\n'
404 ${StrRep} $R2 "$INSTDIR" "\" "\\"
405 FileWrite $R1 's;@bin_dir_cmd@;$R2;g$\r$\n'
407 ${StrRep} $R2 "$INSTDIR\plugins" "\" "\\\\"
408 FileWrite $R1 's;@fdplugins_dir@;$R2;g$\r$\n'
410 ${StrRep} $R2 "$INSTDIR" "\" "/"
411 FileWrite $R1 "s;@BUILD_DIR@;$R2;g$\r$\n"
413 FileWrite $R1 "s;@client_address@;$LocalHostAddress;g$\r$\n"
415 ${If} "$ConfigClientName" != ""
416 FileWrite $R1 "s;@client_name@;$ConfigClientName;g$\r$\n"
418 ${If} "$ConfigClientPort" != ""
419 FileWrite $R1 "s;@client_port@;$ConfigClientPort;g$\r$\n"
421 ${If} "$ConfigClientMaxJobs" != ""
422 FileWrite $R1 "s;@client_maxjobs@;$ConfigClientMaxJobs;g$\r$\n"
424 ${If} "$ConfigClientPassword" != ""
425 FileWrite $R1 "s;@client_password@;$ConfigClientPassword;g$\r$\n"
427 ${If} "$ConfigDirectorName" != ""
428 FileWrite $R1 "s;@director_name@;$ConfigDirectorName;g$\r$\n"
430 ${If} "$ConfigMonitorName" != ""
431 FileWrite $R1 "s;@monitor_name@;$ConfigMonitorName;g$\r$\n"
433 ${If} "$ConfigMonitorPassword" != ""
434 FileWrite $R1 "s;@monitor_password@;$ConfigMonitorPassword;g$\r$\n"
440 ${If} ${FileExists} "$OldInstallDir\bin\bacula-fd.exe"
441 nsExec::ExecToLog '"$OldInstallDir\bin\bacula-fd.exe" /kill' ; Shutdown any bacula that could be running
443 nsExec::ExecToLog '"$OldInstallDir\bin\bacula-fd.exe" /remove' ; Remove existing service
448 SectionGroup "Client" SecGroupClient
450 Section "File Service" SecFileDaemon
453 SetOutPath "$INSTDIR\plugins"
454 File "${SRC_DIR}\exchange-fd.dll"
456 SetOutPath "$INSTDIR"
458 File "${SRC_DIR}\bacula-fd.exe"
460 File "/oname=$PLUGINSDIR\bacula-fd.conf" "bacula-fd.conf.in"
463 StrCpy $1 bacula-fd.conf
464 Call ConfigEditAndCopy
467 StrCpy $1 "File Service"
468 StrCpy $2 $ConfigClientInstallService
469 StrCpy $3 $ConfigClientStartService
473 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Client Configuration.lnk" "write.exe" '"$INSTDIR\bacula-fd.conf"'
478 SectionGroup "Consoles" SecGroupConsoles
480 Section "Command Console" SecConsole
483 SetOutPath "$INSTDIR"
485 File "${SRC_DIR}\bconsole.exe"
486 Call InstallCommonFiles
488 CreateShortCut "$SMPROGRAMS\Bacula\bconsole.lnk" "$INSTDIR\bconsole.exe" '-c "$INSTDIR\bconsole.conf"' "$INSTDIR\bconsole.exe" 0
489 CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Command Console Configuration.lnk" "write.exe" '"$INSTDIR\bconsole.conf"'
493 ; Essentially deleted because wxconsole is not implemented on Win64
494 Section "Graphical Console" SecWxConsole
497 SetOutPath "$INSTDIR"
508 nsExec::ExecToLog 'cmd.exe /C echo Y|cacls "$INSTDIR" /T /G SYSTEM:F Administrators:F'
509 nsExec::ExecToLog 'cmd.exe /C echo Y|cacls "$INSTDIR" /T /G SYSTEM:F Administrators:F'
512 ; Write the uninstall keys for Windows & create Start Menu entry
513 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayName" "Bacula"
514 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "InstallLocation" "$INSTDIR"
515 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayVersion" "${VERSION}"
516 ${StrTok} $R0 "${VERSION}" "." 0 0
517 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMajor" $R0
518 ${StrTok} $R0 "${VERSION}" "." 1 0
519 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMinor" $R0
520 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoModify" 1
521 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoRepair" 1
522 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLUpdateInfo" "http://www.bacula.org"
523 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLInfoAbout" "http://www.bacula.org"
524 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "HelpLink" "http://www.bacula.org?page=support"
525 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString" '"$INSTDIR\uninstall.exe"'
526 WriteUninstaller "$INSTDIR\Uninstall.exe"
527 CreateShortCut "$SMPROGRAMS\Bacula\Uninstall Bacula.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
531 ; Extra Page descriptions
533 LangString DESC_SecFileDaemon ${LANG_ENGLISH} "Install Bacula File Daemon on this system."
534 LangString DESC_SecConsole ${LANG_ENGLISH} "Install command console program on this system."
536 LangString TITLE_ConfigPage1 ${LANG_ENGLISH} "Configuration"
537 LangString SUBTITLE_ConfigPage1 ${LANG_ENGLISH} "Set installation configuration."
539 LangString TITLE_ConfigPage2 ${LANG_ENGLISH} "Configuration (continued)"
540 LangString SUBTITLE_ConfigPage2 ${LANG_ENGLISH} "Set installation configuration."
542 LangString TITLE_InstallType ${LANG_ENGLISH} "Installation Type"
543 LangString SUBTITLE_InstallType ${LANG_ENGLISH} "Choose installation type."
545 LangString TITLE_WriteTemplates ${LANG_ENGLISH} "Create Templates"
546 LangString SUBTITLE_WriteTemplates ${LANG_ENGLISH} "Create a resource template for inclusion in the Director's configuration file."
548 !InsertMacro MUI_FUNCTION_DESCRIPTION_BEGIN
549 !InsertMacro MUI_DESCRIPTION_TEXT ${SecFileDaemon} $(DESC_SecFileDaemon)
550 !InsertMacro MUI_DESCRIPTION_TEXT ${SecConsole} $(DESC_SecConsole)
551 !InsertMacro MUI_FUNCTION_DESCRIPTION_END
555 UninstallText "This will uninstall Bacula. Click Uninstall to continue."
558 ; Shutdown any baculum that could be running
559 nsExec::ExecToLog '"$INSTDIR\bacula-fd.exe" /kill'
562 ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-fd"
564 ; Remove bacula service
565 nsExec::ExecToLog '"$INSTDIR\bacula-fd.exe" /remove'
566 nsExec::ExecToLog '"$INSTDIR\plugins\exchange-fd.dll" /remove'
569 ; remove registry keys
570 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
571 DeleteRegKey HKLM "Software\Bacula"
573 ; remove start menu items
574 SetShellVarContext all
575 Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
576 RMDir "$SMPROGRAMS\Bacula"
578 ; remove files and uninstaller (preserving config for now)
579 Delete /REBOOTOK "$INSTDIR\doc\*"
580 Delete /REBOOTOK "$INSTDIR\*"
582 ; Check for existing installation
583 MessageBox MB_YESNO|MB_ICONQUESTION \
584 "Would you like to delete the current configuration files and the working state file?" IDNO NoDel
585 Delete /REBOOTOK "$INSTDIR\*"
586 Delete /REBOOTOK "$INSTDIR\working\*"
587 Delete /REBOOTOK "$INSTDIR\plugins\*"
588 Delete /REBOOTOK "$PLUGINSDIR\bacula-*.conf"
589 Delete /REBOOTOK "$PLUGINSDIR\*console.conf"
590 Delete /REBOOTOK "$PLUGINSDIR\*conf.in"
591 Delete /REBOOTOK "$PLUGINSDIR\openssl.exe"
592 Delete /REBOOTOK "$PLUGINSDIR\libeay32.dll"
593 Delete /REBOOTOK "$PLUGINSDIR\ssleay32.dll"
594 Delete /REBOOTOK "$PLUGINSDIR\sed.exe"
595 Delete /REBOOTOK "$PLUGINSDIR\pw.txt"
596 Delete /REBOOTOK "$PLUGINSDIR\*.sed"
597 Delete /REBOOTOK "$PLUGINSDIR\*.cmd"
598 Delete /REBOOTOK "$PLUGINSDIR\*.sql"
599 RMDir "$INSTDIR\plugins"
600 RMDir "$INSTDIR\working"
604 ; remove directories used
610 ; $0 - Service Name (ie Bacula-FD)
611 ; $1 - Service Description (ie Bacula File Daemon)
612 ; $2 - Install as Service
613 ; $3 - Start Service now
615 Function InstallDaemon
616 Call InstallCommonFiles
618 WriteRegDWORD HKLM "Software\Bacula" "Service_$0" $2
621 nsExec::ExecToLog '"$INSTDIR\$0.exe" /install -c "$INSTDIR\$0.conf"'
632 nsExec::ExecToLog 'net start $0'
634 Exec '"$INSTDIR\$0.exe" -c "$INSTDIR\$0.conf"'
638 CreateShortCut "$SMPROGRAMS\Bacula\Start $1.lnk" "$INSTDIR\$0.exe" '-c "$INSTDIR\$0.conf"' "$INSTDIR\$0.exe" 0
642 Function GetComputerName
647 System::Call "kernel32::GetComputerNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2"
649 ${StrCase} $R0 $R0 "L"
656 !define ComputerNameDnsFullyQualified 3
664 System::Call "kernel32::GetComputerNameExA(i ${ComputerNameDnsFullyQualified}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
667 DetailPrint "GetComputerNameExA failed - LastError = $R2"
683 !define NameUserPrincipal 8
691 System::Call "secur32::GetUserNameExA(i ${NameUserPrincipal}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
694 DetailPrint "GetUserNameExA failed - LastError = $R2"
705 System::Call "advapi32::GetUserNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
708 DetailPrint "GetUserNameA failed - LastError = $R2"
720 Function ConfigEditAndCopy
723 ${If} ${FileExists} "$0\$1"
729 nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\$1"'
730 CopyFiles "$PLUGINSDIR\$1" "$0\$1$R1"
735 Function GetSelectedComponents
738 ${If} ${SectionIsSelected} ${SecFileDaemon}
739 IntOp $R0 $R0 | ${ComponentFile}
741 ${If} ${SectionIsSelected} ${SecConsole}
742 IntOp $R0 $R0 | ${ComponentTextConsole}
747 Function PageComponentsShow
749 Call SelectPreviousComponents
750 Call UpdateComponentUI
753 Function PageDirectoryPre
754 ${If} $AutomaticInstall = 1
755 ${OrIf} $InstallType = ${UpgradeInstall}
760 Function LeaveInstallPage
761 Push "$INSTDIR\install.log"
765 Function EnterWriteTemplates
769 Call GetSelectedComponents
772 IntOp $R0 $R0 & ${ComponentDirector}
773 IntOp $R1 $NewComponents & ${ComponentsFileAndStorage}
782 IntOp $R0 $NewComponents & ${ComponentFile}
784 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 0
785 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags DISABLED
786 DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State
787 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST|DISABLED
789 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 1
790 DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags
791 WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State "C:\$ConfigClientName.conf"
795 !InsertMacro MUI_HEADER_TEXT "$(TITLE_WriteTemplates)" "$(SUBTITLE_WriteTemplates)"
796 !InsertMacro MUI_INSTALLOPTIONS_DISPLAY "WriteTemplates.ini"
798 !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 2" State
800 File "/oname=$PLUGINSDIR\client.conf.in" "client.conf.in"
802 nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\client.conf.in"'
803 !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 3" State
805 CopyFiles "$PLUGINSDIR\client.conf.in" "$R0"
814 Function SelectPreviousComponents
815 ${If} $InstallType <> ${NewInstall}
816 IntOp $R1 $PreviousComponents & ${ComponentFile}
818 !InsertMacro SelectSection ${SecFileDaemon}
819 !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_RO}
821 !InsertMacro UnselectSection ${SecFileDaemon}
822 !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_RO}
824 IntOp $R1 $PreviousComponents & ${ComponentTextConsole}
826 !InsertMacro SelectSection ${SecConsole}
827 !InsertMacro SetSectionFlag ${SecConsole} ${SF_RO}
829 !InsertMacro UnselectSection ${SecConsole}
830 !InsertMacro ClearSectionFlag ${SecConsole} ${SF_RO}
835 Function UpdateComponentUI
839 Call GetSelectedComponents
842 IntOp $R1 $R0 ^ $PreviousComponents
843 IntOp $NewComponents $R0 & $R1
845 ${If} $InstallType <> ${NewInstall}
846 IntOp $R1 $NewComponents & ${ComponentFile}
848 !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_BOLD}
850 !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_BOLD}
852 IntOp $R1 $NewComponents & ${ComponentTextConsole}
854 !InsertMacro SetSectionFlag ${SecConsole} ${SF_BOLD}
856 !InsertMacro ClearSectionFlag ${SecConsole} ${SF_BOLD}
860 GetDlgItem $R0 $HWNDPARENT 1
862 IntOp $R1 $NewComponents & ${ComponentsRequiringUserConfig}
864 SendMessage $R0 ${WM_SETTEXT} 0 "STR:Install"
866 SendMessage $R0 ${WM_SETTEXT} 0 "STR:&Next >"
874 !include "InstallType.nsh"
875 !include "ConfigPage1.nsh"
876 !include "ConfigPage2.nsh"
877 !include "DumpLog.nsh"