diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp
index 1775e85255adb9144605228e35bbd6940fb46324..67e89b7322a895ca2500fe305ff62005878d2281 100644
--- a/src/plugins/qt4projectmanager/makestep.cpp
+++ b/src/plugins/qt4projectmanager/makestep.cpp
@@ -109,7 +109,7 @@ bool MakeStep::fromMap(const QVariantMap &map)
     m_userArgs = map.value(QLatin1String(MAKE_ARGUMENTS_KEY)).toStringList();
     m_clean = map.value(QLatin1String(CLEAN_KEY)).toBool();
 
-    return BuildStep::fromMap(map);
+    return ProjectExplorer::AbstractProcessStep::fromMap(map);
 }
 
 bool MakeStep::init()
diff --git a/src/plugins/qt4projectmanager/projectloadwizard.cpp b/src/plugins/qt4projectmanager/projectloadwizard.cpp
index 175a7f6824977e34e051bbf94393a3bf474065fc..b54438e5d94913030d3901e945b92ccd973ba8a2 100644
--- a/src/plugins/qt4projectmanager/projectloadwizard.cpp
+++ b/src/plugins/qt4projectmanager/projectloadwizard.cpp
@@ -34,6 +34,7 @@
 #include "qt4target.h"
 #include "makestep.h"
 #include "qt4buildconfiguration.h"
+#include "qt4projectmanagerconstants.h"
 
 #include "wizards/targetspage.h"
 
@@ -139,7 +140,6 @@ void ProjectLoadWizard::done(int result)
         }
         if (m_project->targets().isEmpty())
             qWarning() << "Failed to populate project with default targets for imported Qt" << m_importVersion->displayName();
-
         return;
     }
 
@@ -160,7 +160,7 @@ void ProjectLoadWizard::done(int result)
     foreach (QtVersion *v, candidates) {
         if (v->isValid())
             defaultVersion = v;
-        if (v->supportsTargetId(DESKTOP_TARGET_ID) && v->isValid())
+        if (v->supportsTargetId(Constants::DESKTOP_TARGET_ID) && v->isValid())
             break;
     }
 
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.cpp
index 61b78f7d3d40ac41df001579ba5347e231835fb3..c6d8f57a9eb7b7719cab9a7ca2bdd3402650afe6 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.cpp
@@ -37,6 +37,7 @@
 #include "maemomanager.h"
 #include "maemorunconfiguration.h"
 #include "maemoruncontrol.h"
+#include "qt4projectmanagerconstants.h"
 
 #include <projectexplorer/projectexplorer.h>
 #include <projectexplorer/projectexplorerconstants.h>
