Skip to content

Commit

Permalink
Revert "Allow signing maintenancetool in Windows"
Browse files Browse the repository at this point in the history
This reverts commit 76fd6e8.
The change caused that two installation files were needed -
one executable and one dat file. Many users did not find it acceptable.
We need to figure out something else.

Change-Id: Ief12cd47f9897cee8a234d8611a5c18296d42b1c
Reviewed-by: Iikka Eklund <[email protected]>
  • Loading branch information
kahema committed Sep 15, 2016
1 parent fc0b26f commit 49201fd
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 42 deletions.
13 changes: 4 additions & 9 deletions src/libs/installer/packagemanagercore_p.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -995,14 +995,12 @@ void PackageManagerCorePrivate::writeMaintenanceToolBinary(QFile *const input, q

QInstaller::appendData(&out, input, size);
if (writeBinaryLayout) {
#if defined Q_OS_OSX || defined Q_OS_WIN
QDir resourcePath(QFileInfo(maintenanceToolRenamedName).dir());
#ifdef Q_OS_OSX
QDir resourcePath(QFileInfo(maintenanceToolRenamedName).dir());
if (!resourcePath.path().endsWith(QLatin1String("Contents/MacOS")))
throw Error(tr("Maintenance tool is not a bundle"));
resourcePath.cdUp();
resourcePath.cd(QLatin1String("Resources"));
#endif
// It's a bit odd to have only the magic in the data file, but this simplifies
// other code a lot (since installers don't have any appended data either)
QTemporaryFile dataOut;
Expand All @@ -1029,7 +1027,7 @@ void PackageManagerCorePrivate::writeMaintenanceToolBinary(QFile *const input, q
dataOut.setAutoRemove(false);
dataOut.setPermissions(dataOut.permissions() | QFile::WriteUser | QFile::ReadGroup
| QFile::ReadOther);
#elif defined(Q_OS_LINUX)
#else
QInstaller::appendInt64(&out, 0); // operations start
QInstaller::appendInt64(&out, 0); // operations end
QInstaller::appendInt64(&out, 0); // resource count
Expand Down Expand Up @@ -1298,15 +1296,12 @@ void PackageManagerCorePrivate::writeMaintenanceTool(OperationList performedOper
QInstaller::openForRead(&input);
layout = BinaryContent::binaryLayout(&input, BinaryContent::MagicCookieDat);
} catch (const Error &/*error*/) {
#if defined Q_OS_OSX || defined Q_OS_WIN
// On Mac and Windows data is always in a separate file
// so that the binary can be signed
#ifdef Q_OS_OSX
// On Mac, data is always in a separate file so that the binary can be signed
QString binaryName = isInstaller() ? installerBinaryPath() : maintenanceToolName();
QDir dataPath(QFileInfo(binaryName).dir());
#ifdef Q_OS_OSX
dataPath.cdUp();
dataPath.cd(QLatin1String("Resources"));
#endif
input.setFileName(dataPath.filePath(QLatin1String("installer.dat")));

QInstaller::openForRead(&input);
Expand Down
24 changes: 8 additions & 16 deletions src/sdk/sdkapp.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,26 +76,21 @@ class SDKApp : public T
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 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.
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.
*/
QString binaryFile() const
{
QString binaryFile = QCoreApplication::applicationFilePath();
#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
// 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.
QDir resourcePath(QFileInfo(binaryFile).dir());
resourcePath.cdUp();
resourcePath.cd(QLatin1String("Resources"));
#endif
binaryFile = resourcePath.filePath(QLatin1String("installer.dat"));
return resourcePath.filePath(QLatin1String("installer.dat"));
#endif
return binaryFile;
}
Expand All @@ -119,9 +114,6 @@ class SDKApp : public T
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();
Expand Down
9 changes: 2 additions & 7 deletions tools/binarycreator/binarycreator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -241,12 +241,10 @@ static int assemble(Input input, const QInstaller::Settings &settings, const QSt

QTemporaryFile out;
QString targetName = input.outputPath;
#if defined Q_OS_OSX || defined Q_OS_WIN
QDir resourcePath(QFileInfo(input.outputPath).dir());
#ifdef Q_OS_OSX
QDir resourcePath(QFileInfo(input.outputPath).dir());
resourcePath.cdUp();
resourcePath.cd(QLatin1String("Resources"));
#endif
targetName = resourcePath.filePath(QLatin1String("installer.dat"));
#endif

Expand All @@ -264,10 +262,7 @@ static int assemble(Input input, const QInstaller::Settings &settings, const QSt
QInstaller::openForWrite(&out);
QFile exe(input.installerExePath);

#if defined Q_OS_OSX || defined Q_OS_WIN
// remove the target
if (QFile::exists(input.outputPath))
QFile::remove(input.outputPath);
#ifdef Q_OS_OSX
if (!exe.copy(input.outputPath)) {
throw Error(QString::fromLatin1("Cannot copy %1 to %2: %3").arg(exe.fileName(),
input.outputPath, exe.errorString()));
Expand Down
11 changes: 1 addition & 10 deletions tools/devtool/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -173,11 +173,6 @@ int main(int argc, char *argv[])
if (QInstaller::isInBundle(path, &bundlePath))
path = QDir(bundlePath).filePath(QLatin1String("Contents/Resources/installer.dat"));

#ifdef Q_OS_WIN
QDir resourcePath(path);
resourcePath.cdUp();
path = resourcePath.filePath(QLatin1String("installer.dat"));
#endif
int result = EXIT_FAILURE;
QVector<QByteArray> resourceMappings;
quint64 cookie = QInstaller::BinaryContent::MagicCookie;
Expand All @@ -196,12 +191,8 @@ int main(int argc, char *argv[])
QFileInfo fi(path);
if (QInstaller::isInBundle(fi.absoluteFilePath(), &bundlePath))
fi.setFile(bundlePath);
#ifdef Q_OS_WIN
QFileInfo appName = arguments.first();
path = fi.absoluteDir().filePath(appName.baseName() + QLatin1String(".dat"));
#else
path = fi.absolutePath() + QLatin1Char('/') + fi.baseName() + QLatin1String(".dat");
#endif

tmp.close();
tmp.setFileName(path);
QInstaller::openForRead(&tmp);
Expand Down

0 comments on commit 49201fd

Please sign in to comment.