From d5e8edc9bdf1741dae4c3c471f8249faaf2f9f40 Mon Sep 17 00:00:00 2001 From: master3395 Date: Mon, 19 Jan 2026 23:39:48 +0100 Subject: [PATCH] Fix plugin ZIP structure for installation - Add plugin name as directory prefix in ZIP file - pluginInstaller expects ZIP to contain plugin_name/ directory - Fixes installation failure where plugin directory was not created --- pluginHolder/views.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pluginHolder/views.py b/pluginHolder/views.py index 3aab35342..1bd67dc8d 100644 --- a/pluginHolder/views.py +++ b/pluginHolder/views.py @@ -708,6 +708,7 @@ def install_from_store(request, plugin_name): logging.writeToFile(f"Found {len(plugin_files)} files for plugin {plugin_name}") # Create plugin ZIP file + # pluginInstaller expects the ZIP to contain plugin_name/ directory structure plugin_zip = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) for file_path in plugin_files: @@ -715,7 +716,9 @@ def install_from_store(request, plugin_name): relative_path = file_path[len(plugin_prefix):] if relative_path: # Skip directories file_data = repo_zip.read(file_path) - plugin_zip.writestr(relative_path, file_data) + # Add plugin name as directory prefix (pluginInstaller expects this) + zip_entry_path = f'{plugin_name}/{relative_path}' + plugin_zip.writestr(zip_entry_path, file_data) plugin_zip.close()