4
0
mirror of https://github.com/QuasarApp/installer-framework.git synced 2025-05-05 17:49:34 +00:00

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

@ -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

@ -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@";

@ -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));
settings.setValue(QLatin1String("NoModify"), 0);
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
}

@ -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();
}

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

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

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