summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/packagemanagercore_p.cpp
diff options
context:
space:
mode:
authorKarsten Heimrich <karsten.heimrich@theqtcompany.com>2015-06-03 17:14:30 +0200
committerKarsten Heimrich <karsten.heimrich@theqtcompany.com>2015-06-03 15:28:43 +0000
commit297e61af3e6f980fe8a4b48b230a6701dd6906cc (patch)
tree32fddcd8b89a296ba58ea93b779b6cdaf7977307 /src/libs/installer/packagemanagercore_p.cpp
parent4d8d5273a2434c60562cae13c0a08d4bc2fd642f (diff)
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 <jonathan.courtois@gmail.com> Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Diffstat (limited to 'src/libs/installer/packagemanagercore_p.cpp')
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp9
1 files changed, 9 insertions, 0 deletions
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()));