diff options
author | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2022-06-14 15:48:55 +0300 |
---|---|---|
committer | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2022-06-15 10:24:02 +0300 |
commit | 48873eb0fb179e13ed9449c04ddf931b297e8cf7 (patch) | |
tree | 45d7defd7d4d8a835c888a32a7053ca648eed89a /src | |
parent | f7e2226c7c1223095e556f07994caddc07b223d5 (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.cpp | 8 |
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; |