From fc37cb9824b1c73a88f9a1e495e814bafa19fc8d Mon Sep 17 00:00:00 2001 From: Katja Marttila Date: Wed, 18 May 2022 12:28:11 +0300 Subject: Replace QSettingsWrapper::Format with QSettings::Format This changes allows in follow-up commits to access windows registy with other than just NativeFormat. This is needed for 32-bit applications to access 64-bit registry and 64-bit application s to access 32-bit registry. Change-Id: I0b88f4eaa499e53e10162ae5343b95d06ddbfc27 Reviewed-by: Arttu Tarkiainen --- .../installer/environmentvariablesoperation.cpp | 6 ++--- src/libs/installer/globalsettingsoperation.cpp | 4 ++-- src/libs/installer/packagemanagercore.cpp | 2 +- src/libs/installer/packagemanagercore_p.cpp | 12 +++++----- src/libs/installer/packagemanagercoredata.cpp | 11 ++++----- src/libs/installer/qsettingswrapper.cpp | 18 ++++++--------- src/libs/installer/qsettingswrapper.h | 26 +++++++++------------- src/libs/installer/registerfiletypeoperation.cpp | 6 ++--- src/libs/installer/settingsoperation.cpp | 6 ++--- src/libs/installer/utils.cpp | 2 +- 10 files changed, 43 insertions(+), 50 deletions(-) (limited to 'src/libs') diff --git a/src/libs/installer/environmentvariablesoperation.cpp b/src/libs/installer/environmentvariablesoperation.cpp index 2f55172e1..902687164 100644 --- a/src/libs/installer/environmentvariablesoperation.cpp +++ b/src/libs/installer/environmentvariablesoperation.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -122,7 +122,7 @@ UpdateOperation::Error writeSetting(const QString ®Path, QString *oldValue) { oldValue->clear(); - SettingsType registry(regPath, QSettingsWrapper::NativeFormat); + SettingsType registry(regPath, QSettings::NativeFormat); if (!registry.isWritable()) { *errorString = UpdateOperation::tr("Registry path %1 is not writable.").arg(regPath); return UpdateOperation::UserDefinedError; @@ -156,7 +156,7 @@ UpdateOperation::Error undoSetting(const QString ®Path, { QString actual; { - SettingsType registry(regPath, QSettingsWrapper::NativeFormat); + SettingsType registry(regPath, QSettings::NativeFormat); actual = registry.value(name).toString(); } diff --git a/src/libs/installer/globalsettingsoperation.cpp b/src/libs/installer/globalsettingsoperation.cpp index dc085f4b6..9608bba66 100644 --- a/src/libs/installer/globalsettingsoperation.cpp +++ b/src/libs/installer/globalsettingsoperation.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -128,7 +128,7 @@ QSettingsWrapper *GlobalSettingsOperation::setup(QString *key, QString *value, c const QString &filename = arguments.at(0); *key = arguments.at(1); *value = arguments.at(2); - return new QSettingsWrapper(filename, QSettingsWrapper::NativeFormat); + return new QSettingsWrapper(filename, QSettings::NativeFormat); } return nullptr; diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 9110d0c91..a62aa8940 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -981,7 +981,7 @@ void PackageManagerCore::rollBackInstallation() */ bool PackageManagerCore::isFileExtensionRegistered(const QString &extension) const { - QSettingsWrapper settings(QLatin1String("HKEY_CLASSES_ROOT"), QSettingsWrapper::NativeFormat); + QSettingsWrapper settings(QLatin1String("HKEY_CLASSES_ROOT"), QSettings::NativeFormat); return settings.value(QString::fromLatin1(".%1/Default").arg(extension)).isValid(); } diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 45fe890f9..8723af76f 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -127,10 +127,10 @@ static void deferredRename(const QString &oldName, const QString &newName, bool // Check if .vbs extension can be used for running renaming script. If not, create own extension QString extension = QLatin1String(".vbs"); - QSettingsWrapper settingRoot(QLatin1String("HKEY_CLASSES_ROOT\\.vbs"), QSettingsWrapper::NativeFormat); + QSettingsWrapper settingRoot(QLatin1String("HKEY_CLASSES_ROOT\\.vbs"), QSettings::NativeFormat); if (settingRoot.value(QLatin1String(".")).toString() != QLatin1String("VBSFile")) { extension = QLatin1String(".qtInstaller"); - QSettingsWrapper settingsUser(QLatin1String("HKEY_CURRENT_USER\\Software\\Classes"), QSettingsWrapper::NativeFormat); + QSettingsWrapper settingsUser(QLatin1String("HKEY_CURRENT_USER\\Software\\Classes"), QSettings::NativeFormat); QString value = settingsUser.value(extension).toString(); if (value != QLatin1String("VBSFile")) settingsUser.setValue(extension, QLatin1String("VBSFile")); @@ -861,7 +861,7 @@ void PackageManagerCorePrivate::writeMaintenanceConfigFiles() QVariantHash variables; // Do not change to QVariantMap! Breaks existing .ini files, // cause the variant types do not match while restoring the variables from the file. - QSettingsWrapper cfg(iniPath, QSettingsWrapper::IniFormat); + QSettingsWrapper cfg(iniPath, QSettings::IniFormat); foreach (const QString &key, m_data.keys()) { if (key == scRunProgramDescription || key == scRunProgram || key == scRunProgramArguments) continue; @@ -930,7 +930,7 @@ void PackageManagerCorePrivate::writeMaintenanceConfigFiles() void PackageManagerCorePrivate::readMaintenanceConfigFiles(const QString &targetDir) { QSettingsWrapper cfg(targetDir + QLatin1Char('/') + m_data.settings().maintenanceToolIniFile(), - QSettingsWrapper::IniFormat); + QSettings::IniFormat); const QVariantHash v = cfg.value(QLatin1String("Variables")).toHash(); // Do not change to // QVariantMap! Breaks reading from existing .ini files, cause the variant types do not match. for (QVariantHash::const_iterator it = v.constBegin(); it != v.constEnd(); ++it) { @@ -2569,7 +2569,7 @@ void PackageManagerCorePrivate::deleteMaintenanceToolAlias() void PackageManagerCorePrivate::registerMaintenanceTool() { #ifdef Q_OS_WIN - QSettingsWrapper settings(registerPath(), QSettingsWrapper::NativeFormat); + QSettingsWrapper settings(registerPath(), QSettings::NativeFormat); settings.setValue(scDisplayName, m_data.value(QLatin1String("ProductName"))); settings.setValue(QLatin1String("DisplayVersion"), m_data.value(QLatin1String("ProductVersion"))); const QString maintenanceTool = QDir::toNativeSeparators(maintenanceToolName()); @@ -2613,7 +2613,7 @@ void PackageManagerCorePrivate::registerMaintenanceTool() void PackageManagerCorePrivate::unregisterMaintenanceTool() { #ifdef Q_OS_WIN - QSettingsWrapper settings(registerPath(), QSettingsWrapper::NativeFormat); + QSettingsWrapper settings(registerPath(), QSettings::NativeFormat); settings.remove(QString()); #endif } diff --git a/src/libs/installer/packagemanagercoredata.cpp b/src/libs/installer/packagemanagercoredata.cpp index 567f97785..c72ff65fc 100644 --- a/src/libs/installer/packagemanagercoredata.cpp +++ b/src/libs/installer/packagemanagercoredata.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -35,6 +35,7 @@ #include #include #include +#include #ifdef Q_OS_WIN # include @@ -145,7 +146,7 @@ void PackageManagerCoreData::addDynamicPredefinedVariables() QString dirX64 = dir; #ifdef Q_OS_WIN QSettingsWrapper current(QLatin1String("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion") - , QSettingsWrapper::NativeFormat); + , QSettings::NativeFormat); BOOL onWow64Or64bit = TRUE; #ifndef Q_OS_WIN64 IsWow64Process(GetCurrentProcess(), &onWow64Or64bit); @@ -167,9 +168,9 @@ void PackageManagerCoreData::addDynamicPredefinedVariables() #ifdef Q_OS_WIN QSettingsWrapper user(QLatin1String("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\" - "CurrentVersion\\Explorer\\User Shell Folders"), QSettingsWrapper::NativeFormat); + "CurrentVersion\\Explorer\\User Shell Folders"), QSettings::NativeFormat); QSettingsWrapper system(QLatin1String("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\" - "CurrentVersion\\Explorer\\Shell Folders"), QSettingsWrapper::NativeFormat); + "CurrentVersion\\Explorer\\Shell Folders"), QSettings::NativeFormat); const QString programs = user.value(QLatin1String("Programs"), QString()).toString(); const QString allPrograms = system.value(QLatin1String("Common Programs"), QString()) @@ -252,7 +253,7 @@ QVariant PackageManagerCoreData::value(const QString &key, const QVariant &_defa static const QRegExp regex(QLatin1String("\\\\|/")); const QString filename = key.section(regex, 0, -2); const QString regKey = key.section(regex, -1); - const QSettingsWrapper registry(filename, QSettingsWrapper::NativeFormat); + const QSettingsWrapper registry(filename, QSettings::NativeFormat); if (!filename.isEmpty() && !regKey.isEmpty() && registry.contains(regKey)) return registry.value(regKey).toString(); } diff --git a/src/libs/installer/qsettingswrapper.cpp b/src/libs/installer/qsettingswrapper.cpp index f57750bc1..f2dd53767 100644 --- a/src/libs/installer/qsettingswrapper.cpp +++ b/src/libs/installer/qsettingswrapper.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -107,18 +107,18 @@ QSettingsWrapper::QSettingsWrapper(QSettingsWrapper::Scope scope, const QString { } -QSettingsWrapper::QSettingsWrapper(QSettingsWrapper::Format format, QSettingsWrapper::Scope scope, +QSettingsWrapper::QSettingsWrapper(QSettings::Format format, QSettingsWrapper::Scope scope, const QString &organization, const QString &application, QObject *parent) : RemoteObject(QLatin1String(Protocol::QSettings), parent) - , d(new Private(static_cast(format), static_cast (scope), + , d(new Private(format, static_cast (scope), organization, application)) { } -QSettingsWrapper::QSettingsWrapper(const QString &fileName, QSettingsWrapper::Format format, +QSettingsWrapper::QSettingsWrapper(const QString &fileName, QSettings::Format format, QObject *parent) : RemoteObject(QLatin1String(Protocol::QSettings), parent) - , d(new Private(fileName, static_cast(format))) + , d(new Private(fileName, format)) { } @@ -222,10 +222,10 @@ QString QSettingsWrapper::fileName() const return d->settings.fileName(); } -QSettingsWrapper::Format QSettingsWrapper::format() const +QSettings::Format QSettingsWrapper::format() const { // No need to talk to the server, we've setup the local settings object the same way. - return static_cast(d->settings.format()); + return d->settings.format(); } QString QSettingsWrapper::group() const @@ -316,10 +316,6 @@ QVariant QSettingsWrapper::value(const QString ¶m1, const QVariant ¶m2) bool QSettingsWrapper::createSocket() const { - if ((d->m_format != QSettings::NativeFormat) && (d->m_format != QSettings::IniFormat)) { - Q_ASSERT_X(false, Q_FUNC_INFO, "Settings wrapper only supports QSettingsWrapper::NativeFormat" - " and QSettingsWrapper::IniFormat."); - } return (const_cast(this))->connectToServer(QVariantList() << d->m_application << d->m_organization << d->m_scope << d->m_format << d->m_filename); } diff --git a/src/libs/installer/qsettingswrapper.h b/src/libs/installer/qsettingswrapper.h index c9e6d6265..92221c117 100644 --- a/src/libs/installer/qsettingswrapper.h +++ b/src/libs/installer/qsettingswrapper.h @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -34,6 +34,8 @@ #include +#include + namespace QInstaller { class INSTALLER_EXPORT QSettingsWrapper : public RemoteObject @@ -48,12 +50,6 @@ public: FormatError }; - enum Format { - NativeFormat, - IniFormat, - InvalidFormat = 16 - }; - enum Scope { UserScope, SystemScope @@ -63,9 +59,9 @@ public: const QString &application = QString(), QObject *parent = 0); QSettingsWrapper(Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = 0); - QSettingsWrapper(Format format, Scope scope, const QString &organization, + QSettingsWrapper(QSettings::Format format, Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = 0); - QSettingsWrapper(const QString &fileName, Format format, QObject *parent = 0); + QSettingsWrapper(const QString &fileName, QSettings::Format format, QObject *parent = 0); ~QSettingsWrapper(); void clear(); @@ -96,7 +92,7 @@ public: bool fallbacksEnabled() const; QString fileName() const; - Format format() const; + QSettings::Format format() const; Scope scope() const; QString organizationName() const; QString applicationName() const; @@ -113,24 +109,24 @@ private: // we cannot support the following functionality void setIniCodec(const char * /*codecName*/); QTextCodec *iniCodec() const { return 0; } - static void setDefaultFormat(Format /*format*/); - static Format defaultFormat() { return NativeFormat; } + static void setDefaultFormat(QSettings::Format /*format*/); + static QSettings::Format defaultFormat() { return QSettings::NativeFormat; } static void setSystemIniPath(const QString & /*dir*/); static void setUserIniPath(const QString & /*dir*/); - static void setPath(Format /*format*/, Scope /*scope*/, const QString & /*path*/); + static void setPath(QSettings::Format /*format*/, Scope /*scope*/, const QString & /*path*/); typedef QMap SettingsMap; typedef bool(*ReadFunc)(QIODevice &device, SettingsMap &map); typedef bool(*WriteFunc)(QIODevice &device, const SettingsMap &map); - static Format registerFormat(const QString &extension, ReadFunc readFunc, WriteFunc writeFunc, + static QSettings::Format registerFormat(const QString &extension, ReadFunc readFunc, WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive) { Q_UNUSED(extension) Q_UNUSED(readFunc) Q_UNUSED(writeFunc) Q_UNUSED(caseSensitivity) - return NativeFormat; + return QSettings::NativeFormat; } private: diff --git a/src/libs/installer/registerfiletypeoperation.cpp b/src/libs/installer/registerfiletypeoperation.cpp index c1ee7a038..1754b664d 100644 --- a/src/libs/installer/registerfiletypeoperation.cpp +++ b/src/libs/installer/registerfiletypeoperation.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -105,7 +105,7 @@ bool RegisterFileTypeOperation::performOperation() allUsers = true; QSettingsWrapper settings(QLatin1String(allUsers ? "HKEY_LOCAL_MACHINE" : "HKEY_CURRENT_USER") - , QSettingsWrapper::NativeFormat); + , QSettings::NativeFormat); const QString classesProgId = QString::fromLatin1("Software/Classes/") + m_progId; const QString classesFileType = QString::fromLatin1("Software/Classes/.%2").arg(args.at(0)); @@ -166,7 +166,7 @@ bool RegisterFileTypeOperation::undoOperation() allUsers = true; QSettingsWrapper settings(QLatin1String(allUsers ? "HKEY_LOCAL_MACHINE" : "HKEY_CURRENT_USER") - , QSettingsWrapper::NativeFormat); + , QSettings::NativeFormat); const QString classesProgId = QString::fromLatin1("Software/Classes/") + m_progId; const QString classesFileType = QString::fromLatin1("Software/Classes/.%2").arg(args.at(0)); diff --git a/src/libs/installer/settingsoperation.cpp b/src/libs/installer/settingsoperation.cpp index c5fe8384c..4c983b17a 100644 --- a/src/libs/installer/settingsoperation.cpp +++ b/src/libs/installer/settingsoperation.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -120,7 +120,7 @@ bool SettingsOperation::performOperation() } setValue(QLatin1String("createddir"), mkDirOperation.value(QLatin1String("createddir"))); - QSettingsWrapper settings(path, QSettingsWrapper::IniFormat); + QSettingsWrapper settings(path, QSettings::IniFormat); if (method == QLatin1String("set")) settings.setValue(key, aValue); else if (method == QLatin1String("remove")) @@ -162,7 +162,7 @@ bool SettingsOperation::undoOperation() bool cleanUp = false; { // kill the scope to kill settings object, else remove file will not work - QSettingsWrapper settings(path, QSettingsWrapper::IniFormat); + QSettingsWrapper settings(path, QSettings::IniFormat); if (method == QLatin1String("set")) { settings.remove(key); } else if (method == QLatin1String("add_array_value")) { diff --git a/src/libs/installer/utils.cpp b/src/libs/installer/utils.cpp index 5294d00f6..e9fb45f2a 100644 --- a/src/libs/installer/utils.cpp +++ b/src/libs/installer/utils.cpp @@ -492,7 +492,7 @@ bool QInstaller::checkPrivilege(const wchar_t *privilege) bool QInstaller::developerModeEnabled() { QSettingsWrapper appModelUnlock(QLatin1String("HKLM\\SOFTWARE\\Microsoft\\Windows\\" - "CurrentVersion\\AppModelUnlock"), QSettingsWrapper::NativeFormat); + "CurrentVersion\\AppModelUnlock"), QSettings::NativeFormat); return appModelUnlock.value(QLatin1String("AllowDevelopmentWithoutDevLicense"), false).toBool(); } -- cgit v1.2.3