summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/scripting.qdoc64
-rw-r--r--src/libs/installer/packagemanagercoredata.cpp24
2 files changed, 88 insertions, 0 deletions
diff --git a/doc/scripting.qdoc b/doc/scripting.qdoc
index 64529867d..a6cb2526a 100644
--- a/doc/scripting.qdoc
+++ b/doc/scripting.qdoc
@@ -266,6 +266,27 @@
For example, \c {C:\Program Files} on Windows,
\c {/opt} on Linux and \c {/Applications} on OS X.
+
+ See also the table that lists examples of \l {Applications-directory-on-Windows}
+ {applications directories on Windows}.
+ \row
+ \li ApplicationsDirX86
+ \li Applications Directory for 32 bit programs. This is useful on Windows,
+ on other platforms it is the same as \c ApplicationsDir.
+
+ For example, \c {C:\Program Files (x86)} on Windows.
+
+ See also the table that lists examples of \l {Applications-directory-on-Windows}
+ {applications directories on Windows}.
+ \row
+ \li ApplicationsDirX64
+ \li Applications Directory for 64 bit programs. This is useful on Windows,
+ on other platforms it is the same as \c ApplicationsDir.
+
+ For example, \c {C:\Program Files} on Windows.
+
+ See also the table that lists examples of \l {Applications-directory-on-Windows}
+ {applications directories on Windows}.
\row
\li InstallerDirPath
\li The directory that contains the installer application executable.
@@ -297,4 +318,47 @@
component.addOperation("CreateShortcut", "@TargetDir@/MyApp.exe", "@StartMenuDir@/MyApp.lnk");
}
\endcode
+
+
+ \target Applications-directory-on-Windows
+ For example, applications directory on Windows:
+ \table
+ \header
+ \li OS (Windows)
+ \li Qt Installer Framework
+ \li Variable
+ \li Example Path
+ \row
+ \li {1, 3} 32bit
+ \li {1, 3} 32bit
+ \li ApplicationsDir
+ \li \c {C:\Program Files}
+ \row
+ \li ApplicationsDirX86
+ \li \c {C:\Program Files}
+ \row
+ \li ApplicationsDirX64
+ \li \c {C:\Program Files}
+ \row
+ \li {1, 6} 64bit
+ \li {1, 3} 32bit
+ \li ApplicationsDir
+ \li \c {C:\Program Files (x86)}
+ \row
+ \li ApplicationsDirX86
+ \li \c {C:\Program Files (x86)}
+ \row
+ \li ApplicationsDirX64
+ \li \c {C:\Program Files}
+ \row
+ \li {1, 3} 64bit
+ \li ApplicationsDir
+ \li \c {C:\Program Files}
+ \row
+ \li ApplicationsDirX86
+ \li \c {C:\Program Files (x86)}
+ \row
+ \li ApplicationsDirX64
+ \li \c {C:\Program Files}
+ \endtable
*/
diff --git a/src/libs/installer/packagemanagercoredata.cpp b/src/libs/installer/packagemanagercoredata.cpp
index 3444e0247..84944ee3d 100644
--- a/src/libs/installer/packagemanagercoredata.cpp
+++ b/src/libs/installer/packagemanagercoredata.cpp
@@ -119,6 +119,30 @@ void PackageManagerCoreData::setDynamicPredefinedVariables()
#endif
m_variables.insert(QLatin1String("ApplicationsDir"), dir);
+ QString dirX86 = dir;
+ QString dirX64 = dir;
+#ifdef Q_OS_WIN
+ QSettingsWrapper current(QLatin1String("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion")
+ , QSettingsWrapper::NativeFormat);
+ BOOL onWow64Or64bit = TRUE;
+#ifndef Q_OS_WIN64
+ IsWow64Process(GetCurrentProcess(), &onWow64Or64bit);
+#endif
+ QString programfilesX86;
+ QString programfilesX64;
+ if (onWow64Or64bit == TRUE) {
+ programfilesX86 = current.value(QLatin1String("ProgramFilesDir (x86)"), QString()).toString();
+ programfilesX64 = current.value(QLatin1String("ProgramW6432Dir"), QString()).toString();
+ } else {
+ programfilesX86 = current.value(QLatin1String("ProgramFilesDir"), QString()).toString();
+ programfilesX64 = programfilesX86;
+ }
+ dirX86 = replaceWindowsEnvironmentVariables(programfilesX86);
+ dirX64 = replaceWindowsEnvironmentVariables(programfilesX64);
+#endif
+ m_variables.insert(QLatin1String("ApplicationsDirX86"), dirX86);
+ m_variables.insert(QLatin1String("ApplicationsDirX64"), dirX64);
+
#ifdef Q_OS_WIN
QSettingsWrapper user(QLatin1String("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\"
"CurrentVersion\\Explorer\\User Shell Folders"), QSettingsWrapper::NativeFormat);