diff options
author | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2020-12-01 13:00:15 +0200 |
---|---|---|
committer | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2021-01-15 09:27:07 +0200 |
commit | 20f354b38b83e4aab107b388fe3c5e2ccd878946 (patch) | |
tree | 9da138aca91abdd931eb9fb4c74ffb35dddc7377 /src/sdk | |
parent | f61c19eb81dc692b9c5215f5bf94f3426b0f4f86 (diff) |
Add support for generating offline installer from online
Task-number: QTIFW-1945
Change-Id: Ic8a076a28385e99ad09cfbccd07c7012d6570639
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'src/sdk')
-rw-r--r-- | src/sdk/commandlineinterface.cpp | 31 | ||||
-rw-r--r-- | src/sdk/commandlineinterface.h | 1 | ||||
-rw-r--r-- | src/sdk/main.cpp | 3 |
3 files changed, 35 insertions, 0 deletions
diff --git a/src/sdk/commandlineinterface.cpp b/src/sdk/commandlineinterface.cpp index f522f7df6..7bb76d2af 100644 --- a/src/sdk/commandlineinterface.cpp +++ b/src/sdk/commandlineinterface.cpp @@ -210,6 +210,37 @@ int CommandLineInterface::removeInstallation() } } +int CommandLineInterface::createOfflineInstaller() +{ + if (!initialize()) + return EXIT_FAILURE; + if (!m_core->isInstaller() || m_core->isOfflineOnly()) { + qCWarning(QInstaller::lcInstallerInstallLog) + << "Offline installer can only be created with an online installer."; + return EXIT_FAILURE; + } + if (m_positionalArguments.isEmpty()) { + qCWarning(QInstaller::lcInstallerInstallLog) << "Missing components argument."; + return EXIT_FAILURE; + } + if (!(setTargetDir() && checkLicense())) + return EXIT_FAILURE; + + if (m_parser.isSet(CommandLineOptions::scOfflineInstallerNameLong)) { + m_core->setOfflineBinaryName(m_parser.value(CommandLineOptions::scOfflineInstallerNameLong)); + } else { + const QString offlineName = m_core->offlineBinaryName(); + qCDebug(QInstaller::lcInstallerInstallLog) << "No filename specified for " + "the generated installer, using default name:" << offlineName; + } + try { + return m_core->createOfflineInstaller(m_positionalArguments); + } catch (const QInstaller::Error &err) { + qCCritical(QInstaller::lcInstallerInstallLog) << err.message(); + return EXIT_FAILURE; + } +} + bool CommandLineInterface::checkLicense() { const ProductKeyCheck *const productKeyCheck = ProductKeyCheck::instance(); diff --git a/src/sdk/commandlineinterface.h b/src/sdk/commandlineinterface.h index 9833ad871..2627bc6f8 100644 --- a/src/sdk/commandlineinterface.h +++ b/src/sdk/commandlineinterface.h @@ -48,6 +48,7 @@ public: int installPackages(); int uninstallPackages(); int removeInstallation(); + int createOfflineInstaller(); private: bool initialize(); diff --git a/src/sdk/main.cpp b/src/sdk/main.cpp index 8c21cc39a..076458173 100644 --- a/src/sdk/main.cpp +++ b/src/sdk/main.cpp @@ -263,6 +263,9 @@ int main(int argc, char *argv[]) } else if (parser.positionalArguments().contains(CommandLineOptions::scPurgeShort) || parser.positionalArguments().contains(CommandLineOptions::scPurgeLong)){ return CommandLineInterface(argc, argv).removeInstallation(); + } else if (parser.positionalArguments().contains(CommandLineOptions::scCreateOfflineShort) + || parser.positionalArguments().contains(CommandLineOptions::scCreateOfflineLong)) { + return CommandLineInterface(argc, argv).createOfflineInstaller(); } if (QInstaller::isVerbose()) { std::cout << VERSION << std::endl << BUILDDATE << std::endl << SHA << std::endl; |