]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/win32/winbacula.nsi.in
- Set reconnect flag in MySQL packet to 1 to ensure that connection
[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 ..\..\..\depkgs-win32\pthreads\pthreadVCE.dll
108   File License.txt
109   IfFileExists "$INSTDIR\bin\bacula-fd.conf" newconf 
110   File baculafd\bacula-fd.conf
111   goto do_service
112  newconf:
113   File /oname=bacula-fd.conf.new baculafd\bacula-fd.conf
114        
115   ; If /service was given jump to the service install part
116  do_service:
117   Push "/service"
118   Call ParameterGiven
119   Pop $5
120   StrCmp $5 1 Service
121   
122   ; If silent install and not /service don't ask questions and goto NoService...
123   IfSilent NoService
124
125   ; If already installed as service skip it too
126   ReadRegDWORD $9 HKLM "Software\Bacula" "InstalledService"
127   StrCmp $9 "1" NoService  
128
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
131  Service:
132     ExecWait '"$INSTDIR\bin\bacula-fd.exe" /install'
133     StrCpy $9 "1"
134     WriteRegDWORD HKLM "Software\Bacula" "InstalledService" "1"
135  NoService:
136
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
143
144   Uninstall:
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
150
151   ; Create bacula-fd.conf and have the user edit it (skipped if silent)
152   IfSilent NoReminder
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
156  NoReminder:
157
158   ; Start the client? (default skipped if silent, use /start to force starting)
159   Push "/start"
160   Call ParameterGiven
161   Pop $8
162   StrCmp $8 "1" Start
163   IfSilent NoStart
164   Call IsNt
165   Pop $R0
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'
169  SetPerms:
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'
172   goto NoStart 
173  do_win98:
174   File Start.bat
175   File Stop.bat
176   MessageBox MB_YESNO|MB_ICONQUESTION  "Would you like to start the Bacula Client now?" IDNO NoStart
177  Start:
178   Exec '"$INSTDIR\bin\bacula-fd.exe" -c "$INSTDIR\bin\bacula-fd.conf"'
179  NoStart:
180 SectionEnd
181
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
187   goto do_next
188  newconf:
189   File /oname=bconsole.conf.new console\bconsole.conf
190  do_next:
191
192   ; Create bconsole.conf and have the user edit it (skipped if silent)
193   IfSilent NoReminder
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
197  NoReminder:
198 SectionEnd
199
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
205   goto do_next
206  newconf:
207   File /oname=wx-console.conf.new wx-console\wx-console.conf
208  do_next:
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
212
213   ; Create wx-console.conf and have the user edit it (skipped if silent)
214   IfSilent NoReminder
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
218  NoReminder:
219 SectionEnd
220
221
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"
232 SectionEnd
233
234 ;
235 ; Extra Page descriptions
236 ;
237
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."
242
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
249
250
251
252 ; Uninstall section
253
254 UninstallText "This will uninstall the Bacula Client. Hit next to continue."
255
256 Section "Uninstall"
257
258   ; Shutdown any baculum that could be running
259   ExecWait '"$INSTDIR\bin\bacula-fd.exe" /kill'
260
261   ReadRegDWORD $9 HKLM "Software\Bacula" "InstalledService"
262   StrCmp $9 "" NoService
263   ; Remove bacula service
264   ExecWait '"$INSTDIR\bin\bacula-fd.exe" /remove'
265   NoService:
266   
267   ; remove registry keys
268   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
269   DeleteRegKey HKLM "Software\Bacula"
270
271   ; remove start menu items
272   SetShellVarContext all
273   Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
274
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
278   save_bconsole:
279   CopyFiles /SILENT "$INSTDIR\bin\bconsole.conf" "$INSTDIR\bconsole.conf"
280   nosave_bconsole:
281   IfFileExists "$INSTDIR\bin\wx-console.conf" save_wxconsole nosave_wxconsole
282   save_wxconsole:
283   CopyFiles /SILENT "$INSTDIR\bin\wx-console.conf" "$INSTDIR\wx-console.conf"
284   nosave_wxconsole:
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"
292
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
298   RMDir "$INSTDIR\bin"
299   RMDir "$INSTDIR\doc"
300   RMDir "$INSTDIR\working"
301   RMDir "$INSTDIR"
302   RMDir "C:\tmp"
303   LeaveConfig:
304   RMDir "$SMPROGRAMS\Bacula"
305   
306 SectionEnd
307
308 ; eof