diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp index ca20939773fbac528a08f12f08fd38ad7dee8e5a..7fbffe9096414e3776c758c553f41b124c6e7e16 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp @@ -273,6 +273,15 @@ S60DeviceRunControl::S60DeviceRunControl(QSharedPointer<RunConfiguration> runCon this, SLOT(makesisProcessFailed())); connect(m_makesis, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(makesisProcessFinished())); + m_signsis = new QProcess(this); + connect(m_signsis, SIGNAL(readyReadStandardError()), + this, SLOT(readStandardError())); + connect(m_signsis, SIGNAL(readyReadStandardOutput()), + this, SLOT(readStandardOutput())); + connect(m_signsis, SIGNAL(error(QProcess::ProcessError)), + this, SLOT(signsisProcessFailed())); + connect(m_signsis, SIGNAL(finished(int,QProcess::ExitStatus)), + this, SLOT(signsisProcessFinished())); } void S60DeviceRunControl::start() @@ -280,14 +289,16 @@ void S60DeviceRunControl::start() QSharedPointer<S60DeviceRunConfiguration> rc = runConfiguration().dynamicCast<S60DeviceRunConfiguration>(); Q_ASSERT(!rc.isNull()); + Qt4Project *project = qobject_cast<Qt4Project *>(runConfiguration()->project()); + m_baseFileName = rc->basePackageFilePath(); m_workingDirectory = QFileInfo(m_baseFileName).absolutePath(); + m_qtDir = project->qtVersion(project->activeBuildConfiguration())->path(); emit started(); emit addToOutputWindow(this, tr("Creating %1.sisx ...").arg(QDir::toNativeSeparators(m_baseFileName))); - Qt4Project *project = qobject_cast<Qt4Project *>(runConfiguration()->project()); Q_ASSERT(project); m_toolsDirectory = S60Manager::instance()->devices()->deviceForId( S60Manager::instance()->deviceIdFromDetectionSource( @@ -328,23 +339,45 @@ void S60DeviceRunControl::readStandardOutput() } void S60DeviceRunControl::makesisProcessFailed() +{ + processFailed("makesis.exe", m_makesis->error()); +} + +void S60DeviceRunControl::makesisProcessFinished() +{ + QString signsisTool = m_toolsDirectory + "/signsis.exe"; + QString sisFile = QFileInfo(m_baseFileName + ".sis").fileName(); + QString sisxFile = QFileInfo(m_baseFileName + ".sisx").fileName(); + QStringList arguments; + arguments << sisFile << sisxFile << (m_qtDir + "/selfsigned.cer") << (m_qtDir + "/selfsigned.key"); + m_signsis->setWorkingDirectory(m_workingDirectory); + emit addToOutputWindow(this, QString::fromLatin1("%1 %2").arg(signsisTool, arguments.join(tr(" ")))); + m_signsis->start(signsisTool, arguments, QIODevice::ReadOnly); +} + +void S60DeviceRunControl::signsisProcessFailed() +{ + processFailed("signsis.exe", m_signsis->error()); +} + +void S60DeviceRunControl::signsisProcessFinished() +{ + emit addToOutputWindow(this, tr("Finished.")); + emit finished(); +} + +void S60DeviceRunControl::processFailed(const QString &program, QProcess::ProcessError errorCode) { QString errorString; - switch (m_makesis->error()) { + switch (errorCode) { case QProcess::FailedToStart: - errorString = tr("Failed to start makesis.exe."); + errorString = tr("Failed to start %1."); break; case QProcess::Crashed: - errorString = tr("makesis.exe has unexpectedly finished."); + errorString = tr("%1 has unexpectedly finished."); break; default: - errorString = tr("Some error has occurred while running makesis.exe."); + errorString = tr("Some error has occurred while running %1."); } - error(this, errorString); -} - -void S60DeviceRunControl::makesisProcessFinished() -{ - emit addToOutputWindow(this, tr("Finished.")); - emit finished(); + error(this, errorString.arg(program)); } diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h index 2a1c7b5db256258dcabcd3897e664df2ecd3f9b1..b5f3db1d54901124d34b18e2803f11910439292c 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h @@ -96,11 +96,16 @@ private slots: void readStandardOutput(); void makesisProcessFailed(); void makesisProcessFinished(); + void signsisProcessFailed(); + void signsisProcessFinished(); private: + void processFailed(const QString &program, QProcess::ProcessError errorCode); + QString m_baseFileName; QString m_workingDirectory; QString m_toolsDirectory; + QString m_qtDir; QProcess *m_makesis; QProcess *m_signsis; QProcess *m_install;