]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/win32/winbacula.nsi.in
added VSS toggling by enable_vss
[bacula/bacula] / bacula / src / win32 / winbacula.nsi.in
index 54b4bbb877507da9578bababb51afd392a07a441..cc83244df6ecae1dc321094bd13beca6bbadaa09 100755 (executable)
@@ -1,8 +1,25 @@
 ; winbacula.nsi
 ;
-; Written by Michel Meyers (michel@tcnnet.dyndns.org)
+; Began as a version written by Michel Meyers (michel@tcnnet.dyndns.org)
 ;
-; Updated by Kern Sibbald for native Win32 Bacula
+; Adapted by Kern Sibbald for native Win32 Bacula
+;    added a number of elements from Christopher Hull's installer
+;
+; D. Scott Barninger Nov 13 2004
+; added configuration editing for bconsole.conf and wx-console.conf
+; better explanation in dialog boxes for editing config files
+; added Start Menu items
+; fix uninstall of config files to do all not just bacula-fd.conf
+;
+; D. Scott Barninger Dec 05 2004
+; added specification of default permissions for bacula-fd.conf
+;   - thanks to Jamie Ffolliott for pointing me at cacls
+; added removal of working-dir files if user selects to remove config
+; uninstall is now 100% clean
+;
+; D. Scott Barninger Apr 17 2005
+; 1.36.3 release docs update
+; add pdf manual and menu shortcut
 ;
 ; Command line options:
 ;
@@ -25,6 +42,7 @@
 ;
   Name "Bacula Client"
   OutFile "winbacula-${VERSION}.exe"
+  SetCompressor lzma
   InstallDir "c:\bacula"
 
 ;
@@ -89,10 +107,10 @@ Section "Bacula File Service" SecService
   File ..\..\..\depkgs-win32\pthreads\pthreadVCE.dll
   File License.txt
   IfFileExists "$INSTDIR\bin\bacula-fd.conf" newconf 
-  File bacula-fd.conf
+  File baculafd\bacula-fd.conf
   goto do_service
  newconf:
-  File /oname=bacula-fd.conf.new bacula-fd.conf
+  File /oname=bacula-fd.conf.new baculafd\bacula-fd.conf
        
   ; If /service was given jump to the service install part
  do_service:
@@ -116,15 +134,24 @@ Section "Bacula File Service" SecService
     WriteRegDWORD HKLM "Software\Bacula" "InstalledService" "1"
  NoService:
 
-  ; Write the uninstall keys for Windows
+  ; Create Start Menu Directory
+  SetShellVarContext all
+  CreateDirectory "$SMPROGRAMS\Bacula"
+  ; If not installed as service create Start Menu link
+  StrCmp $9 "1" Uninstall
+  CreateShortCut "$SMPROGRAMS\Bacula\Start Bacula Client.lnk" "$INSTDIR\bin\bacula-fd.exe" "-c $INSTDIR\bin\bacula-fd.conf" "$INSTDIR\bin\bacula-fd.exe" 0
+
+  Uninstall:
+  ; Write the uninstall keys for Windows & create Start Menu entry
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayName" "Bacula Client"
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString" '"$INSTDIR\uninstall.exe"'
   WriteUninstaller "$INSTDIR\Uninstall.exe"
+  CreateShortCut "$SMPROGRAMS\Bacula\Uninstall Bacula.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
 
   ; Create bacula-fd.conf and have the user edit it (skipped if silent)
   IfSilent NoReminder
   StrCmp $7 "1" NoReminder  ; skip if it is an upgrade
-  MessageBox MB_OK "Please edit $INSTDIR\bin\bacula-fd.conf according to your requirements/installation! Also remember to put a shortcut into your start menu if you didn't install the client as a service."
+  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."
   Exec 'write "$INSTDIR\bin\bacula-fd.conf"'  ; spawn wordpad with the file to be edited
  NoReminder:
 
@@ -137,8 +164,11 @@ Section "Bacula File Service" SecService
   Call IsNt
   Pop $R0
   StrCmp $R0 "false" do_win98
-  MessageBox MB_YESNO|MB_ICONQUESTION  "Would you like to start the Bacula Client now?" IDNO NoStart
+  MessageBox MB_YESNO|MB_ICONQUESTION  "Would you like to start the Bacula Client now?" IDNO SetPerms
   Exec 'net start bacula'
+ SetPerms:
+  ; set default permissions on config file so it's not world readable
+  Exec 'cmd /C echo Y|cacls "$INSTDIR\bin\bacula-fd.conf" /G SYSTEM:F Administrators:F'
   goto NoStart 
  do_win98:
   File Start.bat
@@ -147,16 +177,58 @@ Section "Bacula File Service" SecService
  Start:
   Exec '"$INSTDIR\bin\bacula-fd.exe" -c "$INSTDIR\bin\bacula-fd.conf"'
  NoStart:
+SectionEnd
 
