diff --git a/typo3/sysext/extensionmanager/Classes/Controller/ActionController.php b/typo3/sysext/extensionmanager/Classes/Controller/ActionController.php index 396fa62be9c36443f25e7d0d259672c1f316529e..d01c363f76034b19809195d465d1662fa56d873c 100644 --- a/typo3/sysext/extensionmanager/Classes/Controller/ActionController.php +++ b/typo3/sysext/extensionmanager/Classes/Controller/ActionController.php @@ -95,9 +95,6 @@ class ActionController extends AbstractController { $success = TRUE; $message = ''; try { - if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded($extension)) { - $this->installUtility->uninstall($extension); - } $this->installUtility->removeExtension($extension); } catch (\TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException $e) { $message = $e->getMessage(); diff --git a/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php b/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php index 6c5316ffe559c4e37453532d115c1a01c0786d98..9a95c7acd55759603336d45a39a2ff5b998519d8 100644 --- a/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php +++ b/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php @@ -363,7 +363,13 @@ class InstallUtility implements \TYPO3\CMS\Core\SingletonInterface { public function removeExtension($extension) { $absolutePath = $this->fileHandlingUtility->getAbsoluteExtensionPath($extension); if ($this->fileHandlingUtility->isValidExtensionPath($absolutePath)) { - $this->fileHandlingUtility->removeDirectory($absolutePath); + if ($this->packageManager->isPackageAvailable($extension)) { + // Package manager deletes the extension and removes the entry from PackageStates.php + $this->packageManager->deletePackage($extension); + } else { + // The extension is not listed in PackageStates.php, we can safely remove it + $this->fileHandlingUtility->removeDirectory($absolutePath); + } } else { throw new \TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException('No valid extension path given.', 1342875724); }