--- a/codesys-ide/scripts/helper.py
+++ b/codesys-ide/scripts/helper.py
@@ -24,7 +24,6 @@
             dirname = os.path.dirname(os.path.relpath(filename, basepath))
             if dirname.startswith(".."):
                 dirname = os.path.dirname(filename).lstrip("/")
-            
             destdir = os.path.join(destination, dirname)
             if not os.path.exists(destdir):
                 os.mkdir(destdir)
@@ -43,7 +42,6 @@
 def install_library(url, librarymanager):
     if not url.startswith("http"):
         return
-    
     downloaddir = os.path.join(os.environ["USERPROFILE"], "downloads")
     if not os.path.exists(downloaddir):
         os.makedirs(downloaddir)
@@ -54,7 +52,7 @@
     web_client = WebClient()
     web_client.DownloadFile(url, localname)
     repo = librarymanager.repositories[0]
-    print("*** installing %s\n" % url)
+    print("*** installing %s from %s to %s\n" % (localname, url, repo))
     librarymanager.install_library (localname, repo, True)
 
 
@@ -66,10 +64,8 @@
 #
 def install_requirements(library_filename, librarymanager):
     reqfilename = os.path.splitext(library_filename)[0] + ".requirements"
-    
     if os.path.isfile(reqfilename):
         reqfile = open(reqfilename, "r")
-        
         for req in reqfile:
             req = req.strip()
             print("installing requirement '%s'." % req.strip())
@@ -80,23 +76,50 @@
 #
 def install_missing_libraries(proj, librarymanager):
     print("*** install missing libraries")
-    
     # compile a regular expression to match lib placeholders
     p = re.compile('[^,]+, [^(]+\([^)]+\)')
-    
     # search for libman
     objects = proj.get_children(recursive=True)
     for object in objects:
         if object.is_libman:
-            print("*** found library manager")
-            for libref in iter(object):
+            print("*** parsing library manager...")
+            libs = list()
+            try:
+                libs = iter(object)
+            except:
+                pass
+
+            for libref in libs:
                 libInfo = str(libref)
+                # check if this library object has all attribute objects, that we need
+                if not hasattr(libref, 'name'):
+                    print("library has no attribute 'name'")
+                    continue
+                if not hasattr(libref, 'default_resolution'):
+                    print("library has no attribute 'default_resolution'")
+                    continue
+                if not hasattr(libref, 'effective_resolution'):
+                    print("library has no attribute 'effective_resolution'")
+                    continue
+                if not hasattr(libref, 'is_placeholder'):
+                    print("library has no attribute 'is_placeholder'")
+                    continue
+
+                print("placeholder: %s: %s => %s" % (libref.name, libref.default_resolution, libref.effective_resolution))
                 if libref.is_placeholder:
+                    params = libref.parameters
+                    for name in params:
+                        print("   param: %s => %s" % (name, params[name]))
+
                     if libref.effective_resolution is None and libref.default_resolution is not None:
                         libInfo = str(libref.default_resolution)
                         m = re.findall('([^,]+), ([^(]+) \(([^)]+)\)', libInfo)
                         if len(m) > 0:
                             libname, libversion, libvendor = m[0]
+                            if libversion == "*":
+                                print("***")
+                                print("*** %s has no effective resolution version. You need to set an effective version in the project!" % libInfo)
+                                print("***")
                             indexurl = "https://store.codesys.com/CODESYSLibs/%s/%s/%s/index" % (libvendor, libname, libversion)
                             web_client = WebClient()
                             try:
@@ -104,9 +127,18 @@
                             except:
                                 filename = None
 
-                            if filename != None:
-                                liburl = "https://store.codesys.com/CODESYSLibs/%s/%s/%s/%s" % (libvendor, libname, libversion, filename)
-                                install_library(liburl, librarymanager)
+                            try:
+                                if filename != None:
+                                    liburl = "https://store.codesys.com/CODESYSLibs/%s/%s/%s/%s" % (libvendor, libname, libversion, filename)
+                                    install_library(liburl, librarymanager)
+                                    print("---- finished install.")
+                            except:
+                                print("***  installation of library %s failed" % libInfo)
+                elif libref.is_managed:
+                    print("library: %s: %s" % (libref.name, libref.managed_library.version))
+                else:
+                    print("library: " + libref.name)
+            print("... ended parsing library manager")
 
 
 #
@@ -114,7 +146,6 @@
 #
 def update_device(proj, device_repository):
     print("*** update device")
-    
     # search for devices to update
     objects = proj.get_children(recursive=True)
     for object in objects: