summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/packagemanagercore.cpp
Commit message (Collapse)AuthorAgeFilesLines
* CLI: Add informative print when calling "remove" with no argumentsArttu Tarkiainen2020-10-011-0/+5
| | | | | | | Task-number: QTIFW-1744 Change-Id: Id44df3b5edbea5582e8ddee230c915d403271d3f Reviewed-by: Iikka Eklund <iikka.eklund@qt.io> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* CLI: Give more meaningfull return value for installsKatja Marttila2020-09-251-34/+31
| | | | | | | | | | | | | | Instead of returning just true or false when running installer or maintenancetool, utilize the PackagemanagerCore status message. Added also a new status enum, EssentialUpdated, which is returned when calling command 'update' and only essential components are updated. Also fixed a bug when components could be installed even when there were an essential update available. Task-number: QTIFW-1969 Change-Id: I43826301656573b34e1338b49566d199bdcd7468 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* CLI: Prevent MT restart after MT is updatedKatja Marttila2020-09-231-3/+5
| | | | | | | | | | Command line instance does not launch properly without user interaction. In Windows, the maintenancetool was launched to the background without GUI and CLI, in Linux the CLI does not take user inputs. Task-number: QTIFW-1967 Change-Id: I5e6ebb40f7db37a70f8d0063cbe279f5cd26080b Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Exit early when trying to install already installed componentKatja Marttila2020-09-211-1/+11
| | | | | | Task-number: QTIFW-1845 Change-Id: Iceea374ae4e027653c9e353fa2a4902e5fed790a Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Doc: Fix documentation warningsTopi Reinio2020-09-161-48/+50
| | | | | | | | | These changes fix many of the documentation warnings when building with a recent version of (Clang-integrated) QDoc. Change-Id: I5714635a25707cd7ab7bec209fa043a95f0b9832 Reviewed-by: Katja Marttila <katja.marttila@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* CLI: Allow forced component to be selected for installKatja Marttila2020-08-311-1/+2
| | | | | | Task-number: QTIFW-1929 Change-Id: I4c9cc7449126b6bb8898f5148f2cb612b175f52a Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Add verbose levels and cleanup log categoriesKatja Marttila2020-08-241-16/+24
| | | | | | | | | Setting several verbose switches enables more logging and performs component checking. Also cleanup some logging categories and unify the rules. Task-number: QTIFW-1914 Change-Id: I9195f4bb02affaa87e66cf9023a3512e65e0645b Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* CLI: Ask user confirmation before performing installer actionsArttu Tarkiainen2020-08-211-0/+13
| | | | | | | | Also add new option --confirm-command to skip the interactive query. Task-number: QTIFW-1834 Change-Id: I1c63fd990431c792a523da7047637f54b193bee6 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Documentation fixesKatja Marttila2020-07-031-56/+35
| | | | | | | | Added missing documentation and fixed warnings. KDUpdate documentation not added in this commit. Change-Id: Idc0b167bed95b7ae4a46a350290fdb241aa94448 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Add possibility to add custom widget from script to certain positionKatja Marttila2020-06-251-6/+11
| | | | | | | | | | | If several custom widgets are added to same page, the order of the widgets is arbitrary. Added a new member to addWizardPageItem which can define the position of the widget in the page, relative to another custom widgets. Non-custom widgets are always placed on top as before. Task-number: QTIFW-1847 Change-Id: Iadafef3a08e60a8b05b959cb06caea2a2042b419 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Add function to get information if default install is performedKatja Marttila2020-06-251-0/+10
| | | | | | Task-number: QTIFW-1847 Change-Id: I737b9b527c25e089386f74038b57a83f3d7e2062 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Add possibility to select/deselect component from script using coreKatja Marttila2020-06-251-0/+20
| | | | | | | | | We might not have componentselection page visible, so we need a possibility to select/deselect components also using core. Task-number: QTIFW-1847 Change-Id: I85ccf0602144f843c15ef7c0818ba435d36bdac5 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Add a page list widget to installer wizardArttu Tarkiainen2020-06-111-0/+5
| | | | | | | | | | | | | | | | | | | | If an installer is configured with <WizardShowPageList> set to true (default), a QListWidget set as a side widget for the wizard will be shown. The list should indicate completed and incomplete pages and the current wizard page. User navigation is not enabled in this change. The page list should honor the visibility of individual pages and update itself dynamically. In addition the visibility of a page in page list widget can be set internally with setShowOnPageList() which overrides other factors when hiding a page. The page item title shown on the list can be set internally with setPageListTitle() for the PackageManagerPage object, or the item can alternatively use the normal page title and the object name. Task-number: QTIFW-1755 Change-Id: I8a792d957a10e2176de5f42f29b1282e8e7667db Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Refactor maintenance tool writing conditionsArttu Tarkiainen2020-06-101-33/+38
| | | | | | | | | This change fixes a bug caused by a blocking runInstaller() call in PerformInstallationPage::entering() and also contains refactoring to related parts of code. Change-Id: Ic3309707c1f975a646937aa96fc407a3e5931359 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Fix InstallAction type when updating componentsKatja Marttila2020-06-081-4/+9
| | | | | | | | | | | | Components should be selected for update using model, not components own check state so model values stay in sync. Wrong InstallAction type will cause component to think it will be installed when that is not the case. This caused problems in install scripts when trying to figure out if component is going to be installed or not. Task-number: QTIFW-1830 Change-Id: I367f476de96f27b27d74e06a6fb630f0876924d2 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Obey --show-virtual-components in cli searchKatja Marttila2020-06-041-1/+2
| | | | | | | | | | | Virtual components cannot be installed unless --show-virtual-components is used. For the same reason, don't show the virtual components in search unless --show-virtual-components is used as otherwise user might miss that he is trying to install virtual component. Task-number: QTIFW-1828 Change-Id: I5a0492f6894596ed2cfb7ce438bbf55e89799c31 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* CLI: Do not run updater if there are no updates for selected componentsArttu Tarkiainen2020-06-011-2/+8
| | | | | | Task-number: QTIFW-1818 Change-Id: I13dceeeaf294c689a90fbe5fe74586d7a117ea50 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Remove unnecessary autoRejectMessageBoxes() callsArttu Tarkiainen2020-05-281-4/+0
| | | | | | | | | These were apparently added as a stop-gap measure to prevent message boxes from blocking CLI operations before the proper message acceptance features were implemented. Should not be needed anymore. Change-Id: I5591487840fd278eea4b3e46bce0ede66d055d15 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Inform if trying to uninstall virtual componentKatja Marttila2020-05-271-0/+6
| | | | | | Task-number: QTIFW-1811 Change-Id: I333d6d0bd93f8538919f172113b7039b63491492 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* CLI: Add new option --file-query to auto answer QFileDialogKatja Marttila2020-05-261-0/+49
| | | | | | | | | | | | | QFileDialog.getExistingDirectory and QFileDialog.getOpenFileName can be called from scipt. If command line interface is used, user must type the correct directory or file name from command line during install. With --file-query option user can give the values when running the installer or maintenancetool with syntax --file-query filedialogId=C:/temp,filedialogId2=C:/temp/file.txt. Task-number: QTIFW-1631 Change-Id: I5e58be6b509cf00de832646ef31ec4eda90773be Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Add new no-default-installations optionKatja Marttila2020-05-261-0/+21
| | | | | | | | | | | | This option can be used both from CLI and from GUI. Option will overwrite Default true in component.xml, which means that in GUI the components are not selected by default, and in CLI the components are not installed unless those are given as argument to install -command. Task-number:QTIFW-1630 Change-Id: I5dc16b14fc136f421980a55bb5fc6a74213309dc Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* Doc: Add scripting api documentation for setAutoAcceptLicenses()Arttu Tarkiainen2020-05-151-1/+3
| | | | | | Change-Id: I5478b6bf6d62f6d6db78e3d3ae3dfaeee573c220 Reviewed-by: Tarja Sundqvist <tarja.sundqvist@qt.io> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Fix interrupt() call from scriptKatja Marttila2020-05-151-1/+3
| | | | | | | | | Installer can be interrupted with interrupt() call from script. The interrupt was not correctly handled causing the installer to continue install successfully. Change-Id: I6c211ef985cc1a06445249bde27cdff5678a8ed0 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* CLI: Add option to read arbitrary user inputKatja Marttila2020-05-151-0/+23
| | | | | | | | | | | Added new readConsoleLine() function which can be used to read user input from console. Function can be only called when command line instance is used without gui. Task-number: QTIFW-1631 Change-Id: Ic856f4bafc4a8d469d3fe497b4e0321e104df499 Reviewed-by: Tarja Sundqvist <tarja.sundqvist@qt.io> Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Fix addElevatedOperation prevents installing from CLIArttu Tarkiainen2020-05-061-4/+3
| | | | | | | | | | Reorder the checking of if we are already running the binary with sufficient rights to happen before intentionally failing gaining on-demand admin rights with command line instance. Task-number: QTIFW-1700 Change-Id: I7cbce535baa1a818ee0fa263fa0dfc7af75c59d4 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Add possibility to accept licenses from CLIArttu Tarkiainen2020-04-281-0/+8
| | | | | | | | | | | License agreements can be accepted automatically by using command line option --accept-licenses or interactively by answering queries with either "Accept", "Reject" or "Show" selections. Task-number: QTIFW-1742 Task-number: QTIFW-1745 Change-Id: Iff46b44f91faddb7f163b299994167ab16df68b3 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Answer queries from command lineKatja Marttila2020-04-281-0/+10
| | | | | | | | | | | | | | | | | | | | | | Standard input is possible in Windows only in console application. This change makes installers to be console applications by default. If started as gui from command line, console is released and application is restarted so cmd.exe won't be waiting for application to finish. If started from explorer, console is launched but released immediately. This may be seen on screen with short console flash. Using command line interface messagebox strings and possible answer values for it are printed to console. Answers must be given in case sensitive format as StandardButton QMetaEnum is utilized when reading button values. This ensures that if StandardButtons are added/removed/changed the code continues to work. Also added a new option 'default-answer' which will answer the questions with default button values without user interaction. Task-number: QTIFW-1739 Change-Id: I710f921f5c927dbd13090af32f93656dded84e72 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* CLI: Print message if search does not find anythingArttu Tarkiainen2020-04-161-0/+5
| | | | | | Task-number: QTIFW-1703 Change-Id: I56c841eaac18234b3d3971eeeb497f8205a7b348 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Initialize user arguments earlierKatja Marttila2020-04-081-2/+5
| | | | | | | | | | | | | | | User can give arguments from command line, for example AllUsers=true, which can affect to other core values. Initialize user arguments in core constructor so we an utilize the user given values when defining other core values. Added also unit test for overwriting core data values. Note that some values belong to QSettings such as MaintenanceToolName which cannot be overwritten. Task-number: QTIFW-576 QTIFW-1730 Change-Id: I82a05f9f4bc8498f4e0e2af407ba29f6dabbf030 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* Remove existing installation from command lineArttu Tarkiainen2020-04-071-0/+16
| | | | | | | | | | | Add new "purge" command to command line interface. This removes all components and all program directory contents. Add test function to unit tests. Task-number: QTIFW-1574 Change-Id: Iccd4a052c7e2fc8eec0a6ae2b5a93c0c607604cb Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Add function to allow additional processes to be runKatja Marttila2020-03-311-0/+17
| | | | | | | | | | | | | | Maintenancetool does not allow updating install if running processes are found from install directory. Only maintenancetool process was allowed, otherwise the install failed with query to shut down processes. This commit adds a function to extend the allowed processes to be run, this is mandatory when running tests as test executable lies in the install directory. Task-number: QTIFW-1019 Change-Id: I5422b0327e3f77edf3f9c88c74f40eff5cc8c830 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io> Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* Fix bug in command line option updateKatja Marttila2020-03-311-6/+10
| | | | | | | | | | | | | | Update was working only for latter component if several was given as arguments. Added also unit tests for cli option update Also created common functions which are used by several command line test. Task-number: QTIFW-1695 Change-Id: I472e1c34bcfb1b60cda110353068f2cec64c468f Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* Create unit tests for CLI option uninstallPackagesKatja Marttila2020-03-251-3/+8
| | | | | | Task-number: QTIFW-1638 Change-Id: I027ce7d70cb5a49f1c2a2ed39979a0d3c8773282 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* Refactor and add unit tests for metadatajobKatja Marttila2020-03-241-0/+9
| | | | | | | | Split long functions into smaller understandable functions, added unit tests for metadatajob. Change-Id: Ib423eab3c9ae7771fb032b99f767f96e52266ea7 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* Separate maintenance tool writing for testing purposeKatja Marttila2020-03-201-14/+50
| | | | | | | | | Some unit tests wont work as installer wants to unpack maintenance tool from the installer. As unit tests are not normal installers we need to separate the maintenance unpacking when running tests. Change-Id: I5f2bb60e775a42d1b8dd6ee088ff4f2a694a7a09 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Refactor naming and usage of CLI commandsArttu Tarkiainen2020-03-191-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | - Rename and alter the description of some command line options according to validation results from task QTIFW-1635. The suggested additions are not added in this change. - Remove options "framework-version" and "silentUpdate", these should not be needed anymore. - Combine options "installPackages" and "installDefault" into single "install" command. - Change command line syntax from "binary [options]" to "binary [options] command <arguments>". - Re-order & group known option variables and "--help" printing order based on their topic. - Move CommandLineParser class files under src/libs/installer and add private class for future options extension. Short versions of command line options should be added in a follow-up commit. Task-number: QTIFW-1671 Change-Id: Ie0d393368b5275c8ffa1ab8833885b149af3178e Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Merge remote-tracking branch 'origin/3.2' to masterKatja Marttila2020-03-161-0/+103
|\ | | | | | | Change-Id: Ia4cf718409ce431cce8d766865ecec506426afb9
| * Add command line option to disable checking of free space on target3.2.2-rcArttu Tarkiainen2020-02-271-0/+103
| | | | | | | | | | | | | | | | | | | | Also move functionality to PackageManagerCore::checkAvailableSpace() for more convenient later usage, if we want to use this without starting the Wizard GUI. Task-number: QTIFW-1602 Change-Id: I4f2d3cc78bc542475fe9c51b9364b1b221098e4a Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* | CLI: Add unit tests and more detailed debug info of local installed packagesKatja Marttila2020-03-131-1/+17
| | | | | | | | | | Change-Id: I37f0950686aeb303328d7e8137fc4c7cfe7e8840 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* | Perform headless commands without GUI dependencyKatja Marttila2020-03-121-12/+26
| | | | | | | | | | | | Task-number: QTIFW-1633 Change-Id: I207cd152a471fddd51c152223460f8a9873f4382 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* | Show progress in CLI when performing time consuming operationsArttu Tarkiainen2020-03-091-1/+5
| | | | | | | | | | | | | | | | | | | | Add a bottom scrolling progress indicator that is shown during meta job progresses and installation phase. Also add printing of messages previously shown only on the GUI Wizard's progress bar labels. Task-number: QTIFW-1625 Change-Id: Ic3f92a31c98e41686517f49bbe98fd81fe11d13f Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* | Add command line option to start the installer binary as uninstallerArttu Tarkiainen2020-03-021-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add option "--uninstaller" to start the installer binary explicitly as uninstaller. This complements options "--updater" and "--manage-packages". Add convenience functions for setting and checking if the magic binary marker has been set by the user. Task-number: QTIFW-1639 Change-Id: Ie40ba9c56e09be079e309bca985b19a8a7bef7ef Reviewed-by: Iikka Eklund <iikka.eklund@qt.io> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* | Add unit tests for CLI option installPackagesKatja Marttila2020-02-201-6/+6
| | | | | | | | | | | | | | Also remove extra space and quotation marks from print output Change-Id: I18eb3532ac79f407023e15ef7ebab78ca0a7f59e Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* | CLI: decrease the amount of default debug printsKatja Marttila2020-02-201-3/+3
| | | | | | | | | | | | | | | | | | | | Debug prints can be suppressed or extended with logging rules. Make the default usage so that only relevant information will be shown to user, such as uninstall/install progress, server information, warning messages and package name, version and displayname. Change-Id: I09be754a36dd97530d75cdea3edb5fc77e67a856 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* | Uninstall selected packages from command lineKatja Marttila2020-02-141-0/+57
| | | | | | | | | | | | | | | | | | | | Components can be uninstalled from CLI with --uninstallPackages package1,package2,... Replicates the same behavior as when removing from visual UI, so forced installation, virtual and components installed as autodependency cannot be uninstalled. Change-Id: Ibcd87b5ceb8e509c84c6944510c23e59b28dedb9 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* | Add unit tests for CLI option listPackagesKatja Marttila2020-02-131-21/+21
| | | | | | | | | | | | | | | | | | Also remove extra space and quotation marks around printed component values. Task-number: QTIFW-1577 Change-Id: If2c81609e32ee40b81a70106b2e9bf8ac536c089 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* | Use of QLoggingCategoryKatja Marttila2020-02-131-10/+12
| | | | | | | | | | | | | | | | The change enables easier filtering of log messages Change-Id: I769f7c163e20f34c37fa0fe2b0729867ffca5bcb Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io> Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* | Fix bug in CLI updateComponentsKatja Marttila2020-02-131-0/+1
| | | | | | | | | | | | | | No updates were found as the update packages were not fetched Change-Id: Iaa245a5168c999780aa268c1af03c625e6053956 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* | Fix CLI installPackagesKatja Marttila2020-02-131-1/+1
| | | | | | | | | | | | | | | | | | | | Installer decided incorrectly weather the package was already installed or not. Check from components isInstalled() instead of model check state as the model check state can be Checked if <Default> is true and the component is not installed. Change-Id: Id1469992a2d56d263f47a6a711dbb878129f545a Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* | Do not prompt admin query when command line interface is usedArttu Tarkiainen2020-02-121-0/+21
| | | | | | | | | | | | | | | | | | | | | | If admin rights are needed, fail and require to install with sudo. This is how command line interfaces commonly behave. Add convenience functions for setting and checking if the installer is used from command line. Task-number: QTIFW-1598 Change-Id: Ib28d3be08254dade5d9b2d29da9232064f008eb4 Reviewed-by: Katja Marttila <katja.marttila@qt.io>