diff options
Diffstat (limited to 'src/libs/installer/createlocalrepositoryoperation.cpp')
-rw-r--r-- | src/libs/installer/createlocalrepositoryoperation.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/libs/installer/createlocalrepositoryoperation.cpp b/src/libs/installer/createlocalrepositoryoperation.cpp index e05c34b91..286cc9b5b 100644 --- a/src/libs/installer/createlocalrepositoryoperation.cpp +++ b/src/libs/installer/createlocalrepositoryoperation.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -34,8 +34,7 @@ #include "fileio.h" #include "fileutils.h" #include "copydirectoryoperation.h" -#include "lib7z_create.h" -#include "lib7z_facade.h" +#include "archivefactory.h" #include "packagemanagercore.h" #include "productkeycheck.h" #include "constants.h" @@ -124,8 +123,17 @@ static QString createArchive(const QString repoPath, const QString &sourceDir, c const QString fileName = QString::fromLatin1("/%1meta.7z").arg(version); QFile archive(repoPath + fileName); - QInstaller::openForWrite(&archive); - Lib7z::createArchive(&archive, QStringList() << sourceDir); + + QScopedPointer<AbstractArchive> archiveFile(ArchiveFactory::instance().create(archive.fileName())); + if (!archiveFile) { + throw Error(CreateLocalRepositoryOperation::tr("Unsupported archive \"%1\": no handler " + "registered for file suffix \"%2\".").arg(archive.fileName(), QFileInfo(archive.fileName()).suffix())); + } + if (!(archiveFile->open(QIODevice::WriteOnly) && archiveFile->create(QStringList() << sourceDir))) { + throw Error(CreateLocalRepositoryOperation::tr("Cannot create archive \"%1\": %2") + .arg(QDir::toNativeSeparators(archive.fileName()), archiveFile->errorString())); + } + archiveFile->close(); removeFiles(sourceDir, helper); // cleanup the files we compressed if (!archive.rename(sourceDir + fileName)) { throw Error(CreateLocalRepositoryOperation::tr("Cannot move file \"%1\" to \"%2\": %3") @@ -356,10 +364,6 @@ bool CreateLocalRepositoryOperation::performOperation() } } catch (...) {} setValue(QLatin1String("local-repo"), repoPath); - } catch (const Lib7z::SevenZipException &e) { - setError(UserDefinedError); - setErrorString(e.message()); - return false; } catch (const QInstaller::Error &e) { setError(UserDefinedError); setErrorString(e.message()); @@ -374,7 +378,7 @@ bool CreateLocalRepositoryOperation::performOperation() bool CreateLocalRepositoryOperation::undoOperation() { - if (parseUndoOperationArguments().count() > 0) + if (skipUndoOperation()) return true; if (!checkArgumentCount(2)) |