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 wx-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 ; Command line options:
26 ; /cygwin - do cygwin install into c:\cygwin\bacula
30 !define PRODUCT "Bacula"
31 !define VERSION "@VERSION@"
34 ; Include the Modern UI
44 OutFile "winbacula-${VERSION}.exe"
46 InstallDir "c:\bacula"
51 !insertmacro MUI_PAGE_WELCOME
52 ; !insertmacro MUI_PAGE_LICENSE "License.txt"
53 !insertmacro MUI_PAGE_COMPONENTS
54 !insertmacro MUI_PAGE_DIRECTORY
55 !insertmacro MUI_PAGE_INSTFILES
56 !insertmacro MUI_PAGE_FINISH
58 !insertmacro MUI_UNPAGE_WELCOME
59 !insertmacro MUI_UNPAGE_CONFIRM
60 !insertmacro MUI_UNPAGE_INSTFILES
61 !insertmacro MUI_UNPAGE_FINISH
64 !define MUI_ABORTWARNING
66 !insertmacro MUI_LANGUAGE "English"
70 DirText "Setup will install the Bacula Client ${VERSION} to the directory specified below. To install in a different folder, click Browse and select another folder.$\n$\nNote to CYGWIN users: please choose your CYGWIN root directory."
73 Section "Bacula File Service" SecService
75 ; /cygwin on command line forces install dir to c:\cygwin\bacula (useful for silent install)
81 StrCpy $INSTDIR "c:\cygwin\bacula"
83 ; IfFileExists "c:\cygwin" Cygwin ReallyNoCygwin
85 ; StrCpy $INSTDIR "c:\cygwin\bacula"
88 ; Check for existing installation
90 IfFileExists "$INSTDIR\bin\bacula-fd.conf" Upgrade NoUpgrade
93 ; Shutdown any baculas that could be running
94 ExecWait '"$INSTDIR\bin\bacula-fd.exe" /kill'
95 ; give it some time to shutdown
99 ; Set output path to the installation directory.
100 SetOutPath "$INSTDIR\bin"
101 CreateDirectory "$INSTDIR"
102 CreateDirectory "$INSTDIR\bin"
103 CreateDirectory "$INSTDIR\working"
104 CreateDirectory "c:\tmp"
106 File baculafd\Release\bacula-fd.exe
107 File c:\windows\system32\msvcr71.dll
108 File ..\..\..\depkgs-win32\pthreads\pthreadVCE.dll
110 IfFileExists "$INSTDIR\bin\bacula-fd.conf" newconf
111 File baculafd\bacula-fd.conf
114 File /oname=bacula-fd.conf.new baculafd\bacula-fd.conf
116 ; If /service was given jump to the service install part
123 ; If silent install and not /service don't ask questions and goto NoService...
126 ; If already installed as service skip it too
127 ReadRegDWORD $9 HKLM "Software\Bacula" "InstalledService"
128 StrCmp $9 "1" NoService
130 ; Install as service?
131 MessageBox MB_YESNO|MB_ICONQUESTION "Do you want to install the Bacula Client as a service (automatically starts with your PC)?" IDNO NoService
133 ExecWait '"$INSTDIR\bin\bacula-fd.exe" /install'
135 WriteRegDWORD HKLM "Software\Bacula" "InstalledService" "1"
138 ; Create Start Menu Directory
139 SetShellVarContext all
140 CreateDirectory "$SMPROGRAMS\Bacula"
141 ; If not installed as service create Start Menu link
142 StrCmp $9 "1" Uninstall
143 CreateShortCut "$SMPROGRAMS\Bacula\Start Bacula Client.lnk" "$INSTDIR\bin\bacula-fd.exe" "-c $INSTDIR\bin\bacula-fd.conf" "$INSTDIR\bin\bacula-fd.exe" 0
146 ; Write the uninstall keys for Windows & create Start Menu entry
147 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayName" "Bacula Client"
148 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString" '"$INSTDIR\uninstall.exe"'
149 WriteUninstaller "$INSTDIR\Uninstall.exe"
150 CreateShortCut "$SMPROGRAMS\Bacula\Uninstall Bacula.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
152 ; Create bacula-fd.conf and have the user edit it (skipped if silent)
154 StrCmp $7 "1" NoReminder ; skip if it is an upgrade
155 MessageBox MB_OK "Please edit the client configuration file $INSTDIR\bin\bacula-fd.conf to fit your installation. When you click the OK button Wordpad will open to allow you to do this. Be sure to save your changes before closing Wordpad."
156 Exec 'write "$INSTDIR\bin\bacula-fd.conf"' ; spawn wordpad with the file to be edited
159 ; Start the client? (default skipped if silent, use /start to force starting)
167 StrCmp $R0 "false" do_win98
168 MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to start the Bacula Client now?" IDNO SetPerms
169 Exec 'net start bacula'
171 ; set default permissions on config file so it's not world readable
172 Exec 'cmd /C echo Y|cacls "$INSTDIR\bin\bacula-fd.conf" /G SYSTEM:F Administrators:F'
177 MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to start the Bacula Client now?" IDNO NoStart
179 Exec '"$INSTDIR\bin\bacula-fd.exe" -c "$INSTDIR\bin\bacula-fd.conf"'
183 Section "Install Console" SecConsole
184 SetOutPath "$INSTDIR\bin"
185 File console\Release\bconsole.exe
186 File ..\..\..\depkgs-win32\pthreads\pthreadVCE.dll
187 File c:\windows\system32\msvcr71.dll
188 IfFileExists "$INSTDIR\bin\bconsole.conf" newconf
189 File console\bconsole.conf
192 File /oname=bconsole.conf.new console\bconsole.conf
195 ; Create bconsole.conf and have the user edit it (skipped if silent)
197 StrCmp $7 "1" NoReminder ; skip if it is an upgrade
198 MessageBox MB_OK "Please edit the command line console configuration file $INSTDIR\bin\bconsole.conf to fit your installation. When you click the OK button Wordpad will open to allow you to do this. Be sure to save your changes before closing Wordpad."
199 Exec 'write "$INSTDIR\bin\bconsole.conf"' ; spawn wordpad with the file to be edited
203 Section "Install wx-Console" SecWxConsole
204 SetOutPath "$INSTDIR\bin"
205 File wx-console\Release\wx-console.exe
206 File ..\..\..\depkgs-win32\pthreads\pthreadVCE.dll
207 File c:\windows\system32\msvcr71.dll
208 IfFileExists "$INSTDIR\bin\wx-console.conf" newconf
209 File wx-console\wx-console.conf
212 File /oname=wx-console.conf.new wx-console\wx-console.conf
214 ; Create Start Menu entry
215 SetShellVarContext all
216 CreateShortCut "$SMPROGRAMS\Bacula\WX-Console.lnk" "$INSTDIR\bin\wx-console.exe" "-c $INSTDIR\bin\wx-console.conf" "$INSTDIR\bin\wx-console.exe" 0
218 ; Create wx-console.conf and have the user edit it (skipped if silent)
220 StrCmp $7 "1" NoReminder ; skip if it is an upgrade
221 MessageBox MB_OK "Please edit the WX-console configuration file $INSTDIR\bin\wx-console.conf to fit your installation. When you click the OK button Wordpad will open to allow you to do this. Be sure to save your changes before closing Wordpad."
222 Exec 'write "$INSTDIR\bin\wx-console.conf"' ; spawn wordpad with the file to be edited
227 Section "Install Documentation" SecDoc
228 SetOutPath "$INSTDIR\doc"
229 CreateDirectory "$INSTDIR\doc"
230 File ..\..\..\docs\manual\bacula\*.html
231 File ..\..\..\docs\manual\bacula\*.png
232 File ..\..\..\docs\manual\bacula\*.css
233 File ..\..\..\docs\manual\bacula.pdf
234 ; Create Start Menu entry
235 SetShellVarContext all
236 CreateShortCut "$SMPROGRAMS\Bacula\Manual.lnk" "$INSTDIR\doc\bacula.pdf"
240 ; Extra Page descriptions
243 LangString DESC_SecService ${LANG_ENGLISH} "Install Bacula client on this system."
244 LangString DESC_SecConsole ${LANG_ENGLISH} "Install Console program on this system."
245 LangString DESC_SecWxConsole ${LANG_ENGLISH} "Install graphical console program on this system."
246 LangString DESC_SecDoc ${LANG_ENGLISH} "Install Documentation on this system."
248 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
249 !insertmacro MUI_DESCRIPTION_TEXT ${SecService} $(DESC_SecService)
250 !insertmacro MUI_DESCRIPTION_TEXT ${SecConsole} $(DESC_SecConsole)
251 !insertmacro MUI_DESCRIPTION_TEXT ${SecWxConsole} $(DESC_SecWxConsole)
252 !insertmacro MUI_DESCRIPTION_TEXT ${SecDoc} $(DESC_SecDoc)
253 !insertmacro MUI_FUNCTION_DESCRIPTION_END
259 UninstallText "This will uninstall the Bacula Client. Hit next to continue."
263 ; Shutdown any baculum that could be running
264 ExecWait '"$INSTDIR\bin\bacula-fd.exe" /kill'
266 ReadRegDWORD $9 HKLM "Software\Bacula" "InstalledService"
267 StrCmp $9 "" NoService
268 ; Remove bacula service
269 ExecWait '"$INSTDIR\bin\bacula-fd.exe" /remove'
272 ; remove registry keys
273 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
274 DeleteRegKey HKLM "Software\Bacula"
276 ; remove start menu items
277 SetShellVarContext all
278 Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
280 ; remove files and uninstaller (preserving config for now)
281 CopyFiles /SILENT "$INSTDIR\bin\bacula-fd.conf" "$INSTDIR\bacula-fd.conf"
282 IfFileExists "$INSTDIR\bin\bconsole.conf" save_bconsole nosave_bconsole
284 CopyFiles /SILENT "$INSTDIR\bin\bconsole.conf" "$INSTDIR\bconsole.conf"
286 IfFileExists "$INSTDIR\bin\wx-console.conf" save_wxconsole nosave_wxconsole
288 CopyFiles /SILENT "$INSTDIR\bin\wx-console.conf" "$INSTDIR\wx-console.conf"
290 Delete /REBOOTOK "$INSTDIR\bin\*.*"
291 Delete /REBOOTOK "$INSTDIR\doc\*.*"
292 CopyFiles /SILENT "$INSTDIR\bacula-fd.conf" "$INSTDIR\bin\bacula-fd.conf"
293 CopyFiles /SILENT "$INSTDIR\bconsole.conf" "$INSTDIR\bin\bconsole.conf"
294 CopyFiles /SILENT "$INSTDIR\wx-console.conf" "$INSTDIR\bin\wx-console.conf"
295 Delete /REBOOTOK "$INSTDIR\*.conf"
296 Delete /REBOOTOK "$INSTDIR\Uninstall.exe"
298 ; Check for existing installation
299 MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to delete the current configuration files and the working state file?" IDNO LeaveConfig
300 Delete /REBOOTOK "$INSTDIR\bin\*.conf"
301 Delete /REBOOTOK "$INSTDIR\working\*"
302 ; remove directories used
305 RMDir "$INSTDIR\working"
309 RMDir "$SMPROGRAMS\Bacula"