diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp index 7fbffe9096414e3776c758c553f41b124c6e7e16..a2e4e2ac32593ceeb922745e638cec5f056214f8 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp @@ -282,6 +282,15 @@ S60DeviceRunControl::S60DeviceRunControl(QSharedPointer<RunConfiguration> runCon this, SLOT(signsisProcessFailed())); connect(m_signsis, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(signsisProcessFinished())); + m_install = new QProcess(this); + connect(m_install, SIGNAL(readyReadStandardError()), + this, SLOT(readStandardError())); + connect(m_install, SIGNAL(readyReadStandardOutput()), + this, SLOT(readStandardOutput())); + connect(m_install, SIGNAL(error(QProcess::ProcessError)), + this, SLOT(installProcessFailed())); + connect(m_install, SIGNAL(finished(int,QProcess::ExitStatus)), + this, SLOT(installProcessFinished())); } void S60DeviceRunControl::start() @@ -308,7 +317,7 @@ void S60DeviceRunControl::start() QString makesisTool = m_toolsDirectory + "/makesis.exe"; QString packageFile = QFileInfo(m_baseFileName + ".pkg").fileName(); m_makesis->setWorkingDirectory(m_workingDirectory); - emit addToOutputWindow(this, QString::fromLatin1("%1 %2").arg(makesisTool, packageFile)); + emit addToOutputWindow(this, tr("%1 %2").arg(QDir::toNativeSeparators(makesisTool), packageFile)); m_makesis->start(makesisTool, QStringList() << packageFile, QIODevice::ReadOnly); @@ -345,13 +354,20 @@ void S60DeviceRunControl::makesisProcessFailed() void S60DeviceRunControl::makesisProcessFinished() { + if (m_makesis->exitStatus() != 0) { + error(this, tr("An error occurred while creating the package.")); + emit finished(); + return; + } 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"); + arguments << sisFile + << sisxFile << QDir::toNativeSeparators(m_qtDir + "/selfsigned.cer") + << QDir::toNativeSeparators(m_qtDir + "/selfsigned.key"); m_signsis->setWorkingDirectory(m_workingDirectory); - emit addToOutputWindow(this, QString::fromLatin1("%1 %2").arg(signsisTool, arguments.join(tr(" ")))); + emit addToOutputWindow(this, tr("%1 %2").arg(QDir::toNativeSeparators(signsisTool), arguments.join(tr(" ")))); m_signsis->start(signsisTool, arguments, QIODevice::ReadOnly); } @@ -361,6 +377,26 @@ void S60DeviceRunControl::signsisProcessFailed() } void S60DeviceRunControl::signsisProcessFinished() +{ + if (m_signsis->exitStatus() != 0) { + error(this, tr("An error occurred while creating the package.")); + emit finished(); + return; + } + QString applicationInstaller = "cmd.exe"; + QStringList arguments; + arguments << "/C" << QDir::toNativeSeparators(m_baseFileName + ".sisx"); + m_install->setWorkingDirectory(m_workingDirectory); + emit addToOutputWindow(this, tr("%1 %2").arg(QDir::toNativeSeparators(applicationInstaller), arguments.join(tr(" ")))); + m_install->start(applicationInstaller, arguments, QIODevice::ReadOnly); +} + +void S60DeviceRunControl::installProcessFailed() +{ + processFailed("ApplicationInstaller", m_install->error()); +} + +void S60DeviceRunControl::installProcessFinished() { emit addToOutputWindow(this, tr("Finished.")); emit finished(); diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h index b5f3db1d54901124d34b18e2803f11910439292c..95cf62fa69a688142267c3292f8b93addc158731 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h @@ -98,6 +98,8 @@ private slots: void makesisProcessFinished(); void signsisProcessFailed(); void signsisProcessFinished(); + void installProcessFailed(); + void installProcessFinished(); private: void processFailed(const QString &program, QProcess::ProcessError errorCode);