diff options
author | Katja Marttila <katja.marttila@qt.io> | 2022-08-30 11:18:57 +0300 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2022-08-30 11:18:57 +0300 |
commit | 9d21873aa89f943cccd3f7711004621f4f9764f1 (patch) | |
tree | fafeaa003add54079ccae253ec2ee83dc20173d1 /src/libs/installer/packagemanagercore_p.cpp | |
parent | 798f844242f855a46a082abacf6c4c4175f10eca (diff) | |
parent | 20d77b84483ace747fa2fcc269c00d4093701818 (diff) |
Merge remote-tracking branch 'origin/4.4' into master
Change-Id: I54ae9e455d055abf321ba5c7c02301a889ef7ee2
Diffstat (limited to 'src/libs/installer/packagemanagercore_p.cpp')
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 1d4302e12..de093db82 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -2530,6 +2530,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 @@ -2542,6 +2550,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"; @@ -2553,10 +2562,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(); @@ -2564,11 +2575,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")); |