Merge pull request #2060 from nextcloud/backport-2058-better-error-message-for-installation-error-9

[stable9] Use a better error message and point the users to the support channels
This commit is contained in:
Morris Jobke 2016-11-09 14:02:11 +01:00 committed by GitHub
commit aef790a346
3 changed files with 21 additions and 7 deletions

View File

@ -556,10 +556,13 @@ class OC_Installer{
if ($softErrors) {
try {
OC_Installer::installShippedApp($filename);
} catch (\Doctrine\DBAL\Exception\TableExistsException $e) {
} catch (\OC\HintException $e) {
if ($e->getPrevious() instanceof \Doctrine\DBAL\Exception\TableExistsException) {
$errors[$filename] = $e;
continue;
}
throw $e;
}
} else {
OC_Installer::installShippedApp($filename);
}
@ -585,7 +588,15 @@ class OC_Installer{
//install the database
$appPath = OC_App::getAppPath($app);
if(is_file("$appPath/appinfo/database.xml")) {
try {
OC_DB::createDbFromStructure("$appPath/appinfo/database.xml");
} catch (\Doctrine\DBAL\Exception\TableExistsException $e) {
throw new \OC\HintException(
'Failed to enable app ' . $app,
'Please ask for help via one of our <a href="https://nextcloud.com/support/" target="_blank" rel="noreferrer">support channels</a>.',
0, $e
);
}
}
//run appinfo/install.php

View File

@ -212,6 +212,10 @@ class Updater extends BasicEmitter {
$success = true;
try {
$this->doUpgrade($currentVersion, $installedVersion);
} catch (HintException $exception) {
$this->log->logException($exception, ['app' => 'core']);
$this->emit('\OC\Updater', 'failure', array($exception->getMessage() . ': ' .$exception->getHint()));
$success = false;
} catch (\Exception $exception) {
$this->log->logException($exception, ['app' => 'core']);
$this->emit('\OC\Updater', 'failure', array(get_class($exception) . ': ' .$exception->getMessage()));

View File

@ -28,9 +28,8 @@
<?php if($_['admin']) { ?>
<li>
<a href="https://github.com/nextcloud/server/blob/master/CONTRIBUTING.md"
target="_blank" rel="noreferrer">
<?php p($l->t('Issue tracker')); ?>
<a href="https://nextcloud.com/support/" target="_blank" rel="noreferrer">
<?php p($l->t('Getting help')); ?>
</a>
</li>
<?php } ?>