fix(Apps): fix install command check on existing apps

- AppManager::isInstalled() is misleading, as it checks only whether it is
  enabled. But an app might not be present in some edge cases.
- AppManager::getAppPath() does however only check whether an app dir is
  present, independent of the enabled-state.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
pull/55832/head
Arthur Schiwon 2025-09-12 11:48:28 +07:00
parent 06f6a1f177
commit 8afffd8538
1 changed files with 4 additions and 1 deletions

@ -9,6 +9,7 @@ declare(strict_types=1);
namespace OC\Core\Command\App;
use OC\Installer;
use OCP\App\AppPathNotFoundException;
use OCP\App\IAppManager;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
@ -58,9 +59,11 @@ class Install extends Command {
$appId = $input->getArgument('app-id');
$forceEnable = (bool)$input->getOption('force');
if ($this->appManager->isEnabledForAnyone($appId)) {
try {
$this->appManager->getAppPath($appId);
$output->writeln($appId . ' already installed');
return 1;
} catch (AppPathNotFoundException) {
}
try {