From 3dc11b67ae37eefede1c22d41907eb52e35438b4 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Tue, 5 Feb 2013 08:56:55 +0000
Subject: [PATCH] BIS-272: Installer assumes update only if installation path
 folder exists and contains 'bin' and 'servers'.

SVN: 28292
---
 .../izpack/GlobalInstallationContext.java     | 31 +++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/GlobalInstallationContext.java b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/GlobalInstallationContext.java
index 6241839e7f7..b98debcf604 100644
--- a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/GlobalInstallationContext.java
+++ b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/GlobalInstallationContext.java
@@ -79,8 +79,8 @@ public class GlobalInstallationContext
     {
         String installPath = data.getInstallPath();
         installDir = new File(installPath);
-        isFirstTimeInstallation = (installDir.exists() == false);
-        isUpdateInstallation = installDir.exists();
+        isUpdateInstallation = installationExists();
+        isFirstTimeInstallation = isUpdateInstallation == false;
 
         String postgresBinPath = "";
         if (isFirstTimeInstallation == false)
@@ -99,6 +99,33 @@ public class GlobalInstallationContext
         }
     }
 
+    private static boolean installationExists()
+    {
+        if (installDir.exists() == false)
+        {
+            return false;
+        }
+        File[] files = installDir.listFiles();
+        boolean binExists = false;
+        boolean serversExists = false;
+        if (files != null)
+        {
+            for (File file : files)
+            {
+                String fileName = file.getName();
+                if (fileName.equals("bin"))
+                {
+                    binExists = true;
+                }
+                if (fileName.equals("servers"))
+                {
+                    serversExists = true;
+                }
+            }
+        }
+        return binExists && serversExists;
+    }
+
     /**
      * Return the data directory chosen for this installation.
      */
-- 
GitLab