From fe6ffb8c5240f4b6bf4a8119d4ee5a44d58e6eec Mon Sep 17 00:00:00 2001 From: YAMAMOTO Atsushi Date: Fri, 19 Aug 2022 13:30:36 +0900 Subject: Set encoding to UTF-8 when writing license file License files are read in UTF-8 but written out in the system encoding. This will cause garbled characters. Task-number: QTIFW-1436 Change-Id: I52049d207499609a9cfc3e2a7059882067cc9256 Reviewed-by: Tim Jenssen --- src/libs/installer/licenseoperation.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/libs/installer') diff --git a/src/libs/installer/licenseoperation.cpp b/src/libs/installer/licenseoperation.cpp index a5a61c71f..7d2ea38e3 100644 --- a/src/libs/installer/licenseoperation.cpp +++ b/src/libs/installer/licenseoperation.cpp @@ -87,6 +87,7 @@ bool LicenseOperation::performOperation() } QTextStream stream(&file); + stream.setCodec("UTF-8"); stream << it.value().toString(); } -- cgit v1.2.3 From 5a9c1f81626ae525898a7652ab1489ffa4d2be96 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Atsushi Date: Fri, 19 Aug 2022 13:59:10 +0900 Subject: Do not convert newline characters in license files Framework users expect license files to be copied as is. Task-number: QTIFW-903 Change-Id: I32e3a2a19c242049599407818fcd5e9abb33af0c Reviewed-by: Tasuku Suzuki Reviewed-by: Tim Jenssen --- src/libs/installer/licenseoperation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/libs/installer') diff --git a/src/libs/installer/licenseoperation.cpp b/src/libs/installer/licenseoperation.cpp index 7d2ea38e3..dc863c1da 100644 --- a/src/libs/installer/licenseoperation.cpp +++ b/src/libs/installer/licenseoperation.cpp @@ -80,7 +80,7 @@ bool LicenseOperation::performOperation() for (QVariantMap::const_iterator it = licenses.constBegin(); it != licenses.constEnd(); ++it) { QFile file(targetDir + QLatin1Char('/') + it.key()); - if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) { + if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { setError(UserDefinedError); setErrorString(tr("Can not write license file \"%1\".").arg(QDir::toNativeSeparators(file.fileName()))); return false; -- cgit v1.2.3 From 32fa423ff96a59929eb9a4d64aef3f7d6aded0af Mon Sep 17 00:00:00 2001 From: YAMAMOTO Atsushi Date: Fri, 22 Jul 2022 17:47:14 +0900 Subject: Uninstaller remove installerResources directory The installerResources directory is created with the ExtractArchiveOperation::performOperation() function. But it is not removed from anywhere. Remove it with the ExtractArchiveOperation::undoOperation. Task-number: QTIFW-884 Change-Id: I46e3e3676b5d276e0c0029943070c1eeb2a6e39e Reviewed-by: Tasuku Suzuki Reviewed-by: Tim Jenssen --- src/libs/installer/extractarchiveoperation.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/libs/installer') diff --git a/src/libs/installer/extractarchiveoperation.cpp b/src/libs/installer/extractarchiveoperation.cpp index 5ff2d9a1a..6b9ecb687 100644 --- a/src/libs/installer/extractarchiveoperation.cpp +++ b/src/libs/installer/extractarchiveoperation.cpp @@ -259,6 +259,9 @@ bool ExtractArchiveOperation::undoOperation() if (!useStringListType) deleteDataFile(m_relocatedDataFileName); + // Remove the installerResources directory if it is empty. + QDir(targetDir).rmdir(QLatin1String("installerResources")); + return true; } -- cgit v1.2.3 From 82946e86ccd51362a2807cdc07dd57c305acd998 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Atsushi Date: Mon, 25 Jul 2022 11:02:32 +0900 Subject: Uninstaller remove maintenancetool's data files maintenancetool create dat,ini,xml and txt files on installation. Remove these files on uninstallation. Task-number: QTIFW-884 Change-Id: I10a268678f1a4285f4a2fd6a749570f707f0dbc2 Reviewed-by: Tasuku Suzuki Reviewed-by: Tim Jenssen --- src/libs/installer/packagemanagercore_p.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/libs/installer') diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 66630b98d..34b8ce079 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -2508,6 +2508,14 @@ void PackageManagerCorePrivate::setComponentSelection(const QString &id, Qt::Che void PackageManagerCorePrivate::deleteMaintenanceTool() { + QDir resourcePath(QFileInfo(maintenanceToolName()).dir()); + resourcePath.remove(QLatin1String("installer.dat")); + QDir installDir(targetDir()); + installDir.remove(m_data.settings().maintenanceToolName() + QLatin1String(".dat")); + installDir.remove(QLatin1String("network.xml")); + installDir.remove(m_data.settings().maintenanceToolIniFile()); + QInstaller::VerboseWriter::instance()->setFileName(QString()); + installDir.remove(m_core->value(QLatin1String("LogFileName"), QLatin1String("InstallationLog.txt"))); #ifdef Q_OS_WIN // Since Windows does not support that the maintenance tool deletes itself we have to go with a rather dirty // hack. What we do is to create a batchfile that will try to remove the maintenance tool once per second. Then -- cgit v1.2.3 From 20d77b84483ace747fa2fcc269c00d4093701818 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Atsushi Date: Mon, 25 Jul 2022 10:36:10 +0900 Subject: Uninstaller remove target directory if it is empty When RemoveTargetDir flag is set false, then uninstall.vbs stops with error. Pass to script the correct arguments. And remove the target directory only if it is empty. Task-number: QTIFW-884 Change-Id: I722bfffbecaa6f7f27e545af354649bf17f7a0ae Reviewed-by: Tasuku Suzuki Reviewed-by: Tim Jenssen --- src/libs/installer/packagemanagercore_p.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'src/libs/installer') diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 34b8ce079..571072bea 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -2528,6 +2528,7 @@ void PackageManagerCorePrivate::deleteMaintenanceTool() if (!f.open(QIODevice::WriteOnly | QIODevice::Text)) throw Error(tr("Cannot prepare removal")); + const bool removeTargetDir = QVariant(m_core->value(scRemoveTargetDir)).toBool(); QTextStream batch(&f); batch << "Set fso = WScript.CreateObject(\"Scripting.FileSystemObject\")\n"; batch << "file = WScript.Arguments.Item(0)\n"; @@ -2539,10 +2540,12 @@ void PackageManagerCorePrivate::deleteMaintenanceTool() batch << " fso.DeleteFile(file)\n"; batch << " WScript.Sleep(1000)\n"; batch << "wend\n"; -// batch << "if folder.SubFolders.Count = 0 and folder.Files.Count = 0 then\n"; + if (!removeTargetDir) + batch << "if folder.SubFolders.Count = 0 and folder.Files.Count = 0 then\n"; batch << " Set folder = Nothing\n"; batch << " fso.DeleteFolder folderpath, true\n"; -// batch << "end if\n"; + if (!removeTargetDir) + batch << "end if\n"; batch << "fso.DeleteFile(WScript.ScriptFullName)\n"; f.close(); @@ -2550,11 +2553,7 @@ void PackageManagerCorePrivate::deleteMaintenanceTool() QStringList arguments; arguments << QLatin1String("//Nologo") << batchfile; // execute the batchfile arguments << QDir::toNativeSeparators(QFileInfo(installerBinaryPath()).absoluteFilePath()); - if (!m_performedOperationsOld.isEmpty()) { - const Operation *const op = m_performedOperationsOld.first(); - if (op->name() == QLatin1String("Mkdir")) // the target directory name - arguments << QDir::toNativeSeparators(QFileInfo(op->arguments().first()).absoluteFilePath()); - } + arguments << targetDir(); if (!QProcessWrapper::startDetached(QLatin1String("cscript"), arguments, QDir::rootPath())) throw Error(tr("Cannot start removal")); -- cgit v1.2.3