+Section "Install Console" SecConsole
+  SetOutPath "$INSTDIR\bin"
+  File console\Release\bconsole.exe
+  IfFileExists "$INSTDIR\bin\bconsole.conf" newconf 
+  File console\bconsole.conf
+  goto do_next
+ newconf:
+  File /oname=bconsole.conf.new console\bconsole.conf
+ do_next:
+
+  ; Create bconsole.conf and have the user edit it (skipped if silent)
+  IfSilent NoReminder
+  StrCmp $7 "1" NoReminder  ; skip if it is an upgrade
+  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."
+  Exec 'write "$INSTDIR\bin\bconsole.conf"'  ; spawn wordpad with the file to be edited
+ NoReminder:
+SectionEnd
+
+Section "Install wx-Console" SecWxConsole
+  SetOutPath "$INSTDIR\bin"
+  File wx-console\Release\wx-console.exe
+  IfFileExists "$INSTDIR\bin\wx-console.conf" newconf 
+  File wx-console\wx-console.conf
+  goto do_next
+ newconf:
+  File /oname=wx-console.conf.new wx-console\wx-console.conf
+ do_next:
+  ; Create Start Menu entry
+  SetShellVarContext all
+  CreateShortCut "$SMPROGRAMS\Bacula\WX-Console.lnk" "$INSTDIR\bin\wx-console.exe" "-c $INSTDIR\bin\wx-console.conf" "$INSTDIR\bin\wx-console.exe" 0
+
+  ; Create wx-console.conf and have the user edit it (skipped if silent)
+  IfSilent NoReminder
+  StrCmp $7 "1" NoReminder  ; skip if it is an upgrade
+  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."
+  Exec 'write "$INSTDIR\bin\wx-console.conf"'  ; spawn wordpad with the file to be edited
+ NoReminder:
 SectionEnd
 
 
 Section "Install Documentation" SecDoc
   SetOutPath "$INSTDIR\doc"
   CreateDirectory "$INSTDIR\doc"
-  File ..\..\doc\html-manual\*.html
-  File ..\..\doc\html-manual\*.gif
-  File ..\..\doc\html-manual\*.jpg
+  File ..\..\..\docs\manual\bacula\*.html
+  File ..\..\..\docs\manual\bacula\*.png
+  File ..\..\..\docs\manual\bacula\*.css
+  File ..\..\..\docs\manual\bacula.pdf
+  ; Create Start Menu entry
+  SetShellVarContext all
+  CreateShortCut "$SMPROGRAMS\Bacula\Manual.lnk" "$INSTDIR\doc\bacula.pdf"
 SectionEnd
 
 ;
@@ -164,10 +236,14 @@ SectionEnd
 ;
 
   LangString DESC_SecService ${LANG_ENGLISH} "Install Bacula client on this system."
-  LangString DESC_SecDoc ${LANG_ENGLISH} "Install Documenation on this system."
+  LangString DESC_SecConsole ${LANG_ENGLISH} "Install Console program on this system."
+  LangString DESC_SecWxConsole ${LANG_ENGLISH} "Install graphical console program on this system."
+  LangString DESC_SecDoc ${LANG_ENGLISH} "Install Documentation on this system."
 
   !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
     !insertmacro MUI_DESCRIPTION_TEXT ${SecService} $(DESC_SecService)
+    !insertmacro MUI_DESCRIPTION_TEXT ${SecConsole} $(DESC_SecConsole)
+    !insertmacro MUI_DESCRIPTION_TEXT ${SecWxConsole} $(DESC_SecWxConsole)
     !insertmacro MUI_DESCRIPTION_TEXT ${SecDoc} $(DESC_SecDoc)
   !insertmacro MUI_FUNCTION_DESCRIPTION_END
 
@@ -192,17 +268,32 @@ Section "Uninstall"
   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
   DeleteRegKey HKLM "Software\Bacula"
 
+  ; remove start menu items
+  SetShellVarContext all
+  Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
+
   ; remove files and uninstaller (preserving config for now)
   CopyFiles /SILENT "$INSTDIR\bin\bacula-fd.conf" "$INSTDIR\bacula-fd.conf"
+  IfFileExists "$INSTDIR\bin\bconsole.conf" save_bconsole nosave_bconsole
+  save_bconsole:
+  CopyFiles /SILENT "$INSTDIR\bin\bconsole.conf" "$INSTDIR\bconsole.conf"
+  nosave_bconsole:
+  IfFileExists "$INSTDIR\bin\wx-console.conf" save_wxconsole nosave_wxconsole
+  save_wxconsole:
+  CopyFiles /SILENT "$INSTDIR\bin\wx-console.conf" "$INSTDIR\wx-console.conf"
+  nosave_wxconsole:
   Delete /REBOOTOK "$INSTDIR\bin\*.*"
   Delete /REBOOTOK "$INSTDIR\doc\*.*"
   CopyFiles /SILENT "$INSTDIR\bacula-fd.conf" "$INSTDIR\bin\bacula-fd.conf"
-  Delete /REBOOTOK "$INSTDIR\bacula-fd.conf"
+  CopyFiles /SILENT "$INSTDIR\bconsole.conf" "$INSTDIR\bin\bconsole.conf"
+  CopyFiles /SILENT "$INSTDIR\wx-console.conf" "$INSTDIR\bin\wx-console.conf"
+  Delete /REBOOTOK "$INSTDIR\*.conf"
   Delete /REBOOTOK "$INSTDIR\Uninstall.exe"
 
   ; Check for existing installation
-  MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to delete the current configuration file ($INSTDIR\bin\bacula-fd.conf)?" IDNO LeaveConfig
-  Delete /REBOOTOK "$INSTDIR\bin\bacula-fd.conf"
+  MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to delete the current configuration files and the working state file?" IDNO LeaveConfig
+  Delete /REBOOTOK "$INSTDIR\bin\*.conf"
+  Delete /REBOOTOK "$INSTDIR\working\*"
   ; remove directories used
   RMDir "$INSTDIR\bin"
   RMDir "$INSTDIR\doc"
@@ -210,6 +301,7 @@ Section "Uninstall"
   RMDir "$INSTDIR"
   RMDir "C:\tmp"
   LeaveConfig:
+  RMDir "$SMPROGRAMS\Bacula"
   
 SectionEnd