]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/win32/winbacula.nsi.in
This commit was manufactured by cvs2svn to create tag
[bacula/bacula] / bacula / src / win32 / winbacula.nsi.in
1 ; winbacula.nsi
2 ;
3 ; Began as a version written by Michel Meyers (michel@tcnnet.dyndns.org)
4 ;
5 ; Adapted by Kern Sibbald for native Win32 Bacula
6 ;    added a number of elements from Christopher Hull's installer
7 ;
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
13 ;
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
19 ;
20 ; D. Scott Barninger Apr 17 2005
21 ; 1.36.3 release docs update
22 ; add pdf manual and menu shortcut
23 ;
24 ; Command line options:
25 ;
26 ; /cygwin     -  do cygwin install into c:\cygwin\bacula
27 ; /service    - 
28 ; /start
29
30 !define PRODUCT "Bacula"
31 !define VERSION "@VERSION@"
32
33 ;                           
34 ; Include the Modern UI
35 ;
36 !include "MUI.nsh"
37 !include "params.nsh"
38 !include "util.nsh"
39
40 ;
41 ; Basics
42 ;
43   Name "Bacula Client"
44   OutFile "winbacula-${VERSION}.exe"
45   SetCompressor lzma
46   InstallDir "c:\bacula"
47
48 ;
49 ; Pull in pages
50 ;
51  !insertmacro MUI_PAGE_WELCOME
52 ;  !insertmacro MUI_PAGE_LICENSE "..\..\LICENSE"
53  !insertmacro MUI_PAGE_COMPONENTS
54  !insertmacro MUI_PAGE_DIRECTORY
55  !insertmacro MUI_PAGE_INSTFILES
56  !insertmacro MUI_PAGE_FINISH
57
58  !insertmacro MUI_UNPAGE_WELCOME
59  !insertmacro MUI_UNPAGE_CONFIRM
60  !insertmacro MUI_UNPAGE_INSTFILES
61  !insertmacro MUI_UNPAGE_FINISH
62
63
64  !define      MUI_ABORTWARNING
65
66  !insertmacro MUI_LANGUAGE "English"
67
68
69
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."
71
72
73 Section "Bacula File Service" SecService
74   ;
75   ; /cygwin on command line forces install dir to c:\cygwin\bacula (useful for silent install)
76   ;
77   Push "/cygwin"
78   Call ParameterGiven
79   Pop $6
80   StrCmp $6 0 NoCygwin
81   StrCpy $INSTDIR "c:\cygwin\bacula"
82  NoCygwin:
83 ; IfFileExists "c:\cygwin\bin\cygwin1.dll" Cygwin ReallyNoCygwin
84 ;Cygwin:
85 ; StrCpy $INSTDIR "c:\cygwin\bacula"
86 ;ReallyNoCygwin:
87
88   ; Check for existing installation
89   StrCpy $7 0
90   IfFileExists "$INSTDIR\bin\bacula-fd.conf" Upgrade NoUpgrade
91  Upgrade:
92     StrCpy $7 1
93     ; Shutdown any bacula that could be running
94     ExecWait '"$INSTDIR\bin\bacula-fd.exe" /kill'
95     ; give it some time to shutdown
96     Sleep 3000
97  NoUpgrade:
98
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"
105   ; Put files there
106   File baculafd\Release\bacula-fd.exe
107   File c:\windows\system32\msvcr71.dll
108   File ..\..\..\depkgs-win32\pthreads\pthreadVCE.dll
109   File ..\..\LICENSE
110   Delete /REBOOTOK "$INSTDIR\bin\License.txt"
111   IfFileExists "$INSTDIR\bin\bacula-fd.conf" newconf 
112   File baculafd\bacula-fd.conf
113   goto do_service
114  newconf:
115   File /oname=bacula-fd.conf.new baculafd\bacula-fd.conf
116        
117   ; If /service was given jump to the service install part
118  do_service:
119   Push "/service"
120   Call ParameterGiven
121   Pop $5
122   StrCmp $5 1 Service
123   
124   ; If silent install and not /service don't ask questions and goto NoService...
125   IfSilent NoService
126
127   ; If already installed as service skip it too
128   ReadRegDWORD $9 HKLM "Software\Bacula" "InstalledService"
129   StrCmp $9 "1" NoService  
130
131   ; Install as service?
132   MessageBox MB_YESNO|MB_ICONQUESTION "Do you want to install the Bacula Client as a service (automatically starts with your PC)?" IDNO NoService
133  Service:
134     ExecWait '"$INSTDIR\bin\bacula-fd.exe" /install'
135     StrCpy $9 "1"
136     WriteRegDWORD HKLM "Software\Bacula" "InstalledService" "1"
137  NoService:
138
139   ; Create Start Menu Directory
140   SetShellVarContext all
141   CreateDirectory "$SMPROGRAMS\Bacula"
142   ; If not installed as service create Start Menu link
143   StrCmp $9 "1" Uninstall
144   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
146   Uninstall:
147   ; Write the uninstall keys for Windows & create Start Menu entry
148   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayName" "Bacula Client"
149   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString" '"$INSTDIR\uninstall.exe"'
150   WriteUninstaller "$INSTDIR\Uninstall.exe"
151   CreateShortCut "$SMPROGRAMS\Bacula\Uninstall Bacula.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
152
153   ; Create bacula-fd.conf and have the user edit it (skipped if silent)
154   IfSilent NoReminder
155   StrCmp $7 "1" NoReminder  ; skip if it is an upgrade
156   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."
157   Exec 'write "$INSTDIR\bin\bacula-fd.conf"'  ; spawn wordpad with the file to be edited
158  NoReminder:
159
160   ; Start the client? (default skipped if silent, use /start to force starting)
161   Push "/start"
162   Call ParameterGiven
163   Pop $8
164   StrCmp $8 "1" Start
165   IfSilent NoStart
166   Call IsNt
167   Pop $R0
168   StrCmp $R0 "false" do_win98
169   MessageBox MB_YESNO|MB_ICONQUESTION  "Would you like to start the Bacula Client now?" IDNO SetPerms
170   Exec 'net start bacula'
171   Sleep 3000
172  SetPerms:
173   ; set default permissions on config file so it's not world readable
174   Exec 'cmd /C echo Y|cacls "$INSTDIR\bin\bacula-fd.conf" /G SYSTEM:F Administrators:F'
175   goto NoStart 
176  do_win98:
177   File Start.bat
178   File Stop.bat
179   MessageBox MB_YESNO|MB_ICONQUESTION  "Would you like to start the Bacula Client now?" IDNO NoStart
180  Start:
181   Exec '"$INSTDIR\bin\bacula-fd.exe" -c "$INSTDIR\bin\bacula-fd.conf"'
182   Sleep 3000
183  NoStart:
184 SectionEnd
185
186 Section "Install Console" SecConsole
187   SetOutPath "$INSTDIR\bin"
188   File console\Release\bconsole.exe
189   IfFileExists "$INSTDIR\bin\pthreadVCE.dll" msvcr711
190   File ..\..\..\depkgs-win32\pthreads\pthreadVCE.dll
191  msvcr711:
192   IfFileExists "$INSTDIR\bin\msvcr71.dll" testconf1
193   File c:\windows\system32\msvcr71.dll
194  testconf1:
195   IfFileExists "$INSTDIR\bin\bconsole.conf" newconf 
196   File console\bconsole.conf
197   goto do_next
198  newconf:
199   File /oname=bconsole.conf.new console\bconsole.conf
200  do_next:
201
202   ; Create bconsole.conf and have the user edit it (skipped if silent)
203   IfSilent NoReminder
204   StrCmp $7 "1" NoReminder  ; skip if it is an upgrade
205   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."
206   Exec 'write "$INSTDIR\bin\bconsole.conf"'  ; spawn wordpad with the file to be edited
207  NoReminder:
208 SectionEnd
209
210 Section "Install wx-Console" SecWxConsole
211   SetOutPath "$INSTDIR\bin"
212   File wx-console\Release\wx-console.exe
213   IfFileExists "$INSTDIR\bin\pthreadVCE.dll" msvcr712
214   File ..\..\..\depkgs-win32\pthreads\pthreadVCE.dll
215  msvcr712:
216   IfFileExists "$INSTDIR\bin\msvcr71.dll" testconf2
217   File c:\windows\system32\msvcr71.dll
218  testconf2:
219   IfFileExists "$INSTDIR\bin\wx-console.conf" newconf 
220   File wx-console\wx-console.conf
221   goto do_next
222  newconf:
223   File /oname=wx-console.conf.new wx-console\wx-console.conf
224  do_next:
225   ; Create Start Menu entry
226   SetShellVarContext all
227   CreateShortCut "$SMPROGRAMS\Bacula\WX-Console.lnk" "$INSTDIR\bin\wx-console.exe" "-c $INSTDIR\bin\wx-console.conf" "$INSTDIR\bin\wx-console.exe" 0
228
229   ; Create wx-console.conf and have the user edit it (skipped if silent)
230   IfSilent NoReminder
231   StrCmp $7 "1" NoReminder  ; skip if it is an upgrade
232   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."
233   Exec 'write "$INSTDIR\bin\wx-console.conf"'  ; spawn wordpad with the file to be edited
234  NoReminder:
235 SectionEnd
236
237
238 Section "Install Documentation" SecDoc
239   SetOutPath "$INSTDIR\doc"
240   CreateDirectory "$INSTDIR\doc"
241   File ..\..\..\docs\manual\bacula\*.html
242   File ..\..\..\docs\manual\bacula\*.png
243   File ..\..\..\docs\manual\bacula\*.css
244   File ..\..\..\docs\manual\bacula.pdf
245   ; Create Start Menu entry
246   SetShellVarContext all
247   CreateShortCut "$SMPROGRAMS\Bacula\Manual.lnk" "$INSTDIR\doc\bacula.pdf"
248 SectionEnd
249
250 ;
251 ; Extra Page descriptions
252 ;
253
254   LangString DESC_SecService ${LANG_ENGLISH} "Install Bacula client on this system."
255   LangString DESC_SecConsole ${LANG_ENGLISH} "Install Console program on this system."
256   LangString DESC_SecWxConsole ${LANG_ENGLISH} "Install graphical console program on this system."
257   LangString DESC_SecDoc ${LANG_ENGLISH} "Install Documentation on this system."
258
259   !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
260     !insertmacro MUI_DESCRIPTION_TEXT ${SecService} $(DESC_SecService)
261     !insertmacro MUI_DESCRIPTION_TEXT ${SecConsole} $(DESC_SecConsole)
262     !insertmacro MUI_DESCRIPTION_TEXT ${SecWxConsole} $(DESC_SecWxConsole)
263     !insertmacro MUI_DESCRIPTION_TEXT ${SecDoc} $(DESC_SecDoc)
264   !insertmacro MUI_FUNCTION_DESCRIPTION_END
265
266
267
268 ; Uninstall section
269
270 UninstallText "This will uninstall the Bacula Client. Hit next to continue."
271
272 Section "Uninstall"
273
274   ; Shutdown any baculum that could be running
275   ExecWait '"$INSTDIR\bin\bacula-fd.exe" /kill'
276
277   ReadRegDWORD $9 HKLM "Software\Bacula" "InstalledService"
278   StrCmp $9 "" NoService
279   ; Remove bacula service
280   ExecWait '"$INSTDIR\bin\bacula-fd.exe" /remove'
281   NoService:
282   
283   ; remove registry keys
284   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
285   DeleteRegKey HKLM "Software\Bacula"
286
287   ; remove start menu items
288   SetShellVarContext all
289   Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
290
291   ; remove files and uninstaller (preserving config for now)
292   CopyFiles /SILENT "$INSTDIR\bin\bacula-fd.conf" "$INSTDIR\bacula-fd.conf"
293   IfFileExists "$INSTDIR\bin\bconsole.conf" save_bconsole nosave_bconsole
294   save_bconsole:
295   CopyFiles /SILENT "$INSTDIR\bin\bconsole.conf" "$INSTDIR\bconsole.conf"
296   nosave_bconsole:
297   IfFileExists "$INSTDIR\bin\wx-console.conf" save_wxconsole nosave_wxconsole
298   save_wxconsole:
299   CopyFiles /SILENT "$INSTDIR\bin\wx-console.conf" "$INSTDIR\wx-console.conf"
300   nosave_wxconsole:
301   Delete /REBOOTOK "$INSTDIR\bin\*.*"
302   Delete /REBOOTOK "$INSTDIR\doc\*.*"
303   CopyFiles /SILENT "$INSTDIR\bacula-fd.conf" "$INSTDIR\bin\bacula-fd.conf"
304   CopyFiles /SILENT "$INSTDIR\bconsole.conf" "$INSTDIR\bin\bconsole.conf"
305   CopyFiles /SILENT "$INSTDIR\wx-console.conf" "$INSTDIR\bin\wx-console.conf"
306   Delete /REBOOTOK "$INSTDIR\*.conf"
307   Delete /REBOOTOK "$INSTDIR\Uninstall.exe"
308
309   ; Check for existing installation
310   MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to delete the current configuration files and the working state file?" IDNO LeaveConfig
311   Delete /REBOOTOK "$INSTDIR\bin\*.conf"
312   Delete /REBOOTOK "$INSTDIR\working\*"
313   ; remove directories used
314   RMDir "$INSTDIR\bin"
315   RMDir "$INSTDIR\doc"
316   RMDir "$INSTDIR\working"
317   RMDir "$INSTDIR"
318   RMDir "C:\tmp"
319   LeaveConfig:
320   RMDir "$SMPROGRAMS\Bacula"
321   
322 SectionEnd
323
324 ; eof