summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorArttu Tarkiainen <arttu.tarkiainen@qt.io>2022-06-14 15:48:55 +0300
committerArttu Tarkiainen <arttu.tarkiainen@qt.io>2022-06-15 10:24:02 +0300
commit48873eb0fb179e13ed9449c04ddf931b297e8cf7 (patch)
tree45d7defd7d4d8a835c888a32a7053ca648eed89a /src
parentf7e2226c7c1223095e556f07994caddc07b223d5 (diff)
MT: Quote paths for UninstallString and ModifyPath registry values
This has reportedly caused problems on some Windows 10 versions, where trying to uninstall the program via Control Panel didn't work when the target directory contained spaces. Could not reproduce the issue with version 21H2, but the added quotes should not hurt either. Task-number: QTIFW-2479 Change-Id: I4d9712df859acf2690d8e47f19b9f2a8d0a2496f Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp
index 66630b98d..5e4ee6ffb 100644
--- a/src/libs/installer/packagemanagercore_p.cpp
+++ b/src/libs/installer/packagemanagercore_p.cpp
@@ -2586,6 +2586,10 @@ void PackageManagerCorePrivate::deleteMaintenanceToolAlias()
void PackageManagerCorePrivate::registerMaintenanceTool()
{
#ifdef Q_OS_WIN
+ auto quoted = [](const QString &s) {
+ return QString::fromLatin1("\"%1\"").arg(s);
+ };
+
QSettingsWrapper settings(registerPath(), QSettings::NativeFormat);
settings.setValue(scDisplayName, m_data.value(QLatin1String("ProductName")));
settings.setValue(QLatin1String("DisplayVersion"), m_data.value(QLatin1String("ProductVersion")));
@@ -2596,8 +2600,8 @@ void PackageManagerCorePrivate::registerMaintenanceTool()
settings.setValue(QLatin1String("Comments"), m_data.value(scTitle));
settings.setValue(QLatin1String("InstallDate"), QDateTime::currentDateTime().toString());
settings.setValue(QLatin1String("InstallLocation"), QDir::toNativeSeparators(targetDir()));
- settings.setValue(QLatin1String("UninstallString"), maintenanceTool);
- settings.setValue(QLatin1String("ModifyPath"), QString(maintenanceTool
+ settings.setValue(QLatin1String("UninstallString"), quoted(maintenanceTool));
+ settings.setValue(QLatin1String("ModifyPath"), QString(quoted(maintenanceTool)
+ QLatin1String(" --manage-packages")));
// required disk space of the installed components
quint64 estimatedSizeKB = m_core->requiredDiskSpace() / 1024;