]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/win32/winbacula.nsi.in
Apply Thorsten's bugfix for vss_generic.cpp
[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.txt"
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" 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 baculas that could be running
94     ExecWait '"$INSTDIR\bin\bacula-fd.exe" /kill'
95     ; give it some time to shutdown
96     Sleep 1000
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.txt
110   IfFileExists "$INSTDIR\bin\bacula-fd.conf" newconf 
111   File baculafd\bacula-fd.conf
112   goto do_service
113  newconf:
114   File /oname=bacula-fd.conf.new baculafd\bacula-fd.conf
115        
116   ; If /service was given jump to the service install part
117  do_service:
118   Push "/service"
119   Call ParameterGiven
120   Pop $5
121   StrCmp $5 1 Service
122   
123   ; If silent install and not /service don't ask questions and goto NoService...
124   IfSilent NoService
125
126   ; If already installed as service skip it too
127   ReadRegDWORD $9 HKLM "Software\Bacula" "InstalledService"
128   StrCmp $9 "1" NoService  
129
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
132  Service:
133     ExecWait '"$INSTDIR\bin\bacula-fd.exe" /install'
134     StrCpy $9 "1"
135     WriteRegDWORD HKLM "Software\Bacula" "InstalledService" "1"
136  NoService:
137
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
144
145   Uninstall:
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
151
152   ; Create bacula-fd.conf and have the user edit it (skipped if silent)
153   IfSilent NoReminder
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
157  NoReminder:
158
159   ; Start the client? (default skipped if silent, use /start to force starting)
160   Push "/start"
161   Call ParameterGiven
162   Pop $8
163   StrCmp $8 "1" Start
164   IfSilent NoStart
165   Call IsNt
166   Pop $R0
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'
170  SetPerms:
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'
173   goto NoStart 
174  do_win98:
175   File Start.bat
176   File Stop.bat
177   MessageBox MB_YESNO|MB_ICONQUESTION  "Would you like to start the Bacula Client now?" IDNO NoStart
178  Start:
179   Exec '"$INSTDIR\bin\bacula-fd.exe" -c "$INSTDIR\bin\bacula-fd.conf"'
180  NoStart:
181 SectionEnd
182
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
190   goto do_next
191  newconf:
192   File /oname=bconsole.conf.new console\bconsole.conf
193  do_next:
194
195   ; Create bconsole.conf and have the user edit it (skipped if silent)
196   IfSilent NoReminder
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
200  NoReminder:
201 SectionEnd
202
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
210   goto do_next
211  newconf:
212   File /oname=wx-console.conf.new wx-console\wx-console.conf
213  do_next:
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
217
218   ; Create wx-console.conf and have the user edit it (skipped if silent)
219   IfSilent NoReminder
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
223  NoReminder:
224 SectionEnd
225
226
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"
237 SectionEnd
238
239 ;
240 ; Extra Page descriptions
241 ;
242
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."
247
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
254
255
256
257 ; Uninstall section
258
259 UninstallText "This will uninstall the Bacula Client. Hit next to continue."
260
261 Section "Uninstall"
262
263   ; Shutdown any baculum that could be running
264   ExecWait '"$INSTDIR\bin\bacula-fd.exe" /kill'
265
266   ReadRegDWORD $9 HKLM "Software\Bacula" "InstalledService"
267   StrCmp $9 "" NoService
268   ; Remove bacula service
269   ExecWait '"$INSTDIR\bin\bacula-fd.exe" /remove'
270   NoService:
271   
272   ; remove registry keys
273   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
274   DeleteRegKey HKLM "Software\Bacula"
275
276   ; remove start menu items
277   SetShellVarContext all
278   Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
279
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
283   save_bconsole:
284   CopyFiles /SILENT "$INSTDIR\bin\bconsole.conf" "$INSTDIR\bconsole.conf"
285   nosave_bconsole:
286   IfFileExists "$INSTDIR\bin\wx-console.conf" save_wxconsole nosave_wxconsole
287   save_wxconsole:
288   CopyFiles /SILENT "$INSTDIR\bin\wx-console.conf" "$INSTDIR\wx-console.conf"
289   nosave_wxconsole:
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"
297
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
303   RMDir "$INSTDIR\bin"
304   RMDir "$INSTDIR\doc"
305   RMDir "$INSTDIR\working"
306   RMDir "$INSTDIR"
307   RMDir "C:\tmp"
308   LeaveConfig:
309   RMDir "$SMPROGRAMS\Bacula"
310   
311 SectionEnd
312
313 ; eof