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 6241839e7f77a716574e2188ffdae94a1b636951..b98debcf604a2c26529eb1043e665c7bcc2fad56 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.
      */