diff --git a/plugins/org.eclipse.oomph.setup.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.oomph.setup.core/META-INF/MANIFEST.MF
index 4f9ca1f..eb06d71 100644
--- a/plugins/org.eclipse.oomph.setup.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.oomph.setup.core/META-INF/MANIFEST.MF
@@ -33,7 +33,7 @@
  org.eclipse.equinox.security;bundle-version="[1.0.0,2.0.0)",
  org.eclipse.oomph.base.edit;bundle-version="[1.13.0,2.0.0)",
  org.eclipse.oomph.p2.core;bundle-version="[1.17.0,2.0.0)",
- org.eclipse.oomph.setup;bundle-version="[1.18.0,2.0.0)";visibility:=reexport,
+ org.eclipse.oomph.setup;bundle-version="[1.19.0,2.0.0)";visibility:=reexport,
  org.eclipse.oomph.setup.p2;bundle-version="[1.16.0,2.0.0)",
  org.eclipse.oomph.preferences;bundle-version="[1.12.0,2.0.0)",
  org.eclipse.core.net;bundle-version="[1.2.0,2.0.0)"
diff --git a/plugins/org.eclipse.oomph.setup.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.oomph.setup.editor/META-INF/MANIFEST.MF
index 83401bf..f582425 100644
--- a/plugins/org.eclipse.oomph.setup.editor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.oomph.setup.editor/META-INF/MANIFEST.MF
@@ -2,13 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.oomph.setup.editor;singleton:=true
-Bundle-Version: 1.18.0.qualifier
+Bundle-Version: 1.19.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.oomph.setup.presentation.SetupEditorPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Export-Package: org.eclipse.oomph.setup.editor;version="1.18.0";x-internal:=true,
+Export-Package: org.eclipse.oomph.setup.editor;version="1.19.0";x-internal:=true,
  org.eclipse.oomph.setup.presentation;version="1.5.0";x-internal:=true,
  org.eclipse.oomph.setup.presentation.handlers;version="1.5.0";x-internal:=true,
  org.eclipse.oomph.setup.presentation.templates;version="1.5.0";x-internal:=true
@@ -20,7 +20,7 @@
  org.eclipse.oomph.resources.edit;bundle-version="[1.11.0,2.0.0)";visibility:=reexport,
  org.eclipse.oomph.preferences;bundle-version="[1.12.0,2.0.0)",
  org.eclipse.oomph.setup.edit;bundle-version="[1.15.0,2.0.0)";visibility:=reexport,
- org.eclipse.oomph.setup.ui;bundle-version="[1.18.0,2.0.0)",
+ org.eclipse.oomph.setup.ui;bundle-version="[1.20.0,2.0.0)",
  org.eclipse.oomph.setup.sync;bundle-version="[1.13.0,2.0.0)",
  org.eclipse.oomph.workingsets.edit;bundle-version="[1.11.0,2.0.0)";visibility:=reexport,
  org.eclipse.oomph.workingsets.editor;bundle-version="[1.12.0,2.0.0)",
@@ -32,6 +32,6 @@
  org.eclipse.oomph.base.edit;bundle-version="[1.13.0,2.0.0)";visibility:=reexport,
  org.eclipse.oomph.setup.p2.edit;bundle-version="[1.13.0,2.0.0)",
  org.eclipse.oomph.p2.edit;bundle-version="[1.14.0,2.0.0)";visibility:=reexport,
- org.eclipse.oomph.p2.ui;bundle-version="[1.14.0,2.0.0)"
+ org.eclipse.oomph.p2.ui;bundle-version="[1.15.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
 Automatic-Module-Name: org.eclipse.oomph.setup.editor
diff --git a/plugins/org.eclipse.oomph.setup.editor/pom.xml b/plugins/org.eclipse.oomph.setup.editor/pom.xml
index daf18d6..66a6b2d 100644
--- a/plugins/org.eclipse.oomph.setup.editor/pom.xml
+++ b/plugins/org.eclipse.oomph.setup.editor/pom.xml
@@ -20,7 +20,7 @@
   </parent>
   <groupId>org.eclipse.oomph</groupId>
   <artifactId>org.eclipse.oomph.setup.editor</artifactId>
