From 297e61af3e6f980fe8a4b48b230a6701dd6906cc Mon Sep 17 00:00:00 2001 From: Karsten Heimrich Date: Wed, 3 Jun 2015 17:14:30 +0200 Subject: Fix maintenance tool upgrade on OSX. Before rename we need to delete a possible existing file, otherwise it will fail and the installation is messed up. Change-Id: I6ade434f828f11b38c00b52eabeb1c574557ec5a Reviewed-by: Jonathan Courtois Reviewed-by: Kai Koehne --- src/libs/installer/packagemanagercore_p.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/libs') diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index f318a47bb..7d2864cfb 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -1005,6 +1005,15 @@ void PackageManagerCorePrivate::writeMaintenanceToolBinary(QFile *const input, q QInstaller::appendInt64(&dataOut, 4 * sizeof(qint64)); // data block size QInstaller::appendInt64(&dataOut, BinaryContent::MagicUninstallerMarker); QInstaller::appendInt64(&dataOut, BinaryContent::MagicCookie); + + { + QFile dummy(resourcePath.filePath(QLatin1String("installer.dat"))); + if (dummy.exists() && !dummy.remove()) { + throw Error(tr("Could not remove data file '%1': %2").arg(dummy.fileName(), + dummy.errorString())); + } + } + if (!dataOut.rename(resourcePath.filePath(QLatin1String("installer.dat")))) { throw Error(tr("Could not write maintenance tool data to %1: %2").arg(out.fileName(), out.errorString())); -- cgit v1.2.3