sort local versions
diff --git a/code/default/launcher/update_from_github.py b/code/default/launcher/update_from_github.py
index faf95532d5..3a5075c8b0 100644
--- a/code/default/launcher/update_from_github.py
+++ b/code/default/launcher/update_from_github.py
@@ -12,6 +12,7 @@
 current_path = os.path.dirname(os.path.abspath(__file__))
 root_path = os.path.abspath( os.path.join(current_path, os.pardir))
 top_path = os.path.abspath(os.path.join(root_path, os.pardir, os.pardir))
+code_path = os.path.join(root_path, os.pardir)
 data_root = os.path.join(top_path, 'data')
 python_path = os.path.join(root_path, 'python27', '1.0')
 noarch_lib = os.path.join(python_path, 'lib', 'noarch')
@@ -304,13 +305,29 @@ def download_overwrite_new_version(xxnet_version,checkhash=1):
 
 
 def get_local_versions():
-    code_path = os.path.join(root_path, os.pardir)
+    
+    def get_folder_version(folder):
+        f = os.path.join(code_path, folder, "version.txt")
+        try:
+            with open(f) as fd:
+                content = fd.read()
+                p = re.compile(r'([0-9]+)\.([0-9]+)\.([0-9]+)')
+                m = p.match(content)
+                if m:
+                    version = m.group(1) + "." + m.group(2) + "." + m.group(3)
+                    return version
+        except:
+            return False
+
+    
     files_in_code_path = os.listdir(code_path)
     local_versions = []
     for name in files_in_code_path:
-        start_script = os.path.join(code_path, name, "launcher", "start.py")
-        if os.path.isfile(start_script):
-            local_versions.append(name)
+        if os.path.isdir(os.path.join(code_path, name)) :
+            v = get_folder_version(name)
+            if v :
+                local_versions.append([v, name] )
+    local_versions.sort(key= lambda s: map(int, s[0].split('.')) , reverse=True)
     return local_versions
 
 
diff --git a/code/default/launcher/web_control.py b/code/default/launcher/web_control.py
index 6c2a7152f3..e004c3d128 100644
--- a/code/default/launcher/web_control.py
+++ b/code/default/launcher/web_control.py
@@ -525,7 +525,7 @@ def req_update_handler(self):
             for v in local_versions:
                 if not s == "":
                     s += ","
-                s += ' { "v":"%s" } ' % (v)
+                s += ' { "v":"%s" , "folder":"%s" } ' % (v[0],v[1])
             data = '[  %s  ]' %(s)
         elif reqs['cmd'] == ['del_localversion']:
             if update_from_github.del_version( reqs['version'][0] ):
diff --git a/code/default/launcher/web_ui/config_update.html b/code/default/launcher/web_ui/config_update.html
index fc1971293c..842e4e5d8d 100644
--- a/code/default/launcher/web_ui/config_update.html
+++ b/code/default/launcher/web_ui/config_update.html
@@ -338,9 +338,15 @@
                 for(var i = 0 ; i < lv.length; ++i)
                 {
                     var v = lv[i]['v'];
+                    var f = lv[i]['folder'];
                     var new_option = document.getElementById("local-versions-selector").appendChild(document.createElement("option"));
-                    new_option.value=v;
-                    $(new_option).text(v);
+                    new_option.value=f;
+                    t = v;
+                    if (f != v)
+                    {
+                        t += '("' + f + '")'
+                    }
+                    $(new_option).text(t);
                 }
             },
             error: function() {
