diff options
author | Katja Marttila <katja.marttila@theqtcompany.com> | 2016-05-05 15:18:34 +0300 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2016-06-21 04:51:29 +0000 |
commit | 76fd6e8f2953347ea0bf7a57b643968784bc9acc (patch) | |
tree | adc2ed4e61b4778c8995de6760bf514b8e3b3d37 /src/sdk | |
parent | e28bd0a98dd1a7ca0846cd406b23c6e5429ac82d (diff) |
Allow signing maintenancetool in Windows
Signing was not possible for maintenancetool since metadata was
added to binary. Separated metadata to installer.dat like in OS X.
Task-number: QTIFW-667
Change-Id: I74ef307c51a2f43059475dd943d6f0910925fa86
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Diffstat (limited to 'src/sdk')
-rw-r--r-- | src/sdk/sdkapp.h | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/sdk/sdkapp.h b/src/sdk/sdkapp.h index c5cc4ca50..d06cd9eb3 100644 --- a/src/sdk/sdkapp.h +++ b/src/sdk/sdkapp.h @@ -76,21 +76,26 @@ public: installer binary itself, which contains the binary layout and the binary content. In case of an maintenance tool, it will return a binary that has just a binary layout append. - Note on OS X: For compatibility reason this function will return the a .dat file located - inside the resource folder in the application bundle, as on OS X the binary layout cannot - be appended to the actual installer / maintenance tool binary itself because of signing. + Note on OS X and Windows: For compatibility reason this function will return the .dat file + as the binary layout cannot be appended to the actual installer / maintenance tool binary + itself because of signing. .dat file is located inside the resource folder in the application + bundle in OS X and next to maintenance tool in Windows. */ QString binaryFile() const { QString binaryFile = QCoreApplication::applicationFilePath(); -#ifdef Q_OS_OSX - // The installer binary on OSX does not contain the binary content, it's put into - // the resources folder as separate file. Adjust the actual binary path. No error - // checking here since we will fail later while reading the binary content. +#if defined Q_OS_OSX || defined Q_OS_WIN + // The installer binary on OSX and Windows does not contain the binary + // content, it's put into the resources folder as separate file. + // Adjust the actual binary path. No error checking here since we + // will fail later while reading the binary content. QDir resourcePath(QFileInfo(binaryFile).dir()); + +#ifdef Q_OS_OSX resourcePath.cdUp(); resourcePath.cd(QLatin1String("Resources")); - return resourcePath.filePath(QLatin1String("installer.dat")); +#endif + binaryFile = resourcePath.filePath(QLatin1String("installer.dat")); #endif return binaryFile; } @@ -114,6 +119,9 @@ public: QString bundlePath; if (QInstaller::isInBundle(fi.absoluteFilePath(), &bundlePath)) fi.setFile(bundlePath); +#ifdef Q_OS_WIN + return fi.absoluteDir().filePath(qApp->applicationName() + QLatin1String(".dat")); +#endif return fi.absoluteDir().filePath(fi.baseName() + QLatin1String(".dat")); } return QString(); |