summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2020-04-06 13:59:11 +0300
committerKatja Marttila <katja.marttila@qt.io>2020-04-09 09:50:03 +0300
commit90523cb44306949893b5ae0f3706185c7d364c6f (patch)
tree285ffe703d752caf91d108980b6c004ced07ffe0 /src
parenta58ec153e6e2f91e7cfa89c15ecd222c29bf3fb9 (diff)
Fix shortcut creation when installing from CLI
Change default button from Retry to Cancel if operation fails to avoid infinite loop when running from command line interface. Added also unit tests for shortcut operation. Task-number: QTIFW-1666 QTIFW-1710 Change-Id: I171b6aecd9886acce0051b7082842f8f76b22046 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/libs/installer/constants.h2
-rw-r--r--src/libs/installer/createshortcutoperation.h4
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp18
-rw-r--r--src/libs/installer/packagemanagercoredata.cpp4
-rw-r--r--src/libs/installer/packagemanagergui.cpp2
5 files changed, 23 insertions, 7 deletions
diff --git a/src/libs/installer/constants.h b/src/libs/installer/constants.h
index 8f3291b04..3759e6157 100644
--- a/src/libs/installer/constants.h
+++ b/src/libs/installer/constants.h
@@ -38,6 +38,8 @@ namespace QInstaller {
static const QLatin1String scTrue("true");
static const QLatin1String scFalse("false");
static const QLatin1String scScript("script");
+static const QLatin1String scAllUsersStartMenuProgramsPath("AllUsersStartMenuProgramsPath");
+static const QLatin1String scUserStartMenuProgramsPath("UserStartMenuProgramsPath");
static const QLatin1String scName("Name");
static const QLatin1String scVersion("Version");
diff --git a/src/libs/installer/createshortcutoperation.h b/src/libs/installer/createshortcutoperation.h
index dc2ac6ddb..9bf9ebdcb 100644
--- a/src/libs/installer/createshortcutoperation.h
+++ b/src/libs/installer/createshortcutoperation.h
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Installer Framework.
@@ -37,7 +37,7 @@ class INSTALLER_EXPORT CreateShortcutOperation : public Operation
{
Q_DECLARE_TR_FUNCTIONS(QInstaller::CreateShortcutOperation)
public:
- explicit CreateShortcutOperation(PackageManagerCore *core);
+ explicit CreateShortcutOperation(PackageManagerCore *core = nullptr);
void backup();
bool performOperation();
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp
index dba96c222..e408db40e 100644
--- a/src/libs/installer/packagemanagercore_p.cpp
+++ b/src/libs/installer/packagemanagercore_p.cpp
@@ -593,6 +593,20 @@ void PackageManagerCorePrivate::initialize(const QHash<QString, QString> &params
}
processFilesForDelayedDeletion();
+ // Set shortcut path for command line interface, in GUI version
+ // we have a separate page where the whole path is set.
+#ifdef Q_OS_WIN
+ if (m_core->isCommandLineInstance()) {
+ QString startMenuPath;
+ if (params.value(QLatin1String("AllUsers")) == scTrue)
+ startMenuPath = m_data.value(scAllUsersStartMenuProgramsPath).toString();
+ else
+ startMenuPath = m_data.value(scUserStartMenuProgramsPath).toString();
+ QString startMenuDir = m_core->value(scStartMenuDir, m_core->value(QLatin1String("ProductName")));
+ m_data.setValue(scStartMenuDir, startMenuPath + QDir::separator() + startMenuDir);
+ }
+#endif
+
disconnect(this, &PackageManagerCorePrivate::installationStarted,
ProgressCoordinator::instance(), &ProgressCoordinator::reset);
connect(this, &PackageManagerCorePrivate::installationStarted,
@@ -1901,10 +1915,10 @@ void PackageManagerCorePrivate::installComponent(Component *component, double pr
.join(QLatin1String("; ")), operation->errorString());
const QMessageBox::StandardButton button =
MessageBoxHandler::warning(MessageBoxHandler::currentBestSuitParent(),
- QLatin1String("installationErrorWithRetry"), tr("Installer Error"),
+ QLatin1String("installationErrorWithCancel"), tr("Installer Error"),
tr("Error during installation process (%1):\n%2").arg(component->name(),
operation->errorString()),
- QMessageBox::Retry | QMessageBox::Ignore | QMessageBox::Cancel, QMessageBox::Retry);
+ QMessageBox::Retry | QMessageBox::Ignore | QMessageBox::Cancel, QMessageBox::Cancel);
if (button == QMessageBox::Retry)
ok = performOperationThreaded(operation);
diff --git a/src/libs/installer/packagemanagercoredata.cpp b/src/libs/installer/packagemanagercoredata.cpp
index df6d96a55..667e2f577 100644
--- a/src/libs/installer/packagemanagercoredata.cpp
+++ b/src/libs/installer/packagemanagercoredata.cpp
@@ -167,9 +167,9 @@ void PackageManagerCoreData::setDynamicPredefinedVariables()
desktop = user.value(QLatin1String("Desktop")).toString();
}
m_variables.insert(QLatin1String("DesktopDir"), replaceWindowsEnvironmentVariables(desktop));
- m_variables.insert(QLatin1String("UserStartMenuProgramsPath"),
+ m_variables.insert(scUserStartMenuProgramsPath,
replaceWindowsEnvironmentVariables(programs));
- m_variables.insert(QLatin1String("AllUsersStartMenuProgramsPath"),
+ m_variables.insert(scAllUsersStartMenuProgramsPath,
replaceWindowsEnvironmentVariables(allPrograms));
#endif
#define QUOTE_(x) #x
diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp
index 771b2720c..d80709416 100644
--- a/src/libs/installer/packagemanagergui.cpp
+++ b/src/libs/installer/packagemanagergui.cpp
@@ -2271,7 +2271,7 @@ StartMenuDirectoryPage::StartMenuDirectoryPage(PackageManagerCore *core)
startMenuPath = core->value(QLatin1String("UserStartMenuProgramsPath"));
QStringList dirs = QDir(startMenuPath).entryList(QDir::AllDirs | QDir::NoDotAndDotDot);
if (core->value(scAllUsers, scFalse) == scTrue) {
- startMenuPath = core->value(QLatin1String("AllUsersStartMenuProgramsPath"));
+ startMenuPath = core->value(scAllUsersStartMenuProgramsPath);
dirs += QDir(startMenuPath).entryList(QDir::AllDirs | QDir::NoDotAndDotDot);
}
dirs.removeDuplicates();