]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/win32/win32_installer/InstallType.nsh
Restore win32 dir from Branch-5.2 and update it
[bacula/bacula] / bacula / src / win32 / win32_installer / InstallType.nsh
diff --git a/bacula/src/win32/win32_installer/InstallType.nsh b/bacula/src/win32/win32_installer/InstallType.nsh
new file mode 100644 (file)
index 0000000..e4a9711
--- /dev/null
@@ -0,0 +1,93 @@
+Function EnterInstallType
+  Push $R0
+  Push $R1
+  Push $R2
+
+  ; Check if this is an upgrade by looking for an uninstaller configured 
+  ; in the registry.
+  ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString"
+
+  ${If} "$R0" != ""
+    ; Check registry for new installer
+    ReadRegStr $R1 HKLM "Software\Bacula" "InstallLocation"
+    ${If} "$R1" != ""
+      ; New Installer 
+      StrCpy $OldInstallDir $R1
+      StrCpy $InstallType ${UpgradeInstall}
+
+      SetShellVarContext all
+
+      StrCpy $R1 "$APPDATA\Bacula"
+      StrCpy $R2 "$INSTDIR\Doc"
+
+      ReadRegDWORD $PreviousComponents HKLM "Software\Bacula" "Components"
+
+      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 1" "Text" "A previous installation has been found in $OldInstallDir.  Please choose the installation type for any additional components you select."
+      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 5" "Text" "The configuration files for additional components will be generated using defaults applicable to most installations."
+      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 6" "Text" "You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work."
+
+      ReadRegDWORD $ConfigDirectorDB HKLM Software\Bacula Database
+
+      ${If} $ConfigDirectorDB = 0
+        IntOp $R0 $PreviousComponents & ${ComponentDirector}
+        ${If} $R0 <> 0
+          StrCpy $ConfigDirectorDB 1
+        ${EndIf}
+      ${EndIf}
+    ${Else}
+      ; Processing Upgrade - Get Install Directory
+      ${StrRep} $R0 $R0 '"' ''
+      ${GetParent} $R0 $OldInstallDir
+
+      ; Old Installer 
+      StrCpy $InstallType ${MigrateInstall}
+      StrCpy $R1 "$OldInstallDir\bin"
+      StrCpy $R2 "$OldInstallDir\Doc"
+
+      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 1" "Text" "An old installation has been found in $OldInstallDir.  The Configuration will be migrated.  Please choose the installation type for any additional components you select."
+      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 5" "Text" "The software will be installed in the default directory $\"C:\Program Files\Bacula$\".  The configuration files for additional components will be generated using defaults applicable to most installations."
+      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 6" "Text" "You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work."
+    ${EndIf}
+  ${Else}
+    ; New Install
+    StrCpy $InstallType ${NewInstall}
+    WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 5" "Text" "The software will be installed in the default directory $\"C:\Program Files\Bacula$\".  The configuration files will be generated using defaults applicable to most installations."
+    WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 6" "Text" "You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work."
+  ${EndIf}
+
+  ${If} $InstallType <> ${NewInstall}
+  ${AndIf} $PreviousComponents = 0
+    ${If} ${FileExists} "$R1\bacula-fd.conf"
+      IntOp $PreviousComponents $PreviousComponents | ${ComponentFile}
+    ${EndIf}
+    ${If} ${FileExists} "$R1\bconsole.conf"
+      IntOp $PreviousComponents $PreviousComponents | ${ComponentTextConsole}
+    ${EndIf}
+    ${If} ${FileExists} "$R1\bat.conf"
+      IntOp $PreviousComponents $PreviousComponents | ${ComponentBatConsole}
+    ${EndIf}
+    ${If} ${FileExists} "$R2\main.pdf"
+      IntOp $PreviousComponents $PreviousComponents | ${ComponentPDFDocs}
+    ${EndIf}
+  ${EndIf}
+
+  !InsertMacro MUI_HEADER_TEXT "$(TITLE_InstallType)" "$(SUBTITLE_InstallType)"
+  !InsertMacro MUI_INSTALLOPTIONS_INITDIALOG "InstallType.ini"
+  Pop $HDLG ;HWND of dialog
+
+  !insertmacro MUI_INSTALLOPTIONS_SHOW
+
+  ; Process Results
+
+  !insertmacro MUI_INSTALLOPTIONS_READ $R0 "InstallType.ini" "Field 3" "State"
+
+  ${If} $R0 = 1
+    StrCpy $AutomaticInstall 1
+  ${Else}
+    StrCpy $AutomaticInstall 0
+  ${EndIf}
+
+  Pop $R2
+  Pop $R1
+  Pop $R0
+FunctionEnd