From 48873eb0fb179e13ed9449c04ddf931b297e8cf7 Mon Sep 17 00:00:00 2001 From: Arttu Tarkiainen Date: Tue, 14 Jun 2022 15:48:55 +0300 Subject: 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 --- src/libs/installer/packagemanagercore_p.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/libs/installer/packagemanagercore_p.cpp') 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; -- cgit v1.2.3