-  <version>1.18.0-SNAPSHOT</version>
+  <version>1.19.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
   <build>
diff --git a/plugins/org.eclipse.oomph.setup.editor/src/org/eclipse/oomph/setup/presentation/PreferenceCaptureDialog.java b/plugins/org.eclipse.oomph.setup.editor/src/org/eclipse/oomph/setup/presentation/PreferenceCaptureDialog.java
index 8bd120f..a1bc4e7 100644
--- a/plugins/org.eclipse.oomph.setup.editor/src/org/eclipse/oomph/setup/presentation/PreferenceCaptureDialog.java
+++ b/plugins/org.eclipse.oomph.setup.editor/src/org/eclipse/oomph/setup/presentation/PreferenceCaptureDialog.java
@@ -19,6 +19,8 @@
 import org.eclipse.oomph.setup.PreferenceTask;
 import org.eclipse.oomph.setup.SetupTask;
 import org.eclipse.oomph.setup.ui.recorder.RecorderTransaction;
+import org.eclipse.oomph.setup.util.SetupUtil;
+import org.eclipse.oomph.setup.util.StringExpander;
 import org.eclipse.oomph.util.IORuntimeException;
 import org.eclipse.oomph.util.Pair;
 import org.eclipse.oomph.util.PropertiesUtil;
@@ -405,7 +407,30 @@
     for (Object object : included)
     {
       PreferenceTask preferenceTask = (PreferenceTask)object;
-      result.put(PreferencesFactory.eINSTANCE.createURI(preferenceTask.getKey()), new Pair<String, String>(null, preferenceTask.getValue()));
+      new StringExpander()
+      {
+        @Override
+        protected String resolve(String key)
+        {
+          return null;
+        }
+
+        @Override
+        protected boolean isUnexpanded(String key)
+        {
+          return false;
+        }
+
+        @Override
+        protected String filter(String value, String filterName)
+        {
+          return null;
+        }
+      };
+
+      String escapedValue = preferenceTask.getValue();
+      String actualValue = SetupUtil.descape(escapedValue);
+      result.put(PreferencesFactory.eINSTANCE.createURI(preferenceTask.getKey()), new Pair<String, String>(null, actualValue));
     }
 
     return result;
diff --git a/plugins/org.eclipse.oomph.setup.installer/META-INF/MANIFEST.MF b/plugins/org.eclipse.oomph.setup.installer/META-INF/MANIFEST.MF
index 558b927..3d3018d 100644
--- a/plugins/org.eclipse.oomph.setup.installer/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.oomph.setup.installer/META-INF/MANIFEST.MF
@@ -10,7 +10,7 @@
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.emf.ecore.xmi;bundle-version="[2.10.0,3.0.0)",
  org.eclipse.emf.edit.ui;bundle-version="[2.10.0,3.0.0)",
- org.eclipse.oomph.setup;bundle-version="[1.18.0,2.0.0)",
+ org.eclipse.oomph.setup;bundle-version="[1.19.0,2.0.0)",
  org.eclipse.oomph.setup.edit;bundle-version="[1.15.0,2.0.0)",
  org.eclipse.oomph.setup.ui;bundle-version="[1.20.0,2.0.0)",
  org.eclipse.equinox.p2.operations;bundle-version="[2.0.0,3.0.0)",
diff --git a/plugins/org.eclipse.oomph.setup.jdt/META-INF/MANIFEST.MF b/plugins/org.eclipse.oomph.setup.jdt/META-INF/MANIFEST.MF
index 9f32f87..8a01c85 100644
--- a/plugins/org.eclipse.oomph.setup.jdt/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.oomph.setup.jdt/META-INF/MANIFEST.MF
@@ -12,7 +12,7 @@
  org.eclipse.oomph.setup.jdt.util;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.10.0,3.0.0)";visibility:=reexport,
