summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/installerfw.qdoc3
-rw-r--r--src/libs/installer/constants.h1
-rw-r--r--src/libs/installer/settings.cpp7
-rw-r--r--src/libs/installer/settings.h1
-rw-r--r--src/sdk/installerbasecommons.cpp10
5 files changed, 18 insertions, 4 deletions
diff --git a/doc/installerfw.qdoc b/doc/installerfw.qdoc
index 86496aba1..aa4b3d940 100644
--- a/doc/installerfw.qdoc
+++ b/doc/installerfw.qdoc
@@ -220,6 +220,9 @@
\row
\o RepositorySettingsPageVisible
\o Set to \c false to hide the repository settings page inside the settings dialog.
+ \row
+ \o AllowSpaceInPath
+ \o Set to \c true if the installation path can contain space characters.
\endtable
*/
diff --git a/src/libs/installer/constants.h b/src/libs/installer/constants.h
index be11f5156..573db4380 100644
--- a/src/libs/installer/constants.h
+++ b/src/libs/installer/constants.h
@@ -77,6 +77,7 @@ static const QLatin1String scRunProgramDescription("RunProgramDescription");
static const QLatin1String scTargetConfigurationFile("TargetConfigurationFile");
static const QLatin1String scAllowNonAsciiCharacters("AllowNonAsciiCharacters");
static const QLatin1String scRepositorySettingsPageVisible("RepositorySettingsPageVisible");
+static const QLatin1String scAllowSpaceInPath("AllowSpaceInPath");
}
#endif // CONSTANTS_H
diff --git a/src/libs/installer/settings.cpp b/src/libs/installer/settings.cpp
index cb84d5438..e222c06f0 100644
--- a/src/libs/installer/settings.cpp
+++ b/src/libs/installer/settings.cpp
@@ -342,6 +342,11 @@ QString Settings::configurationFileName() const
return d->m_data.value(scTargetConfigurationFile).toString();
}
+bool Settings::allowSpaceInPath() const
+{
+ return d->m_data.value(scAllowSpaceInPath, false).toBool();
+}
+
QStringList Settings::certificateFiles() const
{
return d->m_data.value(scSigningCertificate).toStringList();
@@ -349,7 +354,7 @@ QStringList Settings::certificateFiles() const
bool Settings::allowNonAsciiCharacters() const
{
- return d->m_data.value(scAllowNonAsciiCharacters).toBool();
+ return d->m_data.value(scAllowNonAsciiCharacters, false).toBool();
}
bool Settings::dependsOnLocalInstallerBinary() const
diff --git a/src/libs/installer/settings.h b/src/libs/installer/settings.h
index 52453e970..f5a614fed 100644
--- a/src/libs/installer/settings.h
+++ b/src/libs/installer/settings.h
@@ -112,6 +112,7 @@ public:
void setUserRepositories(const QSet<Repository> &repositories);
void addUserRepositories(const QSet<Repository> &repositories);
+ bool allowSpaceInPath() const;
QStringList certificateFiles() const;
bool allowNonAsciiCharacters() const;
diff --git a/src/sdk/installerbasecommons.cpp b/src/sdk/installerbasecommons.cpp
index 14c2c57ae..9e8b8ab12 100644
--- a/src/sdk/installerbasecommons.cpp
+++ b/src/sdk/installerbasecommons.cpp
@@ -372,14 +372,18 @@ QString TargetDirectoryPageImpl::targetDirWarning() const
}
QString dir = targetDir();
+ QString ambiguousChars = QLatin1String("[<>|?*!@#$%^&:,; ]");
+ if (packageManagerCore()->settings().allowSpaceInPath())
+ ambiguousChars.remove(QLatin1Char(' '));
+
#ifdef Q_OS_WIN
// remove e.g. "c:"
dir = dir.mid(2);
#endif
// check if there are not allowed characters in the target path
- if (dir.contains(QRegExp(QLatin1String("[!@#$%^&*: ,;]")))) {
- return TargetDirectoryPageImpl::tr("The installation path must not contain !@#$%^&*:,; or spaces, "
- "please specify a valid folder.");
+ if (dir.contains(QRegExp(ambiguousChars))) {
+ return TargetDirectoryPageImpl::tr("The installation path must not contain %1, "
+ "please specify a valid folder.").arg(ambiguousChars);
}
return QString();