diff --git a/src/appdb.js b/src/appdb.js index fe54a5f52..631e36d5f 100644 --- a/src/appdb.js +++ b/src/appdb.js @@ -338,14 +338,17 @@ function setInstallationCommand(appId, installationState, values, callback) { // uninstall is allowed in any state // force update is allowed in any state including pending_uninstall! (for better or worse) // restore is allowed from installed or error state - // update and configure are allowed only in installed state + // configure is allowed in installed state or currently configuring or in error state + // update and backup are allowed only in installed state if (installationState === exports.ISTATE_PENDING_UNINSTALL || installationState === exports.ISTATE_PENDING_FORCE_UPDATE) { updateWithConstraints(appId, values, '', callback); } else if (installationState === exports.ISTATE_PENDING_RESTORE) { updateWithConstraints(appId, values, 'AND (installationState = "installed" OR installationState = "error")', callback); - } else if (installationState === exports.ISTATE_PENDING_UPDATE || installationState === exports.ISTATE_PENDING_CONFIGURE || installationState === exports.ISTATE_PENDING_BACKUP) { + } else if (installationState === exports.ISTATE_PENDING_UPDATE || installationState === exports.ISTATE_PENDING_BACKUP) { updateWithConstraints(appId, values, 'AND installationState = "installed"', callback); + } else if (installationState === exports.ISTATE_PENDING_CONFIGURE) { + updateWithConstraints(appId, values, 'AND installationState = "installed" OR installationState = "pending_configure" OR installationState = "error"', callback); } else { callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, 'invalid installationState')); } diff --git a/webadmin/src/views/apps.html b/webadmin/src/views/apps.html index ec8e05b32..47d988f0f 100644 --- a/webadmin/src/views/apps.html +++ b/webadmin/src/views/apps.html @@ -334,7 +334,7 @@ - + @@ -355,7 +355,7 @@ -