fix 2 bugs with addon installation
[blender-staging.git] / release / scripts / startup / bl_ui / space_userpref.py
index a8d8c4120631c4142ab425af968fa1a651c2a0b4..5c28f12b7f1c5131a0c1cfd2a4e3e0468bea6a12 100644 (file)
@@ -1106,7 +1106,8 @@ class WM_OT_addon_install(bpy.types.Operator):
         del pyfile_dir
         # done checking for exceptional case
 
-        contents = set(os.listdir(path_addons))
+        addon_files_old = set(os.listdir(path_addons))
+        addons_old = {mod.__name__ for mod in addon_utils.modules(USERPREF_PT_addons._addons_fake_modules)}
 
         #check to see if the file is in compressed format (.zip)
         if zipfile.is_zipfile(pyfile):
@@ -1155,11 +1156,13 @@ class WM_OT_addon_install(bpy.types.Operator):
                 traceback.print_exc()
                 return {'CANCELLED'}
 
+        addons_new = {mod.__name__ for mod in addon_utils.modules(USERPREF_PT_addons._addons_fake_modules)} - addons_old
+        addons_new.discard("modules")
+
         # disable any addons we may have enabled previously and removed.
         # this is unlikely but do just incase. bug [#23978]
-        addons_new = set(os.listdir(path_addons)) - contents
         for new_addon in addons_new:
-            addon_utils.disable(os.path.splitext(new_addon)[0])
+            addon_utils.disable(new_addon)
 
         # possible the zip contains multiple addons, we could disallow this
         # but for now just use the first
@@ -1172,6 +1175,9 @@ class WM_OT_addon_install(bpy.types.Operator):
                 context.window_manager.addon_search = info["name"]
                 break
 
+        # incase a new module path was created to install this addon.
+        bpy.utils.refresh_script_paths()
+
         # TODO, should not be a warning.
         # self.report({'WARNING'}, "File installed to '%s'\n" % path_dest)
         return {'FINISHED'}