@@ -81,7 +82,7 @@ bool MaemoRunConfigurationFactory::canCreate(Target *parent,
 {
     Qt4Target *target = qobject_cast<Qt4Target *>(parent);
     if (!target
-        || target->id() != QLatin1String(MAEMO_DEVICE_TARGET_ID)) {
+        || target->id() != QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID)) {
         return false;
     }
     return id == MAEMO_RC_ID || id.startsWith(MAEMO_RC_ID_PREFIX);
@@ -102,7 +103,7 @@ bool MaemoRunConfigurationFactory::canClone(Target *parent,
 QStringList MaemoRunConfigurationFactory::availableCreationIds(Target *parent) const
 {
     if (Qt4Target *t = qobject_cast<Qt4Target *>(parent)) {
-        if (t->id() == QLatin1String(MAEMO_DEVICE_TARGET_ID)) {
+        if (t->id() == QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID)) {
             return t->qt4Project()->
                 applicationProFilePathes(QLatin1String(MAEMO_RC_ID_PREFIX));
         }
@@ -181,12 +182,12 @@ void MaemoRunConfigurationFactory::projectRemoved(ProjectExplorer::Project *proj
 void MaemoRunConfigurationFactory::projectChanged(ProjectExplorer::Project *project)
 {
     if (project)
-        updateMaemoEmulatorStarter(project->target(QLatin1String(MAEMO_DEVICE_TARGET_ID)));
+        updateMaemoEmulatorStarter(project->target(QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID)));
 }
 
 void MaemoRunConfigurationFactory::targetAdded(ProjectExplorer::Target *target)
 {
-    if (!target || target->id() != QLatin1String(MAEMO_DEVICE_TARGET_ID))
+    if (!target || target->id() != QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID))
         return;
 
     MaemoManager::instance().addQemuSimulatorStarter(target->project());
@@ -201,7 +202,7 @@ void MaemoRunConfigurationFactory::targetAdded(ProjectExplorer::Target *target)
 
 void MaemoRunConfigurationFactory::targetRemoved(ProjectExplorer::Target *target)
 {
-    if (!target || target->id() != QLatin1String(MAEMO_DEVICE_TARGET_ID))
+    if (!target || target->id() != QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID))
         return;
 
     MaemoManager::instance().removeQemuSimulatorStarter(target->project());
diff --git a/src/plugins/qt4projectmanager/qt-s60/qt-s60.pri b/src/plugins/qt4projectmanager/qt-s60/qt-s60.pri
index 8285a9ee5dda60ebda120af76eea5e45684f8f3b..d845093ab7b51f201b7ff84e0f70ba9cc8e25bc7 100644
--- a/src/plugins/qt4projectmanager/qt-s60/qt-s60.pri
+++ b/src/plugins/qt4projectmanager/qt-s60/qt-s60.pri
@@ -14,7 +14,8 @@ SOURCES += $$PWD/s60devices.cpp \
     $$PWD/s60runconfigbluetoothstarter.cpp \
     $$PWD/abldparser.cpp \
     $$PWD/rvctparser.cpp \
-    $$PWD/winscwparser.cpp
+    $$PWD/winscwparser.cpp \
+    qt-s60/s60createpackagestep.cpp
 HEADERS += $$PWD/s60devices.h \
     $$PWD/s60devicespreferencepane.h \
     $$PWD/s60manager.h \
@@ -27,6 +28,7 @@ HEADERS += $$PWD/s60devices.h \
     $$PWD/s60runconfigbluetoothstarter.h \
     $$PWD/abldparser.h \
     $$PWD/rvctparser.h \
-    $$PWD/winscwparser.h
-FORMS += $$PWD/s60devicespreferencepane.ui
-
+    $$PWD/winscwparser.h \
+    qt-s60/s60createpackagestep.h
+FORMS += $$PWD/s60devicespreferencepane.ui \
+    qt-s60/s60createpackagestep.ui
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a05801b53f8a2e7e76dd0816ab2dd24aa160ce6c
--- /dev/null
+++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp
@@ -0,0 +1,284 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "s60createpackagestep.h"
+
+#include "qt4projectmanagerconstants.h"
+#include "qt4buildconfiguration.h"
+
+#include <projectexplorer/buildconfiguration.h>
+#include <projectexplorer/target.h>
+
+using namespace Qt4ProjectManager::Internal;
+
+namespace {
+    const char * const SIGN_BS_ID = "Qt4ProjectManager.S60SignBuildStep";
+    const char * const SIGNMODE_KEY("Qt4ProjectManager.S60CreatePackageStep.SignMode");
+    const char * const CERTIFICATE_KEY("Qt4ProjectManager.S60CreatePackageStep.Certificate");
+    const char * const KEYFILE_KEY("Qt4ProjectManager.S60CreatePackageStep.Keyfile");
+}
+
+// #pragma mark -- S60SignBuildStep
+
+S60CreatePackageStep::S60CreatePackageStep(ProjectExplorer::BuildConfiguration *bc) :
+    MakeStep(bc, QLatin1String(SIGN_BS_ID)),
+    m_signingMode(SignSelf)
+{
+    ctor_package();
+}
+
+S60CreatePackageStep::S60CreatePackageStep(ProjectExplorer::BuildConfiguration *bc, S60CreatePackageStep *bs) :
+    MakeStep(bc, bs),
+    m_signingMode(bs->m_signingMode),
+    m_customSignaturePath(bs->m_customSignaturePath),
+    m_customKeyPath(bs->m_customKeyPath)
+{
+    ctor_package();
+}
+
+S60CreatePackageStep::S60CreatePackageStep(ProjectExplorer::BuildConfiguration *bc, const QString &id) :
+    MakeStep(bc, id),
+    m_signingMode(SignSelf)
+{
+    ctor_package();
+}
+
+void S60CreatePackageStep::ctor_package()
+{
+    setDisplayName(tr("Create sis Package", "Create sis package build step name"));
+}
+
+S60CreatePackageStep::~S60CreatePackageStep()
+{
+}
+
+QVariantMap S60CreatePackageStep::toMap() const
+{
+    QVariantMap map(MakeStep::toMap());
+    map.insert(QLatin1String(SIGNMODE_KEY), (int)m_signingMode);
+    map.insert(QLatin1String(CERTIFICATE_KEY), m_customSignaturePath);
+    map.insert(QLatin1String(KEYFILE_KEY), m_customKeyPath);
+    return map;
+}
+
+bool S60CreatePackageStep::fromMap(const QVariantMap &map)
+{
+    m_signingMode = (SigningMode)map.value(QLatin1String(SIGNMODE_KEY)).toInt();
+    m_customSignaturePath = map.value(QLatin1String(CERTIFICATE_KEY)).toString();
+    m_customKeyPath = map.value(QLatin1String(KEYFILE_KEY)).toString();
+    return MakeStep::fromMap(map);
+}
+
+bool S60CreatePackageStep::init()
+{
+    if (!MakeStep::init())
+        return false;
+    Qt4BuildConfiguration *bc = qt4BuildConfiguration();
+    ProjectExplorer::Environment environment = bc->environment();
+    if (signingMode() == SignCustom) {
+        environment.set(QLatin1String("QT_SIS_CERTIFICATE"), QDir::toNativeSeparators(customSignaturePath()));
+        environment.set(QLatin1String("QT_SIS_KEY"), QDir::toNativeSeparators(customKeyPath()));
+    }
+    setEnvironment(environment);
+    setArguments(QStringList() << "sis"); // overwrite any stuff done in make step
+    return true;
+}
+
+bool S60CreatePackageStep::immutable() const
+{
+    return false;
+}
+
+ProjectExplorer::BuildStepConfigWidget *S60CreatePackageStep::createConfigWidget()
+{
+    return new S60CreatePackageStepConfigWidget(this);
+}
+
+S60CreatePackageStep::SigningMode S60CreatePackageStep::signingMode() const
+{
+    return m_signingMode;
+}
+
+void S60CreatePackageStep::setSigningMode(SigningMode mode)
+{
+    m_signingMode = mode;
+}
+
+QString S60CreatePackageStep::customSignaturePath() const
+{
+    return m_customSignaturePath;
+}
+
+void S60CreatePackageStep::setCustomSignaturePath(const QString &path)
+{
+    m_customSignaturePath = path;
+}
+
+QString S60CreatePackageStep::customKeyPath() const
+{
+    return m_customKeyPath;
+}
+
+void S60CreatePackageStep::setCustomKeyPath(const QString &path)
+{
+    m_customKeyPath = path;
+}
+
+// #pragma mark -- S60SignBuildStepFactory
+
+S60CreatePackageStepFactory::S60CreatePackageStepFactory(QObject *parent) :
+    ProjectExplorer::IBuildStepFactory(parent)
+{
+}
+
+S60CreatePackageStepFactory::~S60CreatePackageStepFactory()
+{
+}
+
+bool S60CreatePackageStepFactory::canCreate(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id) const
+{
+    if (type != ProjectExplorer::Build)
+        return false;
+    if (parent->target()->id() != Constants::S60_DEVICE_TARGET_ID)
+        return false;
+    return (id == QLatin1String(SIGN_BS_ID));
+}
+
+ProjectExplorer::BuildStep *S60CreatePackageStepFactory::create(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id)
+{
+    if (!canCreate(parent, type, id))
+        return 0;
+    return new S60CreatePackageStep(parent);
+}
+
+bool S60CreatePackageStepFactory::canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source) const
+{
+    return canCreate(parent, type, source->id());
+}
+
+ProjectExplorer::BuildStep *S60CreatePackageStepFactory::clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *source)
+{
+    if (!canClone(parent, type, source))
+        return 0;
+    return new S60CreatePackageStep(parent, static_cast<S60CreatePackageStep *>(source));
+}
+
+bool S60CreatePackageStepFactory::canRestore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) const
+{
+    QString id(ProjectExplorer::idFromMap(map));
+    return canCreate(parent, type, id);
+}
+
+ProjectExplorer::BuildStep *S60CreatePackageStepFactory::restore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map)
+{
+    if (!canRestore(parent, type, map))
+        return 0;
+    S60CreatePackageStep *bs(new S60CreatePackageStep(parent));
+    if (bs->fromMap(map))
+        return bs;
+    delete bs;
+    return 0;
+}
+
+QStringList S60CreatePackageStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type) const
+{
+    if (type != ProjectExplorer::Build)
+        return QStringList();
+    if (parent->target()->id() == Constants::S60_DEVICE_TARGET_ID)
+        return QStringList() << QLatin1String(SIGN_BS_ID);
+    return QStringList();
+}
+
+QString S60CreatePackageStepFactory::displayNameForId(const QString &id) const
+{
+    if (id == QLatin1String(SIGN_BS_ID))
+        return tr("Create sis Package");
+    return QString();
+}
+
+// #pragma mark -- S60SignBuildStepConfigWidget
+
+S60CreatePackageStepConfigWidget::S60CreatePackageStepConfigWidget(S60CreatePackageStep *signStep)
+    : BuildStepConfigWidget(), m_signStep(signStep)
+{
+    m_ui.setupUi(this);
+    updateUi();
+    connect(m_ui.customCertificateButton, SIGNAL(clicked()),
+            this, SLOT(updateFromUi()));
+    connect(m_ui.selfSignedButton, SIGNAL(clicked()),
+            this, SLOT(updateFromUi()));
+    connect(m_ui.signaturePath, SIGNAL(changed(QString)),
+            this, SLOT(updateFromUi()));
+    connect(m_ui.keyFilePath, SIGNAL(changed(QString)),
+            this, SLOT(updateFromUi()));
+}
+
+void S60CreatePackageStepConfigWidget::updateUi()
+{
+    bool selfSigned = m_signStep->signingMode() == S60CreatePackageStep::SignSelf;
+    m_ui.selfSignedButton->setChecked(selfSigned);
+    m_ui.customCertificateButton->setChecked(!selfSigned);
+    m_ui.signaturePath->setEnabled(!selfSigned);
+    m_ui.keyFilePath->setEnabled(!selfSigned);
+    m_ui.signaturePath->setPath(m_signStep->customSignaturePath());
+    m_ui.keyFilePath->setPath(m_signStep->customKeyPath());
+    emit updateSummary();
+}
+
+void S60CreatePackageStepConfigWidget::updateFromUi()
+{
+    bool selfSigned = m_ui.selfSignedButton->isChecked();
+    m_signStep->setSigningMode(selfSigned ? S60CreatePackageStep::SignSelf
+        : S60CreatePackageStep::SignCustom);
+    m_signStep->setCustomSignaturePath(m_ui.signaturePath->path());
+    m_signStep->setCustomKeyPath(m_ui.keyFilePath->path());
+    updateUi();
+}
+
+QString S60CreatePackageStepConfigWidget::summaryText() const
+{
+    QString text;
+    if (m_signStep->signingMode() == S60CreatePackageStep::SignSelf) {
+        text = tr("self-signed");
+    } else {
+        text = tr("signed with certificate %1 and key file %2")
+               .arg(m_signStep->customSignaturePath())
+               .arg(m_signStep->customKeyPath());
+    }
+    return tr("<b>Create sis Package:</b> %1").arg(text);
+}
+
+QString S60CreatePackageStepConfigWidget::displayName() const
+{
+    return m_signStep->displayName();
+}
+
+void S60CreatePackageStepConfigWidget::init()
+{
+}
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.h b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.h
new file mode 100644
index 0000000000000000000000000000000000000000..914195887d4b62060eba26d7cfb29448f8972c93
--- /dev/null
+++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.h
@@ -0,0 +1,122 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef S60CREATEPACKAGESTEP_H
+#define S60CREATEPACKAGESTEP_H
+
+#include "ui_s60createpackagestep.h"
+
+#include <projectexplorer/buildstep.h>
+#include <qt4projectmanager/makestep.h>
+
+namespace Qt4ProjectManager {
+namespace Internal {
+
+class S60CreatePackageStepFactory : public ProjectExplorer::IBuildStepFactory
+{
+    Q_OBJECT
+public:
+    explicit S60CreatePackageStepFactory(QObject *parent = 0);
+    ~S60CreatePackageStepFactory();
+
+    // used to show the list of possible additons to a target, returns a list of types
+    QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type) const;
+    // used to translate the types to names to display to the user
+    QString displayNameForId(const QString &id) const;
+
+    bool canCreate(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id) const;
+    ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QString &id);
+    // used to recreate the runConfigurations when restoring settings
+    bool canRestore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map) const;
+    ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, const QVariantMap &map);
+    bool canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *product) const;
+    ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::StepType type, ProjectExplorer::BuildStep *product);
+};
+
+class S60CreatePackageStep : public MakeStep {
+    Q_OBJECT
+    friend class S60CreatePackageStepFactory;
+public:
+    enum SigningMode {
+        SignSelf,
+        SignCustom
+    };
+
+    explicit S60CreatePackageStep(ProjectExplorer::BuildConfiguration *bc);
+    virtual ~S60CreatePackageStep();
+
+    virtual bool init();
+    virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget();
+    virtual bool immutable() const;
+
+    QVariantMap toMap() const;
+
+    SigningMode signingMode() const;
+    void setSigningMode(SigningMode mode);
+    QString customSignaturePath() const;
+    void setCustomSignaturePath(const QString &path);
+    QString customKeyPath() const;
+    void setCustomKeyPath(const QString &path);
+
+protected:
+    S60CreatePackageStep(ProjectExplorer::BuildConfiguration *bc, S60CreatePackageStep *bs);
+    S60CreatePackageStep(ProjectExplorer::BuildConfiguration *bc, const QString &id);
+    bool fromMap(const QVariantMap &map);
+
+private:
+    void ctor_package();
+
+    SigningMode m_signingMode;
+    QString m_customSignaturePath;
+    QString m_customKeyPath;
+};
+
+class S60CreatePackageStepConfigWidget : public ProjectExplorer::BuildStepConfigWidget
+{
+    Q_OBJECT
+public:
+    S60CreatePackageStepConfigWidget(S60CreatePackageStep *signStep);
+    QString displayName() const;
+    void init();
+    QString summaryText() const;
+
+private slots:
+    void updateUi();
+    void updateFromUi();
+
+private:
+    S60CreatePackageStep *m_signStep;
+
+    Ui::S60CreatePackageStepWidget m_ui;
+};
+
+} // Internal
+} // Qt4ProjectManager
+
+#endif // S60CREATEPACKAGESTEP_H
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.ui b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.ui
new file mode 100644
index 0000000000000000000000000000000000000000..4ae64d18af352e8ac954f087400d8daea3c8fa70
--- /dev/null
+++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.ui
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Qt4ProjectManager::Internal::S60CreatePackageStepWidget</class>
+ <widget class="QWidget" name="Qt4ProjectManager::Internal::S60CreatePackageStepWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>517</width>
+    <height>95</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <layout class="QGridLayout" name="gridLayout_2">
+     <item row="0" column="0">
+      <widget class="QRadioButton" name="selfSignedButton">
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QLabel" name="selfSignedLabel">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text">
+        <string>Self-signed certificate</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QGridLayout" name="gridLayout">
+     <item row="0" column="0">
+      <widget class="QRadioButton" name="customCertificateButton">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1" rowspan="2">
+      <layout class="QFormLayout" name="formLayout">
+       <item row="0" column="0">
+        <widget class="QLabel" name="customLabel">
+         <property name="text">
+          <string>Custom certificate:</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1">
+        <widget class="Utils::PathChooser" name="signaturePath" native="true">
+         <property name="promptDialogTitle" stdset="0">
+          <string>Choose certificate file (.cer)</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0">
+        <widget class="QLabel" name="label_2">
+         <property name="text">
+          <string>Key file:</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="Utils::PathChooser" name="keyFilePath" native="true"/>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>0</width>
+       <height>0</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>Utils::PathChooser</class>
+   <extends>QWidget</extends>
+   <header location="global">utils/pathchooser.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
index 8fb62cdea2f8380cdd18c79066acf91839c516ce..c62faca9b266a8827c2b6199132650ecbc1f71ae 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
@@ -39,6 +39,7 @@
 #include "bluetoothlistener_gui.h"
 #include "symbiandevicemanager.h"
 #include "qt4buildconfiguration.h"