- org.eclipse.oomph.setup;bundle-version="[1.18.0,2.0.0)";visibility:=reexport,
+ org.eclipse.oomph.setup;bundle-version="[1.19.0,2.0.0)";visibility:=reexport,
  org.eclipse.jdt.launching;bundle-version="[3.6.0,4.0.0)"
 Bundle-ActivationPolicy: lazy
 Automatic-Module-Name: org.eclipse.oomph.setup.jdt
diff --git a/plugins/org.eclipse.oomph.setup/META-INF/MANIFEST.MF b/plugins/org.eclipse.oomph.setup/META-INF/MANIFEST.MF
index 4555486..0f9bb5c 100644
--- a/plugins/org.eclipse.oomph.setup/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.oomph.setup/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.oomph.setup;singleton:=true
-Bundle-Version: 1.18.0.qualifier
+Bundle-Version: 1.19.0.qualifier
 Bundle-ClassPath: .
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
@@ -16,10 +16,10 @@
  org.eclipse.emf.ecore;bundle-version="[2.10.0,3.0.0)";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.oomph.internal.setup;version="1.18.0";x-internal:=true,
- org.eclipse.oomph.setup;version="1.18.0";x-internal:=true,
- org.eclipse.oomph.setup.impl;version="1.18.0";x-internal:=true,
- org.eclipse.oomph.setup.log;version="1.18.0";x-internal:=true,
- org.eclipse.oomph.setup.util;version="1.18.0";x-internal:=true
+Export-Package: org.eclipse.oomph.internal.setup;version="1.19.0";x-internal:=true,
+ org.eclipse.oomph.setup;version="1.19.0";x-internal:=true,
+ org.eclipse.oomph.setup.impl;version="1.19.0";x-internal:=true,
+ org.eclipse.oomph.setup.log;version="1.19.0";x-internal:=true,
+ org.eclipse.oomph.setup.util;version="1.19.0";x-internal:=true
 Bundle-Activator: org.eclipse.oomph.internal.setup.SetupPlugin$Implementation
 Automatic-Module-Name: org.eclipse.oomph.setup
diff --git a/plugins/org.eclipse.oomph.setup/pom.xml b/plugins/org.eclipse.oomph.setup/pom.xml
index 6425882..ccfafdd 100644
--- a/plugins/org.eclipse.oomph.setup/pom.xml
+++ b/plugins/org.eclipse.oomph.setup/pom.xml
@@ -20,7 +20,7 @@
   </parent>
   <groupId>org.eclipse.oomph</groupId>
   <artifactId>org.eclipse.oomph.setup</artifactId>
-  <version>1.18.0-SNAPSHOT</version>
+  <version>1.19.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
   <build>
diff --git a/plugins/org.eclipse.oomph.setup/src/org/eclipse/oomph/setup/util/SetupUtil.java b/plugins/org.eclipse.oomph.setup/src/org/eclipse/oomph/setup/util/SetupUtil.java
index da82453..95d2571 100644
--- a/plugins/org.eclipse.oomph.setup/src/org/eclipse/oomph/setup/util/SetupUtil.java
+++ b/plugins/org.eclipse.oomph.setup/src/org/eclipse/oomph/setup/util/SetupUtil.java
@@ -87,6 +87,31 @@
     return result.toString();
   }
 
+  public static String descape(String string)
+  {
+    return new StringExpander()
+    {
+
+      @Override
+      protected String resolve(String key)
+      {
+        return CONTROL_CHARACTER_VALUES.containsKey(key) ? CONTROL_CHARACTER_VALUES.get(key) : key;
+      }
+
+      @Override
+      protected boolean isUnexpanded(String key)
+      {
+        return !CONTROL_CHARACTER_VALUES.containsKey(key);
+      }
+
+      @Override
+      protected String filter(String value, String filterName)
+      {
+        return value;
+      }
+    }.expandString(string);
+  }
+
   public static Set<String> getResolvingTargetDefinitions(SetupTaskContext context)
   {
     @SuppressWarnings("unchecked")
