# HG changeset patch # User Andre Heinecke # Date 1409315280 -7200 # Node ID 01128d63226d23dd36fc7f27d4d794411f14cc45 # Parent d92b1594e974babb7dafdccb077a2f196403919b Copy the windows files recursively into the temporary directory diff -r d92b1594e974 -r 01128d63226d ui/createinstallerdialog.cpp --- a/ui/createinstallerdialog.cpp Fri Aug 29 13:10:11 2014 +0200 +++ b/ui/createinstallerdialog.cpp Fri Aug 29 14:28:00 2014 +0200 @@ -383,6 +383,31 @@ return true; } +bool copyPath(QString src, QString dst) +{ + QDir dir(src); + if (! dir.exists()) { + qDebug() << "Source directory does not exist."; + return false; + } + + foreach (QString d, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) { + QString dst_path = dst + QDir::separator() + d; + dir.mkpath(dst_path); + if (!copyPath(src+ QDir::separator() + d, dst_path)) { + qDebug() << "Failed to copy subdirectory; " << d; + return false; + } + } + + foreach (QString f, dir.entryList(QDir::Files)) { + if (!QFile::copy(src + QDir::separator() + f, dst + QDir::separator() + f)) { + qDebug() << "Failed to copy: " << f; + return false; + } + } + return true; +} QTemporaryDir *CreateInstallerDialog::codesignBinaries(const QDir& sourceDir) { QTemporaryDir* target = new QTemporaryDir(); @@ -390,17 +415,20 @@ mProgress.setLabelText(tr("Signing binaries...")); mProgress.show(); + + /* Copy the whole directory. */ + if (!copyPath(sourceDir.path(), target->path())) { + qDebug() << "Copy failed."; + showErrorMessage(tr("Failed to copy binaries to temporary location.")); + mProgress.cancel(); + return NULL; + } + /* Sign the top level .exe files */ foreach (const QFileInfo& entry, sourceDir.entryInfoList()) { QString targetPath = target->path() + QString::fromLatin1("/") + entry.fileName(); if (entry.fileName() == "." || entry.fileName() == "..") { continue; } - if (!QFile::copy(entry.absoluteFilePath(), targetPath)) { - qDebug() << "Failed to copy: " << entry.absoluteFilePath() << " to: " << targetPath; - showErrorMessage(tr("Failed to copy binaries to temporary location.")); - mProgress.cancel(); - return NULL; - } if (entry.suffix() == "exe") { if (!signFile(targetPath)) { showErrorMessage(tr("Failed to sign binaries with osslsigncode.\n"