+#include "qt4projectmanagerconstants.h"
 
 #include <coreplugin/icore.h>
 #include <coreplugin/messagemanager.h>
@@ -428,7 +429,7 @@ QStringList S60DeviceRunConfigurationFactory::availableCreationIds(Target *paren
 {
     Qt4Target *target = qobject_cast<Qt4Target *>(parent);
     if (!target ||
-        target->id() != QLatin1String(S60_DEVICE_TARGET_ID))
+        target->id() != QLatin1String(Constants::S60_DEVICE_TARGET_ID))
         return QStringList();
 
     return target->qt4Project()->applicationProFilePathes(QLatin1String(S60_DEVICE_RC_PREFIX));
@@ -445,7 +446,7 @@ bool S60DeviceRunConfigurationFactory::canCreate(Target *parent, const QString &
 {
     Qt4Target * t(qobject_cast<Qt4Target *>(parent));
     if (!t ||
-        t->id() != QLatin1String(S60_DEVICE_TARGET_ID))
+        t->id() != QLatin1String(Constants::S60_DEVICE_TARGET_ID))
         return false;
     return t->qt4Project()->hasApplicationProFile(pathFromId(id));
 }
@@ -463,7 +464,7 @@ bool S60DeviceRunConfigurationFactory::canRestore(Target *parent, const QVariant
 {
     Qt4Target * t(qobject_cast<Qt4Target *>(parent));
     if (!t ||
-        t->id() != QLatin1String(S60_DEVICE_TARGET_ID))
+        t->id() != QLatin1String(Constants::S60_DEVICE_TARGET_ID))
         return false;
     QString id(ProjectExplorer::idFromMap(map));
     return id == QLatin1String(S60_DEVICE_RC_ID);
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
index 1ca9e7c454f717a4f717683c3889005ba23e36a9..6c6e21f552e0cba0fa0c1cb47df5d3cd335ec4dc 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
@@ -36,6 +36,7 @@
 #include "s60manager.h"
 #include "s60devices.h"
 #include "qt4buildconfiguration.h"
+#include "qt4projectmanagerconstants.h"
 
 #include <coreplugin/icore.h>
 #include <coreplugin/messagemanager.h>
@@ -223,7 +224,7 @@ bool S60EmulatorRunConfigurationFactory::canCreate(Target *parent, const QString
 {
     Qt4Target * t(qobject_cast<Qt4Target *>(parent));
     if (!t ||
-        t->id() != QLatin1String(S60_EMULATOR_TARGET_ID))
+        t->id() != QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
         return false;
     return t->qt4Project()->hasApplicationProFile(pathFromId(id));
 }
@@ -240,7 +241,7 @@ bool S60EmulatorRunConfigurationFactory::canRestore(Target *parent, const QVaria
 {
     Qt4Target * t(qobject_cast<Qt4Target *>(parent));
     if (!t ||
-        t->id() != QLatin1String(S60_EMULATOR_TARGET_ID))
+        t->id() != QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
         return false;
     QString id(ProjectExplorer::idFromMap(map));
     return id == QLatin1String(S60_EMULATOR_RC_ID);
@@ -275,7 +276,7 @@ QStringList S60EmulatorRunConfigurationFactory::availableCreationIds(Target *par
 {
     Qt4Target * t(qobject_cast<Qt4Target *>(parent));
     if (!t ||
-        t->id() != QLatin1String(S60_EMULATOR_TARGET_ID))
+        t->id() != QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
         return QStringList();
 
     return t->qt4Project()->applicationProFilePathes(QLatin1String(S60_EMULATOR_RC_PREFIX));
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
index 3e3ad6d6617b8059d2fd70dfce909e8466cf4c09..29ef2d62aaf44cb2cb2731a7a0a2353fdc390093 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60manager.cpp
@@ -36,6 +36,7 @@
 #include "rvcttoolchain.h"
 #include "s60emulatorrunconfiguration.h"
 #include "s60devicerunconfiguration.h"
+#include "s60createpackagestep.h"
 
 #include <coreplugin/icore.h>
 #include <extensionsystem/pluginmanager.h>
@@ -115,6 +116,7 @@ S60Manager::S60Manager(QObject *parent)
                                                 S60DeviceRunConfiguration>
                                                 (QLatin1String(ProjectExplorer::Constants::RUNMODE),
                                                  tr("Run on Device"), parent));
+    addAutoReleasedObject(new S60CreatePackageStepFactory);
 
     if (Debugger::DebuggerManager::instance())
         addAutoReleasedObject(new RunControlFactory<S60DeviceDebugRunControl,
diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
index 2ac72ee3486bafb11be0f2fca5dc1f7d90ba724e..a611402d9265b0415628ea6a5260dff440bcff47 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
@@ -31,6 +31,7 @@
 
 #include "qt4project.h"
 #include "qt4target.h"
+#include "qt4projectmanagerconstants.h"
 
 #include <utils/qtcassert.h>
 
@@ -123,7 +124,7 @@ bool Qt4BuildConfiguration::fromMap(const QVariantMap &map)
     if (m_qtVersionId == 0) {
         QList<QtVersion *> versions = QtVersionManager::instance()->versions();
         foreach (QtVersion *v, versions) {
-            if (v->isValid() && v->supportsTargetId(QLatin1String(DESKTOP_TARGET_ID))) {
+            if (v->isValid() && v->supportsTargetId(QLatin1String(Constants::DESKTOP_TARGET_ID))) {
                 m_qtVersionId = v->uniqueId();
                 break;
             }
diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h
index 6728889bdf3746322970daba675a38d141620289..ef8cc3a06723dfd7e60e10c373ba93e0f32d56bd 100644
--- a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h
+++ b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h
@@ -88,6 +88,12 @@ const char * const QT_APP_WIZARD_TR_CATEGORY = QT_TRANSLATE_NOOP("Qt4ProjectMana
 // Tasks
 const char * const PROFILE_EVALUATE = "Qt4ProjectManager.ProFileEvaluate";
 
+// Targets
+const char * const DESKTOP_TARGET_ID("Qt4ProjectManager.Target.DesktopTarget");
+const char * const S60_EMULATOR_TARGET_ID("Qt4ProjectManager.Target.S60EmulatorTarget");
+const char * const S60_DEVICE_TARGET_ID("Qt4ProjectManager.Target.S60DeviceTarget");
+const char * const MAEMO_DEVICE_TARGET_ID("Qt4ProjectManager.Target.MaemoDeviceTarget");
+
 } // namespace Constants
 } // namespace Qt4ProjectManager
 
diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
index 78a7cace614e887c808edbfe723af65c2eaadf58..3f3225cce75777cab1ada249b500b53a245a2692 100644
--- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
@@ -35,6 +35,7 @@
 #include "qt4project.h"
 #include "qt4target.h"
 #include "qt4buildconfiguration.h"
+#include "qt4projectmanagerconstants.h"
 
 #include <coreplugin/icore.h>
 #include <coreplugin/messagemanager.h>
@@ -674,7 +675,7 @@ bool Qt4RunConfigurationFactory::canCreate(ProjectExplorer::Target *parent, cons
     Qt4Target *t = qobject_cast<Qt4Target *>(parent);
     if (!t)
         return false;
-    if (t->id() != QLatin1String(DESKTOP_TARGET_ID))
+    if (t->id() != QLatin1String(Constants::DESKTOP_TARGET_ID))
         return false;
     return t->qt4Project()->hasApplicationProFile(pathFromId(id));
 }
@@ -691,7 +692,7 @@ bool Qt4RunConfigurationFactory::canRestore(ProjectExplorer::Target *parent, con
 {
     if (!qobject_cast<Qt4Target *>(parent))
         return false;
-    if (parent->id() != QLatin1String(DESKTOP_TARGET_ID))
+    if (parent->id() != QLatin1String(Constants::DESKTOP_TARGET_ID))
         return false;
     QString id(ProjectExplorer::idFromMap(map));
     return id.startsWith(QLatin1String(QT4_RC_ID));
@@ -729,7 +730,7 @@ QStringList Qt4RunConfigurationFactory::availableCreationIds(ProjectExplorer::Ta
     Qt4Target *t(qobject_cast<Qt4Target *>(parent));
     if (!t)
         return QStringList();
-    if (t->id() != DESKTOP_TARGET_ID)
+    if (t->id() != Constants::DESKTOP_TARGET_ID)
         return QStringList();
     return t->qt4Project()->applicationProFilePathes(QLatin1String(QT4_RC_PREFIX));
 }
diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp
index 856fd4b5e6b743427b5bb4c942f6194e63367261..56247089673dc20495a16746982a5639ed929cb3 100644
--- a/src/plugins/qt4projectmanager/qt4target.cpp
+++ b/src/plugins/qt4projectmanager/qt4target.cpp
@@ -35,6 +35,7 @@
 #include "qt4buildconfiguration.h"
 #include "qt4project.h"
 #include "qt4runconfiguration.h"
+#include "qt4projectmanagerconstants.h"
 #include "qt-maemo/maemorunconfiguration.h"
 #include "qt-s60/s60devicerunconfiguration.h"
 #include "qt-s60/s60emulatorrunconfiguration.h"
@@ -54,25 +55,25 @@ using namespace Qt4ProjectManager::Internal;
 namespace {
 
 QString displayNameForId(const QString &id) {
-    if (id == QLatin1String(DESKTOP_TARGET_ID))
+    if (id == QLatin1String(Constants::DESKTOP_TARGET_ID))
         return QApplication::translate("Qt4ProjectManager::Internal::Qt4Target", "Desktop", "Qt4 Desktop target display name");
-    if (id == QLatin1String(S60_EMULATOR_TARGET_ID))
+    if (id == QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
         return QApplication::translate("Qt4ProjectManager::Internal::Qt4Target", "Symbian Emulator", "Qt4 Symbian Emulator target display name");
-    if (id == QLatin1String(S60_DEVICE_TARGET_ID))
+    if (id == QLatin1String(Constants::S60_DEVICE_TARGET_ID))
         return QApplication::translate("Qt4ProjectManager::Internal::Qt4Target", "Symbian Device", "Qt4 Symbian Device target display name");
-    if (id == QLatin1String(MAEMO_DEVICE_TARGET_ID))
+    if (id == QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID))
         return QApplication::translate("Qt4ProjectManager::Internal::Qt4Target", "Maemo", "Qt4 Maemo target display name");
     return QString();
 }
 
 QIcon iconForId(const QString &id) {
-    if (id == QLatin1String(DESKTOP_TARGET_ID))
+    if (id == QLatin1String(Constants::DESKTOP_TARGET_ID))
         return QIcon(qApp->style()->standardIcon(QStyle::SP_ComputerIcon));
-    if (id == QLatin1String(S60_EMULATOR_TARGET_ID))
+    if (id == QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
         return QIcon(":/projectexplorer/images/SymbianEmulator.png");
-    if (id == QLatin1String(S60_DEVICE_TARGET_ID))
+    if (id == QLatin1String(Constants::S60_DEVICE_TARGET_ID))
         return QIcon(":/projectexplorer/images/SymbianDevice.png");
-    if (id == QLatin1String(MAEMO_DEVICE_TARGET_ID))
+    if (id == QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID))
         return QIcon(":/projectexplorer/images/MaemoDevice.png");
     return QIcon();
 }
@@ -155,11 +156,11 @@ Qt4Target *Qt4TargetFactory::create(ProjectExplorer::Project *parent, const QStr
 
         if (buildAll) {
             t->addQt4BuildConfiguration(debugName, version, QtVersion::BuildAll | QtVersion::DebugBuild);
-            if (id != QLatin1String(S60_EMULATOR_TARGET_ID))
+            if (id != QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
                 t->addQt4BuildConfiguration(releaseName, version, QtVersion::BuildAll);
         } else {
             t->addQt4BuildConfiguration(debugName, version, QtVersion::DebugBuild);
-            if (id != QLatin1String(S60_EMULATOR_TARGET_ID))
+            if (id != QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
                 t->addQt4BuildConfiguration(releaseName, version, QtVersion::QmakeBuildConfig(0));
         }
     }
@@ -278,25 +279,25 @@ Qt4BuildConfigurationFactory *Qt4Target::buildConfigurationFactory() const
 
 void Qt4Target::addRunConfigurationForPath(const QString &proFilePath)
 {
-    if (id() == QLatin1String(DESKTOP_TARGET_ID))
+    if (id() == QLatin1String(Constants::DESKTOP_TARGET_ID))
         addRunConfiguration(new Qt4RunConfiguration(this, proFilePath));
-    else if (id() == QLatin1String(S60_EMULATOR_TARGET_ID))
+    else if (id() == QLatin1String(Constants::S60_EMULATOR_TARGET_ID))
         addRunConfiguration(new S60EmulatorRunConfiguration(this, proFilePath));
-    else if (id() == QLatin1String(S60_DEVICE_TARGET_ID))
+    else if (id() == QLatin1String(Constants::S60_DEVICE_TARGET_ID))
         addRunConfiguration(new S60DeviceRunConfiguration(this, proFilePath));
-    else if (id() == QLatin1String(MAEMO_DEVICE_TARGET_ID))
+    else if (id() == QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID))
         addRunConfiguration(new MaemoRunConfiguration(this, proFilePath));
 }
 
 QList<ToolChain::ToolChainType> Qt4Target::filterToolChainTypes(const QList<ToolChain::ToolChainType> &candidates) const
 {
     QList<ToolChain::ToolChainType> tmp(candidates);
-    if (id() == QLatin1String(S60_EMULATOR_TARGET_ID)) {
+    if (id() == QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) {
         if (tmp.contains(ToolChain::WINSCW))
             return QList<ToolChain::ToolChainType>() << ToolChain::WINSCW;
         else
             return QList<ToolChain::ToolChainType>();
-    } else if (id() == QLatin1String(S60_DEVICE_TARGET_ID)) {
+    } else if (id() == QLatin1String(Constants::S60_DEVICE_TARGET_ID)) {
         tmp.removeAll(ToolChain::WINSCW);
         return tmp;
     }
@@ -306,7 +307,7 @@ QList<ToolChain::ToolChainType> Qt4Target::filterToolChainTypes(const QList<Tool
 ToolChain::ToolChainType Qt4Target::preferredToolChainType(const QList<ToolChain::ToolChainType> &candidates) const
 {
     ToolChain::ToolChainType preferredType = ToolChain::INVALID;
-    if (id() == QLatin1String(S60_EMULATOR_TARGET_ID) &&
+    if (id() == QLatin1String(Constants::S60_EMULATOR_TARGET_ID) &&
         candidates.contains(ToolChain::WINSCW))
         preferredType = ToolChain::WINSCW;
     if (!candidates.isEmpty())
diff --git a/src/plugins/qt4projectmanager/qt4target.h b/src/plugins/qt4projectmanager/qt4target.h
index ebc105ca285cacc978f6660cacce0efd3d3bcfb6..694b97b437073954e6a9cfdc0c76b745b6fe22dd 100644
--- a/src/plugins/qt4projectmanager/qt4target.h
+++ b/src/plugins/qt4projectmanager/qt4target.h
@@ -44,11 +44,6 @@ class Qt4Project;
 
 namespace Internal {
 
-const char * const DESKTOP_TARGET_ID("Qt4ProjectManager.Target.DesktopTarget");
-const char * const S60_EMULATOR_TARGET_ID("Qt4ProjectManager.Target.S60EmulatorTarget");
-const char * const S60_DEVICE_TARGET_ID("Qt4ProjectManager.Target.S60DeviceTarget");
-const char * const MAEMO_DEVICE_TARGET_ID("Qt4ProjectManager.Target.MaemoDeviceTarget");
-
 class ProFileReader;
 class Qt4ProFileNode;
 class Qt4TargetFactory;
diff --git a/src/plugins/qt4projectmanager/qtoptionspage.cpp b/src/plugins/qt4projectmanager/qtoptionspage.cpp
index 9c91343d2d5721e293bb48672853b6a68b7f7b4f..05e1f68188382a574e4073c91951839654bec7bb 100644
--- a/src/plugins/qt4projectmanager/qtoptionspage.cpp
+++ b/src/plugins/qt4projectmanager/qtoptionspage.cpp
@@ -490,8 +490,8 @@ void QtOptionsPageWidget::showEnvironmentPage(QTreeWidgetItem *item)
                  }
                  m_ui->msvcComboBox->blockSignals(block);
             }
-        } else if (targets.contains(S60_DEVICE_TARGET_ID) ||
-                   targets.contains(S60_EMULATOR_TARGET_ID)) {
+        } else if (targets.contains(Constants::S60_DEVICE_TARGET_ID) ||
+                   targets.contains(Constants::S60_EMULATOR_TARGET_ID)) {
             makeMSVCVisible(false);
             makeMingwVisible(false);
             makeS60Visible(true);
@@ -506,12 +506,12 @@ void QtOptionsPageWidget::showEnvironmentPage(QTreeWidgetItem *item)
 
         if (m_ui->errorLabel->text().isEmpty()) {
             QString envs;
-            if (targets.contains(DESKTOP_TARGET_ID))
+            if (targets.contains(Constants::DESKTOP_TARGET_ID))
                 envs = tr("Desktop", "Qt Version is meant for the desktop");
-            else if (targets.contains(S60_DEVICE_TARGET_ID) ||
-                     targets.contains(S60_EMULATOR_TARGET_ID))
+            else if (targets.contains(Constants::S60_DEVICE_TARGET_ID) ||
+                     targets.contains(Constants::S60_EMULATOR_TARGET_ID))
                 envs = tr("Symbian", "Qt Version is meant for Symbian");
-            else if (targets.contains(MAEMO_DEVICE_TARGET_ID))
+            else if (targets.contains(Constants::MAEMO_DEVICE_TARGET_ID))
                 envs = tr("Maemo", "Qt Version is meant for Maemo");
             else
                 envs = tr("unkown", "No idea what this Qt Version is meant for!");
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index b894715cef6d60a17a32c1ce112b427d43753948..a5259b868564368ae3c9eca2509175332cc711e5 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -1245,20 +1245,20 @@ void QtVersion::updateToolChainAndMkspec() const
     if (!ce_sdk.isEmpty() && !ce_arch.isEmpty()) {
         QString wincePlatformName = ce_sdk + " (" + ce_arch + QLatin1Char(')');
         m_toolChains << ToolChainPtr(ProjectExplorer::ToolChain::createWinCEToolChain(msvcVersion(), wincePlatformName));
-        m_targetIds.insert(DESKTOP_TARGET_ID);
+        m_targetIds.insert(Constants::DESKTOP_TARGET_ID);
     } else if (makefileGenerator == QLatin1String("SYMBIAN_ABLD") ||
                makefileGenerator == QLatin1String("SYMBIAN_SBSV2") ||
                makefileGenerator == QLatin1String("SYMBIAN_UNIX")) {
         if (S60Manager *s60mgr = S60Manager::instance()) {
 #    ifdef Q_OS_WIN
-            m_targetIds.insert(QLatin1String(S60_DEVICE_TARGET_ID));
+            m_targetIds.insert(QLatin1String(Constants::S60_DEVICE_TARGET_ID));
             m_toolChains << ToolChainPtr(s60mgr->createGCCEToolChain(this));
             if (S60Manager::hasRvctCompiler())
                 m_toolChains << ToolChainPtr(s60mgr->createRVCTToolChain(this, ProjectExplorer::ToolChain::RVCT_ARMV5))
                              << ToolChainPtr(s60mgr->createRVCTToolChain(this, ProjectExplorer::ToolChain::RVCT_ARMV6));
             if (!mwcDirectory().isEmpty()) {
                 m_toolChains << ToolChainPtr(s60mgr->createWINSCWToolChain(this));
-                m_targetIds.insert(QLatin1String(S60_EMULATOR_TARGET_ID));
+                m_targetIds.insert(QLatin1String(Constants::S60_EMULATOR_TARGET_ID));
             }
 #    else
             if (S60Manager::hasRvctCompiler())
@@ -1270,12 +1270,12 @@ void QtVersion::updateToolChainAndMkspec() const
     } else if (qt_arch.startsWith(QLatin1String("arm"))
                && MaemoManager::instance().isValidMaemoQtVersion(this)) {
         m_toolChains << ToolChainPtr(MaemoManager::instance().maemoToolChain(this));
-        m_targetIds.insert(QLatin1String(MAEMO_DEVICE_TARGET_ID));
+        m_targetIds.insert(QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID));
     } else if (qmakeCXX == "cl" || qmakeCXX == "icl") {
         // TODO proper support for intel cl
         m_toolChains << ToolChainPtr(
                 ProjectExplorer::ToolChain::createMSVCToolChain(msvcVersion(), isQt64Bit()));
-        m_targetIds.insert(QLatin1String(DESKTOP_TARGET_ID));
+        m_targetIds.insert(QLatin1String(Constants::DESKTOP_TARGET_ID));
     } else if (qmakeCXX == "g++" && makefileGenerator == "MINGW") {
         ProjectExplorer::Environment env = ProjectExplorer::Environment::systemEnvironment();
         //addToEnvironment(env);
@@ -1283,7 +1283,7 @@ void QtVersion::updateToolChainAndMkspec() const
         qmakeCXX = env.searchInPath(qmakeCXX);
         m_toolChains << ToolChainPtr(
                 ProjectExplorer::ToolChain::createMinGWToolChain(qmakeCXX, mingwDirectory()));
-        m_targetIds.insert(QLatin1String(DESKTOP_TARGET_ID));
+        m_targetIds.insert(QLatin1String(Constants::DESKTOP_TARGET_ID));
     } else if (qmakeCXX == "g++" || qmakeCXX == "icc") {
         ProjectExplorer::Environment env = ProjectExplorer::Environment::systemEnvironment();
         //addToEnvironment(env);
@@ -1294,7 +1294,7 @@ void QtVersion::updateToolChainAndMkspec() const
             qmakeCXX = QLatin1String("cc");
         }
         m_toolChains << ToolChainPtr(ProjectExplorer::ToolChain::createGccToolChain(qmakeCXX));
-        m_targetIds.insert(QLatin1String(DESKTOP_TARGET_ID));
+        m_targetIds.insert(QLatin1String(Constants::DESKTOP_TARGET_ID));
     }
 
     if (m_toolChains.isEmpty()) {
diff --git a/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp b/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp
index cb9dd2ad3a93a40932fe7a41031a6aab3de8c275..0034b1bac17b4695cadc07aab9f47ae57d4e9ec2 100644
--- a/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp
+++ b/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp
@@ -32,6 +32,7 @@
 #include "filespage.h"
 #include "qt4target.h"
 #include "qtprojectparameters.h"
+#include "qt4projectmanagerconstants.h"
 
 #include <QtCore/QSet>
 
@@ -108,11 +109,11 @@ GuiAppParameters GuiAppWizardDialog::parameters() const
     rc.formFileName = m_filesPage->formFileName();
     rc.designerForm =  m_filesPage->formInputChecked();
     QSet<QString> targets = selectedTargets();
-    if (targets.contains(QLatin1String(MAEMO_DEVICE_TARGET_ID))) {
+    if (targets.contains(QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID))) {
         rc.widgetWidth = 800;
         rc.widgetHeight = 480;
-    } else if (targets.contains(QLatin1String(S60_DEVICE_TARGET_ID)) ||
-               targets.contains(QLatin1String(S60_EMULATOR_TARGET_ID))) {
+    } else if (targets.contains(QLatin1String(Constants::S60_DEVICE_TARGET_ID)) ||
+               targets.contains(QLatin1String(Constants::S60_EMULATOR_TARGET_ID))) {
         rc.widgetWidth = 360;
         rc.widgetHeight = 640;
     } else {
diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
index 6eb0abe27c2647f6980f1f4d8476e483fa8d193b..f41604957893503c50b8027a17141e339417d6e9 100644
--- a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
@@ -285,6 +285,6 @@ QSet<QString> BaseQt4ProjectWizardDialog::selectedTargets() const
 QSet<QString> BaseQt4ProjectWizardDialog::desktopTarget()
 {
     QSet<QString> rc;
-    rc.insert(QLatin1String(DESKTOP_TARGET_ID));
+    rc.insert(QLatin1String(Constants::DESKTOP_TARGET_ID));
     return rc;
 }
diff --git a/src/plugins/qt4projectmanager/wizards/targetspage.cpp b/src/plugins/qt4projectmanager/wizards/targetspage.cpp
index ecca857fd61b55d704cc46ea304ef370cad94d93..c4bf2c186e785e4bd678ab3251b90feed8ea2ec0 100644
--- a/src/plugins/qt4projectmanager/wizards/targetspage.cpp
+++ b/src/plugins/qt4projectmanager/wizards/targetspage.cpp
@@ -33,6 +33,7 @@
 #include "qt4projectmanager/qt4projectmanager.h"
 #include "qt4projectmanager/qt4target.h"
 #include "qt4projectmanager/qtversionmanager.h"
+#include "qt4projectmanager/qt4projectmanagerconstants.h"
 
 #include <extensionsystem/pluginmanager.h>
 
diff --git a/src/tools/qtcreatorwidgets/qtcreatorwidgets.pro b/src/tools/qtcreatorwidgets/qtcreatorwidgets.pro
index 93822c2c33bc7b82a46bf868bdceadf9c9a5f335..3e7776677bf2467dd2ac0fdda327936cc1022aa2 100644
--- a/src/tools/qtcreatorwidgets/qtcreatorwidgets.pro
+++ b/src/tools/qtcreatorwidgets/qtcreatorwidgets.pro
@@ -27,6 +27,11 @@ macx {
     LIBS += -L../../../bin/QtCreator.app/Contents/PlugIns
     CONFIG(debug, debug|release):LIBS += -lUtils_debug
     else:LIBS += -lUtils
+} else:win32 {
+    message($$QTC_LIBS)
+    LIBS += -L$$QTC_LIBS
+    CONFIG(debug, debug|release):LIBS += -lUtilsd
+    else:LIBS += -lUtils
 } else {
     message($$QTC_LIBS)
     LIBS += -L$$QTC_LIBS -lUtils