| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Also process pending events for the main thread in the loop that calls
Component::loadComponentScript() repeatedly, to not block the UI while
busy loading the scripts.
Task-number: QTIFW-2701
Change-Id: I4a1dd8e2441e21b5075b6fdffff8a47cd4bc7c80
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Also process pending events for the main thread in the loop that calls
Component::loadComponentScript() repeatedly, to not block the UI while
busy loading the scripts.
Task-number: QTIFW-2701
Change-Id: I4a1dd8e2441e21b5075b6fdffff8a47cd4bc7c80
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
This has reportedly caused problems on some Windows 10 versions, where
trying to uninstall the program via Control Panel didn't work when
the target directory contained spaces.
Could not reproduce the issue with version 21H2, but the added quotes
should not hurt either.
Task-number: QTIFW-2479
Change-Id: I4d9712df859acf2690d8e47f19b9f2a8d0a2496f
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently the installer will create an alias file for maintenance tool
with the name defaulting to the file name of maintenance tool, if the
name is not explicitly declared in the installer's configuration file.
This can cause issues with installers that use the same maintenance tool
filename, as the alias would be overwritten on each install, and the
default name does not tell which installation the alias is associated
with. Make it so that the alias is only created if installer config
specifies a name for the alias.
Task-number: QTIFW-2665
Change-Id: I790ee376ec56cff16730189e513a194b8c610066
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
A follow-up for the translation update round for 4.4.0 release, fix
the noted issue of some strings having strange formatting in the
.ts files. This makes it less likely that the translated strings miss
the newlines in cases where it matters to the text presentation.
Change-Id: I0fc9c2c8014a6ffa30dc510701b7bfad72e8eb82
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
This changes allows in follow-up commits to access windows registy with
other than just NativeFormat. This is needed for 32-bit applications to
access 64-bit registry and 64-bit application s to access 32-bit
registry.
Change-Id: I0b88f4eaa499e53e10162ae5343b95d06ddbfc27
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a component with the same name and equal version is available from
both remote repository and installer binary, it makes more sense to
use the installer resource as the package source for the component.
This also fixes the issue of erroneously registering duplicate archives
to a single resource collection. Because both the internal resources and
downloaded archives are registered in the same naming scheme of
"installer://<component>/<version><archive>", we would register the
same archive second time when using the remote source. If the packager
has not explicitly added Extract operations for the component, these
would be created automatically by looking for archive entries from the
component's resource collection, and so the same operation would be
added twice.
Task-number: QTIFW-2242
Change-Id: I82d4ed8a94a67d982b016bf7cec972e43bef8f03
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Autodependencies can be added also from script. The uninstaller and
installer calculators ignored the values set from script depending on at
what state of the script run the autodependencies were added. Fixed so
that at any point the autodependencies are added from script, the
installer and uninstaller calculators has correct values.
Change-Id: If993bcce72f889b51e4b981473540c4e1ccd6067
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If component is updated to repository, and new dependencies are added,
the dependencies should be installed only when fresh install to
component is made or the component is updated.
This change adds a new LocalDependencies value to component. It keeps
track of the dependencies the local installed packages has.
Fixes also a bug in uninstallecalculator, where we should also read the
dependencies from local installed packages instead of newly introduced
repositories.
Task-number: QTIFW-2624
Change-Id: I0557e5adf1e87c0a1238cc455cfb2c90f6b05c87
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Autodependency components were always forcely updated, even if 'Deselect
All' was selected in component selection page. Fixed so that the
autodependency component update is updated only when one of its
dependants is updated.
Task-number: QTIFW-2595
Change-Id: I05ececc45ef32ff80d53b008f839b358158a3316
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Before this change, components that declared explicit SortingPriority
value would be sorted incorrectly with the default sorting value if the
repositories were not available after installation.
Task-number: QTIFW-2631
Change-Id: I3d18d6c6a5444eb3d2d700f12ed61da72431b8a4
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
| |
This makes the output more consistent between operations in Unpack
and Install phase and removes the need to hard code some print
to the operation side.
Change-Id: Ia955f479cb138fcf0ffd6a73a06de6a74df6ed13
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
No need to recalculate local installed components if no changes has been
made. This makes the component selection quicker if there are lots
of components to be installed.
Local components are already calculated and listed in LocalPackageHub.
Using this class directly instead of calculating own local component
hash table. This changes the localInstalledPackages() from QHash to QMap,
which is not as optimized for searching components, but overall performance
is still now way better.
Task-number: QTIFW-2522
Change-Id: I8c16060f4b4014f740be0c7c43ece5e659d92987
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes maintenance tool startable from Launchpad and Spotlight
search. Add "MaintenanceToolAlias" configuration variable for
setting the name of the alias, which may differ from the actual
file name in installation directory.
Task-number: QTIFW-2535
Task-number: QTIFW-2478
Change-Id: I73ae5bbf5d0196b2512b5517cb02c391b2ab278c
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a lot of components are installed, maintenancetool was slow to
select/unselect a single component. This was caused because the whole
tree's components were recalculated. Fixed so that only the
selected/unselected components and their dependencies and
autodependencies are recalculated instead of whole tree.
This change speeds up clicking tree item from zero to 90 percent,
depending on how much components are already installed. The more
components are installed as autodependency, the slower it gets to
select the items.
Task-number: QTIFW-2522
Change-Id: I5e824aed8787fd7ecdce72b15a1b13848f0a3923
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
| |
Before this change we would print a warning for each operation when
iterating over the results of their asynchronous execution. These are
unnecessary as canceling is a conscious action from the user.
Change-Id: I2b9bd469b3a3e1c9794c6f2c4952896640cd88da
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
For tracing issues with the multithreaded extraction and limiting the
processor load from the installer.
Task-number: QTIFW-2586
Change-Id: I5df0bf6be30b4ee5ef8470c407281e2a4318ed0c
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
In a similar fashion to the archive download status, display:
* Performed operations - total operations, on unpack.
* Installed components - total components, on install.
* Rolled back operations - total undo operations, on uninstall.
Task-number: QTIFW-2513
Change-Id: I61690a25afadd1ca1e4a46b5b980ac094429135b
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes the progress appear smoother when the archives to extract
differ in size.
The sorting based on the archive sizes provides some improvement to
optimal thread utilization, as the larger archives get more time to
complete from the start. We are less likely to find ourselves in a
situation where any of the last operations left to be run with less
than ideal thread count take significantly more time to complete than
the others.
Task-number: QTIFW-2431
Change-Id: I2534b6f18997d73c4ce1fb8b26900e30e1c6a76f
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce ConcurrentOperationRunner class used for running
installer operations concurrently in the global thread pool.
Add execution groups for operations; Unpack operations are run
concurrently for all components requesting installation,
operations belonging to Install group are run sequentially for
sorted components one at a time as before. From the default
registered operations the Extract op is moved to Unpack group.
Move the previously on-the-fly backup steps of Extract operation
to the ExtractArchiveOperation::backup(), so that backups are
done before any archives are extracted, and that we know if any
of the archives requires administrator privileges to unpack.
Reparent QInstaller::Error to QException to support throwing
and catching exceptions across thread boundaries.
Use RAII for the server-side objects of the classes supporting
the remote client-server protocol of installer framework. The
concurrent extraction revealed that it was still possible that
the local socket was disconnected and thus the RemoteServer-
Connection thread finished before receiving and processing the
final "Destroy" command packet, leaking the dynamically
allocated objects.
Task-number: QTIFW-2566
Change-Id: Ib8c2928b9405b7b3465c731018df73acb51e949f
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
In details view uninstallable and installable components are listed. For
installable components a reason is shown why the component is installed.
Added similar kind of message for uninstallable components as well.
Task-number: QTIFW-2581
Change-Id: Idbf31200793a6c89a4ed4a6fc115f49889b5f9b5
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Replaced component was uninstalled when installing other components
although no update or install was requested to the component. Fixes also
a bug when some components were uninstalled unvisible from user.
Task-number: QTIFW-2577
Change-Id: I6a7e9ce4a56991dfbdea53eb376d782dfb5d050a
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Maintenance tool was using the vendor configured default target
directory for system wide installations instead of the actual
application path.
In addition to possibly several other things breaking as the variable
is used extensively by the framework, this would make the installation
appear corrupted as the local package hub file could not be read from
the incorrect location.
Task-number: QTIFW-2486
Change-Id: I31676e57d83409022e6908e64fac636b12d8262d
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
This was only working when a component containing maintenance tool
replacement was updated. For other 'Essential' and 'ForcedUpdate'
components nothing happened after clicking the restart button.
Task-number: QTIFW-2381
Change-Id: Ie59315b1d7e123af7169dff267ee2e1a4cf6b470
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
If there are lot of components installed, querying core from component
caused unnecessary performance hit. Also replaced the foreach keyword
with the preferred C++ range-based loop
Task-number: QTIFW-1021
Change-Id: I961439ba14f26fee21f201769a71319b4b98d14b
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The ComponentModel object was not always reset in case we already got
to the point of clearing the source data (deleted components owned by
PackageManagerCore from previous fetch) and failed after that, leaving
the model with dangling pointers to the deleted component objects.
If we were already on ComponentSelectionPage, this would cause
segmentation faults when the component tree view using the model would
be shown again after fetch.
Task-number: QTIFW-2441
Change-Id: Ie779de5ca0a3c4ae895ea507e6be4a2f7343501e
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add new optional "moveChildren" attribute to <TreeName> element.
Children of components declaring "moveChildren=true" attribute are
calculated a value for an automatic tree name element.
Multiple components in a single tree branch can declare a
tree name, the order which the relocation happens is from leaf
components to root components.
Components may be moved under another tree name target.
Components may be moved to an existing identifier part that
does not have a component, for example in the following
repository structure:
rootA.childA
rootB
rootB.childB
the "rootB" component can legally declare a "rootA" tree name.
The tree names of components become static after installed. If
a repository declares a new tree name for a component that is
installed, it is only applied after updating in maintenance tool.
Child components, which have an automatic tree name, are moved if
the parent component is updated with a new tree name, however.
Task-number: QTIFW-2380
Change-Id: I9c44a114d3c1248b7e2dd4f0b5cda0739af102f3
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Components with conflicting original identifiers are not registered.
- Components with conflicting tree names are registered with the
original name, if installer is configured to allow unstable
components. Otherwise they are not registered.
- Unaffected components can be installed as usual.
Task-number: QTIFW-2444
Change-Id: Ic1eaf3878f974185bc68202930134e5199dc0398
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|\
| |
| |
| | |
Change-Id: I8e2864b3ec81cffa907fe02ff1f2019e155c54e3
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| | |
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>
|
|\|
| |
| |
| | |
Change-Id: I86049138466399411ba36791330f4a94faad8c52
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
|\|
| |
| |
| | |
Change-Id: I8adecc4573134d2b33f2b98fba9372320b2f8737
|
| |
| |
| |
| |
| |
| | |
Task-number: QTIFW-2195
Change-Id: Iaf75d4a4ff20f20a36c0b2d21abb3969b86b5a84
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Task-number: QTIFW-1945
Change-Id: Ic8a076a28385e99ad09cfbccd07c7012d6570639
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|\
| |
| |
| | |
Change-Id: If5205ff6ef2c8989520e24d41595c04d5920d207
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|