diff options
-rw-r--r-- | doc/installerfw.qdoc | 5 | ||||
-rw-r--r-- | src/libs/installer/commandlineparser.cpp | 2 | ||||
-rw-r--r-- | src/libs/installer/constants.h | 1 | ||||
-rw-r--r-- | src/libs/installer/settings.cpp | 6 | ||||
-rw-r--r-- | src/libs/installer/settings.h | 1 | ||||
-rw-r--r-- | src/sdk/commandlineinterface.cpp | 5 | ||||
-rw-r--r-- | tests/auto/installer/settings/data/full_config.xml | 1 | ||||
-rw-r--r-- | tests/auto/installer/settings/tst_settings.cpp | 1 |
8 files changed, 21 insertions, 1 deletions
diff --git a/doc/installerfw.qdoc b/doc/installerfw.qdoc index 2edc2977b..0a6c7bfe4 100644 --- a/doc/installerfw.qdoc +++ b/doc/installerfw.qdoc @@ -290,6 +290,11 @@ \li Set to \c true if the installation should not ask users to run the authorization fallback in case of authorization errors. Instead abort the installation immediately. \row + \li DisableCommandLineInterface + \li Set to \c true if command line interface features should be disabled. This prevents + the user from passing any consumer command to installer, like \c install, \c update + and \c remove. Other options can still be used normally. Defaults to \c false. + \row \li RepositorySettingsPageVisible \li Set to \c false to hide the repository settings page inside the settings dialog. \row diff --git a/src/libs/installer/commandlineparser.cpp b/src/libs/installer/commandlineparser.cpp index d1e3e89d6..bf40c9bc0 100644 --- a/src/libs/installer/commandlineparser.cpp +++ b/src/libs/installer/commandlineparser.cpp @@ -191,7 +191,7 @@ CommandLineParser::CommandLineParser() // Positional arguments m_parser.addPositionalArgument(CommandLineOptions::scCommand, - QLatin1String("Command to be run by installer."), + QLatin1String("Command to be run by installer. Note that this feature may be disabled by vendor."), QLatin1String("command")); m_parser.addPositionalArgument(CommandLineOptions::scArguments, QLatin1String("Extra arguments for command, each separated by space."), diff --git a/src/libs/installer/constants.h b/src/libs/installer/constants.h index 05728bff3..58660482c 100644 --- a/src/libs/installer/constants.h +++ b/src/libs/installer/constants.h @@ -81,6 +81,7 @@ static const QLatin1String scRunProgramDescription("RunProgramDescription"); static const QLatin1String scTargetConfigurationFile("TargetConfigurationFile"); static const QLatin1String scAllowNonAsciiCharacters("AllowNonAsciiCharacters"); static const QLatin1String scDisableAuthorizationFallback("DisableAuthorizationFallback"); +static const QLatin1String scDisableCommandLineInterface("DisableCommandLineInterface"); static const QLatin1String scRepositorySettingsPageVisible("RepositorySettingsPageVisible"); static const QLatin1String scAllowSpaceInPath("AllowSpaceInPath"); static const QLatin1String scWizardStyle("WizardStyle"); diff --git a/src/libs/installer/settings.cpp b/src/libs/installer/settings.cpp index 4fd006d01..e6395e44c 100644 --- a/src/libs/installer/settings.cpp +++ b/src/libs/installer/settings.cpp @@ -289,6 +289,7 @@ Settings Settings::fromFileAndPrefix(const QString &path, const QString &prefix, << scRunProgram << scRunProgramArguments << scRunProgramDescription << scDependsOnLocalInstallerBinary << scAllowSpaceInPath << scAllowNonAsciiCharacters << scDisableAuthorizationFallback + << scDisableCommandLineInterface << scWizardStyle << scStyleSheet << scTitleColor << scWizardDefaultWidth << scWizardDefaultHeight << scRepositorySettingsPageVisible << scTargetConfigurationFile @@ -567,6 +568,11 @@ bool Settings::disableAuthorizationFallback() const return d->m_data.value(scDisableAuthorizationFallback, false).toBool(); } +bool Settings::disableCommandLineInterface() const +{ + return d->m_data.value(scDisableCommandLineInterface, false).toBool(); +} + bool Settings::dependsOnLocalInstallerBinary() const { return d->m_data.value(scDependsOnLocalInstallerBinary).toBool(); diff --git a/src/libs/installer/settings.h b/src/libs/installer/settings.h index fff2324f1..93e658bd8 100644 --- a/src/libs/installer/settings.h +++ b/src/libs/installer/settings.h @@ -137,6 +137,7 @@ public: bool allowSpaceInPath() const; bool allowNonAsciiCharacters() const; bool disableAuthorizationFallback() const; + bool disableCommandLineInterface() const; bool containsValue(const QString &key) const; QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const; diff --git a/src/sdk/commandlineinterface.cpp b/src/sdk/commandlineinterface.cpp index 1b55b5979..0ddf973d2 100644 --- a/src/sdk/commandlineinterface.cpp +++ b/src/sdk/commandlineinterface.cpp @@ -59,6 +59,11 @@ bool CommandLineInterface::initialize() qCWarning(QInstaller::lcInstallerInstallLog) << errorMessage; return false; } + if (m_core->settings().disableCommandLineInterface()) { + qCWarning(QInstaller::lcInstallerInstallLog) + << "Command line interface support disabled from installer configuration by vendor!"; + return false; + } // Filter the arguments list by removing the command itself // and any key=value pair occurrences. m_positionalArguments = m_parser.positionalArguments(); diff --git a/tests/auto/installer/settings/data/full_config.xml b/tests/auto/installer/settings/data/full_config.xml index 272a1b0d7..304dd21f4 100644 --- a/tests/auto/installer/settings/data/full_config.xml +++ b/tests/auto/installer/settings/data/full_config.xml @@ -38,6 +38,7 @@ File should contain all elements we allow in a config.xml <AllowSpaceInPath>true</AllowSpaceInPath> <AllowNonAsciiCharacters>true</AllowNonAsciiCharacters> <DisableAuthorizationFallback>true</DisableAuthorizationFallback> + <DisableCommandLineInterface>true</DisableCommandLineInterface> <RepositorySettingsPageVisible>false</RepositorySettingsPageVisible> <CreateLocalRepository>false</CreateLocalRepository> <TargetConfigurationFile>components.xml</TargetConfigurationFile> diff --git a/tests/auto/installer/settings/tst_settings.cpp b/tests/auto/installer/settings/tst_settings.cpp index ab8611e12..54bc05e35 100644 --- a/tests/auto/installer/settings/tst_settings.cpp +++ b/tests/auto/installer/settings/tst_settings.cpp @@ -75,6 +75,7 @@ void tst_Settings::loadTutorialConfig() QCOMPARE(settings.allowSpaceInPath(), true); QCOMPARE(settings.allowNonAsciiCharacters(), false); QCOMPARE(settings.disableAuthorizationFallback(), false); + QCOMPARE(settings.disableCommandLineInterface(), false); QCOMPARE(settings.createLocalRepository(), false); QCOMPARE(settings.installActionColumnVisible(), false); |