diff --git a/src/plugins/ios/iosdeploystep.cpp b/src/plugins/ios/iosdeploystep.cpp
index 9b0e0019546c3ac0c74f5fa7340c4b17458ae831..2fb22655b6ad8e0b876608b6cea081d449ebe8d3 100644
--- a/src/plugins/ios/iosdeploystep.cpp
+++ b/src/plugins/ios/iosdeploystep.cpp
@@ -86,6 +86,10 @@ bool IosDeployStep::init()
 {
     QTC_CHECK(m_transferStatus == NoTransfer);
     m_device = ProjectExplorer::DeviceKitInformation::device(target()->kit());
+    IosRunConfiguration * runConfig = qobject_cast<IosRunConfiguration *>(
+                this->target()->activeRunConfiguration());
+    QTC_CHECK(runConfig);
+    m_bundlePath = runConfig->bundleDir().toString();
     if (m_device.isNull()) {
         emit addOutput(tr("Error: no device available, deploy failed."),
                        BuildStep::ErrorMessageOutput);
@@ -219,9 +223,7 @@ QString IosDeployStep::deviceId() const
 
 QString IosDeployStep::appBundle() const
 {
-    IosRunConfiguration * runConfig = qobject_cast<IosRunConfiguration *>(
-                this->target()->activeRunConfiguration());
-    return runConfig->bundleDir().toString();
+    return m_bundlePath;
 }
 
 void IosDeployStep::raiseError(const QString &errorString)
diff --git a/src/plugins/ios/iosdeploystep.h b/src/plugins/ios/iosdeploystep.h
index 41a5d80d81781dcce6c7ce67aef1c79108401101..b61f96cc3074ca0924f84982bc4444d226efc105 100644
--- a/src/plugins/ios/iosdeploystep.h
+++ b/src/plugins/ios/iosdeploystep.h
@@ -108,6 +108,7 @@ private:
     IosToolHandler *m_toolHandler;
     QFutureInterface<bool> m_futureInterface;
     ProjectExplorer::IDevice::ConstPtr m_device;
+    QString m_bundlePath;
     static const Core::Id Id;
 };