Make support for modifying installations configurable

This patch introduces support for a new setting 'SupportsModify' in the
config.xml file. This is only relevant for Windows installers.

By default (i.e. when omitting) this setting, it
defaults to 'true' which means that the product supports modifying
(i.e. reconfiguring) an existing installations. As such, the 'Modify'
button show in Windows' list of installed programs will be enabled.

Setting this to 'false' will cause the button to be disabled.

Change-Id: I4105f3f0bce67830aa2ee8ae0e6f6abb25c35b30
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
This commit is contained in:
Frerich Raabe 2016-06-21 13:35:35 +02:00 committed by Katja Marttila
parent e8af3a5aa0
commit fc0b26f4d2
7 changed files with 23 additions and 2 deletions

View File

@ -321,6 +321,9 @@
\li Set to \c true if you want to add an extra column into component tree showing install actions.
This extra column indicates whether a component is going to be installed or uninstalled,
or just stay installed or uninstalled.
\row
\li SupportsModify
\li Set to \c false if the product does not support modifying an existing installation.
\endtable

View File

@ -92,6 +92,7 @@ static const QLatin1String scWizardDefaultHeight("WizardDefaultHeight");
static const QLatin1String scUrlQueryString("UrlQueryString");
static const QLatin1String scProductUUID("ProductUUID");
static const QLatin1String scAllUsers("AllUsers");
static const QLatin1String scSupportsModify("SupportsModify");
const char scRelocatable[] = "@RELOCATABLE_PATH@";

View File

@ -2035,7 +2035,13 @@ void PackageManagerCorePrivate::registerMaintenanceTool()
const quint64 limit = std::numeric_limits<quint32>::max(); // maximum 32 bit value
if (estimatedSizeKB <= limit)
settings.setValue(QLatin1String("EstimatedSize"), static_cast<quint32>(estimatedSizeKB));
const bool supportsModify = m_core->value(scSupportsModify, scTrue) == scTrue;
if (supportsModify)
settings.setValue(QLatin1String("NoModify"), 0);
else
settings.setValue(QLatin1String("NoModify"), 1);
settings.setValue(QLatin1String("NoRepair"), 1);
#endif
}

View File

@ -261,7 +261,7 @@ Settings Settings::fromFileAndPrefix(const QString &path, const QString &prefix,
<< scWizardDefaultWidth << scWizardDefaultHeight
<< scRepositorySettingsPageVisible << scTargetConfigurationFile
<< scRemoteRepositories << scTranslations << scUrlQueryString << QLatin1String(scControlScript)
<< scCreateLocalRepository << scInstallActionColumnVisible;
<< scCreateLocalRepository << scInstallActionColumnVisible << scSupportsModify;
Settings s;
s.d->m_data.insert(scPrefix, prefix);
@ -743,3 +743,8 @@ QString Settings::controlScript() const
{
return d->m_data.value(QLatin1String(scControlScript)).toString();
}
bool Settings::supportsModify() const
{
return d->m_data.value(scSupportsModify, true).toBool();
}

View File

@ -157,6 +157,8 @@ public:
QString controlScript() const;
bool supportsModify() const;
private:
class Private;
QSharedDataPointer<Private> d;

View File

@ -57,4 +57,6 @@ File should contain all elements we allow in a config.xml
</Translations>
<ControlScript>controlscript.js</ControlScript>
<SupportsModify>true</SupportsModify>
</Installer>

View File

@ -90,6 +90,8 @@ void tst_Settings::loadTutorialConfig()
QCOMPARE(settings.translations(), QStringList());
QCOMPARE(settings.controlScript(), QString());
QCOMPARE(settings.supportsModify(), true);
}
void tst_Settings::loadFullConfig()