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 ..\..\..\depkgs-win32\pthreads\pthreadVCE.dll
109 IfFileExists "$INSTDIR\bin\bacula-fd.conf" newconf
110 File baculafd\bacula-fd.conf
113 File /oname=bacula-fd.conf.new baculafd\bacula-fd.conf
115 ; If /service was given jump to the service install part
122 ; If silent install and not /service don't ask questions and goto NoService...
125 ; If already installed as service skip it too
126 ReadRegDWORD $9 HKLM "Software\Bacula" "InstalledService"
127 StrCmp $9 "1" NoService
129 ; Install as service?
130 MessageBox MB_YESNO|MB_ICONQUESTION "Do you want to install the Bacula Client as a service (automatically starts with your PC)?" IDNO NoService
132 ExecWait '"$INSTDIR\bin\bacula-fd.exe" /install'
134 WriteRegDWORD HKLM "Software\Bacula" "InstalledService" "1"
137 ; Create Start Menu Directory
138 SetShellVarContext all
139 CreateDirectory "$SMPROGRAMS\Bacula"
140 ; If not installed as service create Start Menu link
141 StrCmp $9 "1" Uninstall
142 CreateShortCut "$SMPROGRAMS\Bacula\Start Bacula Client.lnk" "$INSTDIR\bin\bacula-fd.exe" "-c $INSTDIR\bin\bacula-fd.conf" "$INSTDIR\bin\bacula-fd.exe" 0
145 ; Write the uninstall keys for Windows & create Start Menu entry
146 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayName" "Bacula Client"
147 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString" '"$INSTDIR\uninstall.exe"'
148 WriteUninstaller "$INSTDIR\Uninstall.exe"
149 CreateShortCut "$SMPROGRAMS\Bacula\Uninstall Bacula.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
151 ; Create bacula-fd.conf and have the user edit it (skipped if silent)
153 StrCmp $7 "1" NoReminder ; skip if it is an upgrade
154 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."
155 Exec 'write "$INSTDIR\bin\bacula-fd.conf"' ; spawn wordpad with the file to be edited
158 ; Start the client? (default skipped if silent, use /start to force starting)
166 StrCmp $R0 "false" do_win98
167 MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to start the Bacula Client now?" IDNO SetPerms
168 Exec 'net start bacula'
170 ; set default permissions on config file so it's not world readable
171 Exec 'cmd /C echo Y|cacls "$INSTDIR\bin\bacula-fd.conf" /G SYSTEM:F Administrators:F'
176 MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to start the Bacula Client now?" IDNO NoStart
178 Exec '"$INSTDIR\bin\bacula-fd.exe" -c "$INSTDIR\bin\bacula-fd.conf"'
182 Section "Install Console" SecConsole
183 SetOutPath "$INSTDIR\bin"
184 File console\Release\bconsole.exe
185 IfFileExists "$INSTDIR\bin\bconsole.conf" newconf
186 File console\bconsole.conf
189 File /oname=bconsole.conf.new console\bconsole.conf
192 ; Create bconsole.conf and have the user edit it (skipped if silent)
194 StrCmp $7 "1" NoReminder ; skip if it is an upgrade
195 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."
196 Exec 'write "$INSTDIR\bin\bconsole.conf"' ; spawn wordpad with the file to be edited
200 Section "Install wx-Console" SecWxConsole
201 SetOutPath "$INSTDIR\bin"
202 File wx-console\Release\wx-console.exe
203 IfFileExists "$INSTDIR\bin\wx-console.conf" newconf
204 File wx-console\wx-console.conf
207 File /oname=wx-console.conf.new wx-console\wx-console.conf
209 ; Create Start Menu entry
210 SetShellVarContext all
211 CreateShortCut "$SMPROGRAMS\Bacula\WX-Console.lnk" "$INSTDIR\bin\wx-console.exe" "-c $INSTDIR\bin\wx-console.conf" "$INSTDIR\bin\wx-console.exe" 0
213 ; Create wx-console.conf and have the user edit it (skipped if silent)
215 StrCmp $7 "1" NoReminder ; skip if it is an upgrade
216 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."
217 Exec 'write "$INSTDIR\bin\wx-console.conf"' ; spawn wordpad with the file to be edited
222 Section "Install Documentation" SecDoc
223 SetOutPath "$INSTDIR\doc"
224 CreateDirectory "$INSTDIR\doc"
225 File ..\..\..\docs\manual\bacula\*.html
226 File ..\..\..\docs\manual\bacula\*.png
227 File ..\..\..\docs\manual\bacula\*.css
228 File ..\..\..\docs\manual\bacula.pdf
229 ; Create Start Menu entry
230 SetShellVarContext all
231 CreateShortCut "$SMPROGRAMS\Bacula\Manual.lnk" "$INSTDIR\doc\bacula.pdf"
235 ; Extra Page descriptions
238 LangString DESC_SecService ${LANG_ENGLISH} "Install Bacula client on this system."
239 LangString DESC_SecConsole ${LANG_ENGLISH} "Install Console program on this system."
240 LangString DESC_SecWxConsole ${LANG_ENGLISH} "Install graphical console program on this system."
241 LangString DESC_SecDoc ${LANG_ENGLISH} "Install Documentation on this system."
243 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
244 !insertmacro MUI_DESCRIPTION_TEXT ${SecService} $(DESC_SecService)
245 !insertmacro MUI_DESCRIPTION_TEXT ${SecConsole} $(DESC_SecConsole)
246 !insertmacro MUI_DESCRIPTION_TEXT ${SecWxConsole} $(DESC_SecWxConsole)
247 !insertmacro MUI_DESCRIPTION_TEXT ${SecDoc} $(DESC_SecDoc)
248 !insertmacro MUI_FUNCTION_DESCRIPTION_END
254 UninstallText "This will uninstall the Bacula Client. Hit next to continue."
258 ; Shutdown any baculum that could be running
259 ExecWait '"$INSTDIR\bin\bacula-fd.exe" /kill'
261 ReadRegDWORD $9 HKLM "Software\Bacula" "InstalledService"
262 StrCmp $9 "" NoService
263 ; Remove bacula service
264 ExecWait '"$INSTDIR\bin\bacula-fd.exe" /remove'
267 ; remove registry keys
268 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
269 DeleteRegKey HKLM "Software\Bacula"
271 ; remove start menu items
272 SetShellVarContext all
273 Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
275 ; remove files and uninstaller (preserving config for now)
276 CopyFiles /SILENT "$INSTDIR\bin\bacula-fd.conf" "$INSTDIR\bacula-fd.conf"
277 IfFileExists "$INSTDIR\bin\bconsole.conf" save_bconsole nosave_bconsole
279 CopyFiles /SILENT "$INSTDIR\bin\bconsole.conf" "$INSTDIR\bconsole.conf"
281 IfFileExists "$INSTDIR\bin\wx-console.conf" save_wxconsole nosave_wxconsole
283 CopyFiles /SILENT "$INSTDIR\bin\wx-console.conf" "$INSTDIR\wx-console.conf"
285 Delete /REBOOTOK "$INSTDIR\bin\*.*"
286 Delete /REBOOTOK "$INSTDIR\doc\*.*"
287 CopyFiles /SILENT "$INSTDIR\bacula-fd.conf" "$INSTDIR\bin\bacula-fd.conf"
288 CopyFiles /SILENT "$INSTDIR\bconsole.conf" "$INSTDIR\bin\bconsole.conf"
289 CopyFiles /SILENT "$INSTDIR\wx-console.conf" "$INSTDIR\bin\wx-console.conf"
290 Delete /REBOOTOK "$INSTDIR\*.conf"
291 Delete /REBOOTOK "$INSTDIR\Uninstall.exe"
293 ; Check for existing installation
294 MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to delete the current configuration files and the working state file?" IDNO LeaveConfig
295 Delete /REBOOTOK "$INSTDIR\bin\*.conf"
296 Delete /REBOOTOK "$INSTDIR\working\*"
297 ; remove directories used
300 RMDir "$INSTDIR\working"
304 RMDir "$SMPROGRAMS\Bacula"