diff --git a/src/plugins/remotelinux/maemodeploystepfactory.cpp b/src/plugins/remotelinux/maemodeploystepfactory.cpp
index 82b90fbe347c8904364ae75131472a6de75ce576..3fcea78e2093b262c39841c1ffd5049e2d7f24b1 100644
--- a/src/plugins/remotelinux/maemodeploystepfactory.cpp
+++ b/src/plugins/remotelinux/maemodeploystepfactory.cpp
@@ -81,6 +81,8 @@ QStringList MaemoDeployStepFactory::availableCreationIds(BuildStepList *parent)
         ids << MaemoInstallRpmPackageToSysrootStep::Id;
         ids << MaemoUploadAndInstallRpmPackageStep::Id;
     }
+    if (qobject_cast<Qt4HarmattanTarget *>(parent->target()))
+         ids << MaemoDirectDeviceUploadStep::Id;
     if (qobject_cast<Qt4Maemo5Target *>(parent->target())) {
         ids << MaemoMountAndInstallDeployStep::Id
             << MaemoMountAndCopyDeployStep::Id;
diff --git a/src/plugins/remotelinux/maemodirectdeviceuploadstep.cpp b/src/plugins/remotelinux/maemodirectdeviceuploadstep.cpp
index a1273471634c1dcc3c0924923c4e2c88663d58c8..6994a2321081f22ad3fc95ad877d988c3d673f19 100644
--- a/src/plugins/remotelinux/maemodirectdeviceuploadstep.cpp
+++ b/src/plugins/remotelinux/maemodirectdeviceuploadstep.cpp
@@ -217,6 +217,15 @@ void MaemoDirectDeviceUploadStep::handleUploadFinished(Utils::SftpJobId jobId,
         setFinished();
     } else {
         setDeployed(connection()->connectionParameters().host, d);
+
+        // Terrible hack for Windows.
+        if (d.remoteDir.contains(QLatin1String("bin"))) {
+            const QString remoteFilePath = d.remoteDir + QLatin1Char('/')
+                + QFileInfo(d.localFilePath).fileName();
+            const QString command = QLatin1String("chmod a+x ") + remoteFilePath;
+            connection()->createRemoteProcess(command.toUtf8())->start();
+        }
+
         uploadNextFile();
     }
 }