diff --git a/DesktopEditor/pluginsmanager/help.h b/DesktopEditor/pluginsmanager/help.h index dc5aac2a3a..0bc73be7f0 100644 --- a/DesktopEditor/pluginsmanager/help.h +++ b/DesktopEditor/pluginsmanager/help.h @@ -125,7 +125,7 @@ L" --update-all = Optional parameter. Update all installed plugins from L" Parameter without value.\n\n" \ L" --remove = Optional parameter. Set comma-separated quoted list of plugins to remove.\n" \ -L" Removing by plugin name or GUID is supported.\n" \ +L" Removing by plugin name, GUID, config path is supported.\n" \ L" For example, --remove=\"Youtube, PhotoEditor, {7327FC95-16DA-41D9-9AF2-0E7F449F6800}\"\n\n" \ L" --remove-all = Optional parameter. Remove all installed plugins.\n" diff --git a/DesktopEditor/pluginsmanager/main.cpp b/DesktopEditor/pluginsmanager/main.cpp index 1f26837f75..1f4f5d9519 100644 --- a/DesktopEditor/pluginsmanager/main.cpp +++ b/DesktopEditor/pluginsmanager/main.cpp @@ -391,7 +391,7 @@ public: InitPlugins(); - if (m_sPluginsDir.length() && m_arrInstalled.size() && m_arrMarketplace.size()) + if (m_sPluginsDir.length() && m_arrMarketplace.size()) { for (size_t i = 0; i < m_arrUpdate.size(); i++) { @@ -734,11 +734,19 @@ private: std::vector arrPlugins; if ( ReadConfigJson(sPlugin, arrPlugins) ) { - // Recursion updating + // Update if plugin exists + // Install if plugin is not installed and not removed before bool _bResult = true; for(size_t i = 0; i < arrPlugins.size(); i++) { - _bResult &= UpdatePlugin(arrPlugins[i]); + CPluginInfo* pPlugin = FindLocalPlugin(arrPlugins[i]); + if ( pPlugin ) + _bResult &= UpdatePlugin(arrPlugins[i]); + else + { + _bResult &= InstallPlugin(arrPlugins[i]); + GetLocalPlugins(false, false); + } } bResult = _bResult; }