summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/packagemanagercore_p.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/4.1' into masterArttu Tarkiainen2021-09-101-2/+7
|\ | | | | | | Change-Id: I8e2864b3ec81cffa907fe02ff1f2019e155c54e3
| * MT: Fix reading of StartMenuDir value from incorrect config fileArttu Tarkiainen2021-08-161-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Value of StartMenuDir variable should be permanent after initial installation and must be read from maintenancetool.ini, don't use the default value from internal configuration file (metadata/installer- config/config.xml) of the maintenance tool binary as it: - Does not contain the path prefix for either user or system-wide start menu directory, we add this later depending on the installation type. - May change altogether with a new configuration file if the vendor has provided an update mechanism for maintenance tool, or if the user has opted for a non-default location. Task-number: QTIFW-2284 Change-Id: Id731d151b9f0acc77aa146722d1e088ea6a47eb3 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* | Fix qbsp adding from GUIKatja Marttila2021-09-021-64/+3
| | | | | | | | | | | | | | | | | | | | | | Qbsp package adding failed using gui if the package with the same name existed in the component tree. Also increased priority to qbsp package so that if the same name and version exists in the component tree then qbsp package is used. Task-number: QTIFW-2312 Change-Id: I732fef1a7ba503d2332f411e15b6873c63dcf630 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* | Translations: validate and update translatable user interface stringsArttu Tarkiainen2021-06-231-4/+4
| | | | | | | | | | | | | | Task-number: QTIFW-2245 Change-Id: Id9a79c7c572dc588c05ad37c67ae3f0431fa7cdb Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* | Merge remote-tracking branch 'origin/4.1'Arttu Tarkiainen2021-06-021-3/+3
|\| | | | | | | Change-Id: I86049138466399411ba36791330f4a94faad8c52
| * Fix values overwritten by maintenancetoolKatja Marttila2021-04-301-3/+3
| | | | | | | | | | | | | | | | | | | | | | Maintenancetool has saved values, which are loaded after installer has initialized some values, overwriting the installer initial values. Fixed so that only values that are not already set in installer init will be set from maintenancetool ini file. Task-number: QTIFW-2218 Change-Id: Ide6a3f67daec81fe22d6dcde1e95a28f5ed2c53a Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* | Merge remote-tracking branch 'origin/4.1'Arttu Tarkiainen2021-04-141-1/+11
|\| | | | | | | Change-Id: I8adecc4573134d2b33f2b98fba9372320b2f8737
| * Fix segfault when selecting non-existing component from scriptArttu Tarkiainen2021-03-281-0/+5
| | | | | | | | | | | | Task-number: QTIFW-2195 Change-Id: Iaf75d4a4ff20f20a36c0b2d21abb3969b86b5a84 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
| * CLI: Calculate required temporary and installation disk spaceArttu Tarkiainen2021-03-281-1/+6
| | | | | | | | | | | | | | Task-number: QTIFW-2197 Change-Id: I63a0bb265105f5a722ab8c645fa3511328bbcb33 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* | CLI: improvements to 'search' and 'install' command outputArttu Tarkiainen2021-03-111-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously subcomponents of a virtual component were shown on search results, and trying to install these would print a bit vague message: 'Component not found'. As the sub-branches of virtual component nodes are hidden on GUI, we should also hide them when using CLI search, and give a more appropriate error message why the component cannot be explicitly selected for installation, if the user still tries to do so. Also some minor refactoring to the handling of supplemental information about binary type of the running installer/mt. This change does not fix the possible case of an install script changing the 'virtual'-state of a component, as it would require downloading and evaluating the full metadata for repositories (or components), which would impose a performance penalty to search. Task-number: QTIFW-2168 Change-Id: Ibacaca23c38f5ea98967955d91849cefc1f11f61 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* | Add alternative way to update components from repositoryKatja Marttila2021-03-031-1/+17
|/ | | | | | | | | | | | | | Components can be updated from online repository using version number. Sometimes there is a need to update to an older version which is now possible by using content sha. Content sha can be added to repository with repogen --sha-update <component_id>. If there is a new content sha available in the repository, component is updated although it version number might be smaller. After the content sha is removed from online repository, the normal update with version number is performed. Task-number: QTIFW-1798 Change-Id: Id9e32b0345af5101cccaf6e30c81bd39691d9590 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Add unit tests for offline generationArttu Tarkiainen2021-02-161-0/+1
| | | | | | | | | | | | This also changes some of the return values in our CLI-related functions in PackageManagerCore class to better catch cases where we exit without failing but also without doing anything. Also adapt existing tests. Task-number: QTIFW-2028 Change-Id: I73c4ca1b20d439773d0e290195f137d0d7369d17 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Fix value overwrite from command lineKatja Marttila2021-02-161-0/+3
| | | | | | | | | Key-value pairs given from command line should overwrite all common variables and custom variables saved to maintenancetool.ini Task-number: QTIFW-2021 Change-Id: I1abd8b67e6ae76051a2887965099e00344bc5cc0 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Add possibility to move component in component treeKatja Marttila2021-02-111-1/+3
| | | | | | | | | | | | Setting <TreeName> -tag to component.xml will overwrite the default location of component in installer's tree view. This way we can define the component location without a complete repo build. Updates.xml can be directly modified by adding <TreeName> -tag for easy relocation of components. TreeName must be an unique name - it cannot conflict with existing tree name or name. Task-number: QTIFW-594 Change-Id: Ie69f90f1303d932369d566d0d7b4bc0e354505c6 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Try rerunning execute operationKatja Marttila2021-02-051-14/+14
| | | | | | | | | | | | | Execute operation can have hard coded paths to program which is executed. In case the program is relocated, UNDO operation will fail as it will not find the program. Implemented new XXXX_OLD value which can be used for overwriting the hardcoded value. In case the program execution fails, program is tried to launch again with the replaced value. Task-number: QTIFW-2125 Change-Id: I446a4c423e53cc4ffc6e5e25617d2400945ac3d9 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Restructure logging utilitiesArttu Tarkiainen2021-02-041-1/+2
| | | | | | | | | | | | | | Create a singleton-pattern class as an encapsulation unit for holding and altering the state of debug printing attributes. Move related code from various places under a single umbrella header file for logging utilities, with some minor stylistic changes & cleanup. This acts as a preparatory change for providing non-blocking headless CLI runs when there is no TTY attached - that will be fixed in a follow-up change. Change-Id: Ib7f72cf75362c3ea6713058e92eda997d6df55c3 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Save Execute operation with predefined variableKatja Marttila2021-02-031-2/+5
| | | | | | | | | | | When operations are saved to dat file, the variables are resolved making it impossible to change it afterwards. This change allows saving the Execute -operation variables unresolved. Variables are resolved runtime so those can be changed using e.g. script. Task-number: QTIFW-2124 Change-Id: I22a0502a5760234fc331aa931b8c66864e855e34 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Add support for generating offline installer from onlineArttu Tarkiainen2021-01-151-0/+212
| | | | | | Task-number: QTIFW-1945 Change-Id: Ic8a076a28385e99ad09cfbccd07c7012d6570639 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Introduce ForcedUpdate element for componentKatja Marttila2020-12-221-1/+3
| | | | | | | | | | | Setting ForcedUpdate for component will cause a mandatory update for component if it is installed. Component must be updated before any other component can be updated/installed/removed. Essential components are updated at the same time with ForcedUpdate. Task-number: QTIFW-1565 Change-Id: I6af07fba222371e8cd161d1fec65301450077d86 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Print package information in xml formatKatja Marttila2020-11-251-45/+0
| | | | | | | | | Also removed logging categories for package information, the full package information can be printed by increasing the verbosity level. Task-number: QTIFW-1950 Change-Id: I4bce019a63ba1fbf48e3bb0ca45511e42d4974c9 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Merge remote-tracking branch 'origin/4.0' into masterKatja Marttila2020-11-241-2/+15
|\ | | | | | | Change-Id: If5205ff6ef2c8989520e24d41595c04d5920d207
| * Add missing members to PackageManagerCorePrivate member initializer listArttu Tarkiainen2020-11-031-0/+8
| | | | | | | | | | | | | | | | | | | | The lesser called class constructor function was missing initialization for some of the fundamental data type member variables. This could cause weird behavior in autotests, where a PackageManagerCore object for "fake" installers is instantiated on multiple occasions. Change-Id: I4e65453e3125cb5b4b662314a593bb0232907478 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
| * CLI: Fix wrong warning text in command 'purge' for running processesArttu Tarkiainen2020-11-031-2/+7
| | | | | | | | | | | | Task-number: QTIFW-1996 Change-Id: Iaf9aa6bfd39d266ed052838e969881c168b4b2ed Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* | Arrange licenses and filter duplicatesJarkko Lehtoranta2020-11-061-6/+16
| | | | | | | | | | | | | | | | | | | | | | - Add a "priority" attribute to the "License" element used in "package.xml" for arranging licenses by priority in the LicenseAgreementPage and in CLI. Priority >0 shows the license on top of others. - Arrange the licenses with the same priority alphabetically - Filter duplicate licenses from the LicenseAgreementPage and from CLI Change-Id: I1dcacdd417d2383b8dc18149e4de329fbf11cfe8 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* | CLI: Print extra archive information with higher verbosity levelArttu Tarkiainen2020-11-051-1/+1
|/ | | | | | | | | | Also rework verbosity level handling to use predefined and range constrained enumeration list values. Task-number: QTIFW-1998 Change-Id: Iaf15ca638411e6842d3d502c4d7ff11d28d06658 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Don't warn if maintenance tool cannot be deletedKatja Marttila2020-10-151-0/+2
| | | | | | | | | We have a deferred delete for maintenance tool as in Windows the running program cannot be deleted. Task-number: QTIFW-1979 Change-Id: I3bfd98dd1d476450b9b770c9b2f1c70810e67492 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* CLI: Add retry count limit for checking running processesArttu Tarkiainen2020-10-091-0/+7
| | | | | | Task-number: QTIFW-1974 Change-Id: I5f2c815a5fe64a2fc2d15e26ff8687b3929292d7 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* CLI: Give more meaningfull return value for installsKatja Marttila2020-09-251-1/+4
| | | | | | | | | | | | | | 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-1/+1
| | | | | | | | | | 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>
* Change MT restart commandsKatja Marttila2020-09-231-1/+2
| | | | | | | | | 'updater' command option is deprecated, use predefined variable instead so code continues to work even if the command name changes. Change-Id: I99537bfd37dd55aeeff132b7c6ae04f9ea74d711 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* Doc: Remove internal classes and structs from generated documentationArttu Tarkiainen2020-09-211-0/+6
| | | | | | | | | | After migration to using 5.12.7 based qdoc, the generated documentation contains also empty declarations for members of undocumented internal classes. Mark them internal as needed. Task-number: QTIFW-1483 Change-Id: Iad40e4efdd098f09a825ce1c8d0aafcc76bd83bf Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Doc: Fix documentation warningsTopi Reinio2020-09-161-1/+1
| | | | | | | | | 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>
* Add verbose levels and cleanup log categoriesKatja Marttila2020-08-241-8/+8
| | | | | | | | | 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-6/+25
| | | | | | | | 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-0/+44
| | | | | | | | 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 function to get information if default install is performedKatja Marttila2020-06-251-0/+2
| | | | | | 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/+8
| | | | | | | | | 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>
* Refactor maintenance tool writing conditionsArttu Tarkiainen2020-06-101-3/+30
| | | | | | | | | 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 const correctness for CLI license acceptance functionsArttu Tarkiainen2020-06-031-2/+2
| | | | | Change-Id: If3fdafc982c8f2180fc15529bba1bd408d9fbfee Reviewed-by: Katja Marttila <katja.marttila@qt.io>
* Fix CreateShortcut path when running updateKatja Marttila2020-05-281-1/+1
| | | | | | | | | | | CreateShortcut operation is written to dat file. When updating the component, the operation is already containing the correct start menu value, so adding the start menu path is needed only when running installer. Task-number: QTIFW-1816 Change-Id: I7f60b07b21217c59ff2f419c3e92478c82d42445 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* Merge remote-tracking branch 'origin/3.2' into masterKatja Marttila2020-05-251-1/+1
|\ | | | | | | Change-Id: Icd1dbcfa7f6eef138aad5287a6dcdf7d061a7d70
| * Translation fixesKatja Marttila2020-05-201-1/+1
| | | | | | | | | | | | Task-number: QTIFW-1435 Change-Id: Ic3850754541775f76e86ed09e2dd36f036f5d67c Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* | Fix interrupt() call from scriptKatja Marttila2020-05-151-4/+7
| | | | | | | | | | | | | | | | | | 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>
* | Remove unnecessary component calculationKatja Marttila2020-05-151-1/+0
| | | | | | | | | | | | | | | | At this point of the install, components are already calculated. Removed the call to avoid unnecessary signals to be sent. Change-Id: I90b8e99ce63b30e8829dce4837164a6c3a919516 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
* | Add possibility to accept licenses from CLIArttu Tarkiainen2020-04-281-1/+59
| | | | | | | | | | | | | | | | | | | | | | 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>
* | Give meaningful default value to messagebox queriesKatja Marttila2020-04-161-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | If error occurs in install phase, change the default button to be cancel/ignore etc. to avoid inifinite loop when installing with CLI. When using GUI, default button is highlighted but user can choose otherwise. When using CLI the default button is always chosen if user don't give option to overwrite the default button values from command line. Task-number: QTIFW-1737 Change-Id: I721636d5a23e22ad5eee73b84e250e90eb1a6004 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io> Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
* | Fix shortcut creation when installing from CLIKatja Marttila2020-04-091-2/+16
| | | | | | | | | | | | | | | | | | | | | | 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>
* | Initialize user arguments earlierKatja Marttila2020-04-081-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | Add function to allow additional processes to be runKatja Marttila2020-03-311-12/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | Separate maintenance tool writing for testing purposeKatja Marttila2020-03-201-21/+3
| | | | | | | | | | | | | | | | | | 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>