| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
When trying to install or update component which is not found, a warning
is dispayed. Changed the wording so that the texts fits both to update
and install commands.
Change-Id: I06c58624fc33586f64a2c63768690ab431e661e8
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Progress information is printed using same static instance of the
coordinator by different operations. The operation object pointer was saved as key to QHash so that progress could be tracked. This has caused problems in installer as QHash insert occasionally caused segmentation fault.
Fixed so that the progress information is no longer tracked based on
operation object pointer, instead object name is used.
Task-number: QTIFW-3314
Change-Id: Ic4007f226321e109109006c5c89415308920c614
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
In Windows, maintenance tool is written to registry. 'Add or remove'
program in Windows settings uses the registry, and maintenancetool can
be started using the settings. Fixing the maintenancetool parameters so
that selecting 'Modify' will open the maintenancetool in packagemanager
mode, and 'Uninstall' will open the maintenancetool in uninstaller mode.
Change-Id: Ib1e8c80132f6e2eb2f8cfa22910b4ad1ca696f06
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Developer can override productkeycheck, there can be cases that
developer wants to show some additional license text in CLI before accepting
the licenses. The license text can be accepted or rejected by CLI
command Accept/Reject, or by using --accept-licenses switch for
non-interactive acceptance.
Task-number: QTIFW-3319
Change-Id: I60e1ea36cf3f7f98af62c06c2535342003ceb9a6
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Especially in installers which contains huge amount of repositories, it
takes a long time to perform commands from CLI. If the repositories are
filtered using categories, it saves a lot of time if the components to
install/update etc. are tried to install/update from the defaultly selected
repository categories. Assuming that the component is found
from the defaultly selected repositories. If the component is not found from
defaultly selected repository categories, then all categories are searched for
the component.
Implemented also a filter logic, where the components to install are
searched earlier, if the component is not found then we can exit early.
Task-number: QTIFW-3251
Change-Id: I1274b5f56dbff293554cb21839a8cea63a7d2dcc
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
| |
We need to access the core functionality despite of what user interface
is used.
Change-Id: I6c4c7e8526ff24a479128061aa40fba66e61660c
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a custom requirement for Qt Online Installer. Qt Online
Installer has a huge amount of scripts to be evaluated. Most of the
scripts don't need an evaluation unless those are installed. Skipping
the evaluation of scripts has quite significant
performance impact. As the postLoad setting in component level is a big
task, enabling support for Qt Online Installer to set the postLoad value
to scripts per repository.
Task-number: QTIFW-3173
Change-Id: If37d7ff39ad07ee56e9a9559c837966c23d76d6e
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Return early from building the component aliases for non-CLI runs, to
save some time from the metadata evaluation phase. The aliases are
currently only usable from installer's CLI.
Change-Id: Id8acde1b8353f498e3dfd0bd69156b17de245105
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
| |
Change "Requires" to "Required" and use plural form for the dependency
properties, to be more uniform with the dependency properties for
components.
Change-Id: Iccb36701bc32ebafd27914272225ad1615c5f9fa
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For the sanity check calculations, all component aliases are manually
selected to detect possible errors in packaging preventing installing
of an alias. As the order of install for selected aliases is undefined,
in some cases the installer did not detect that an alias requires an
unstable alias.
Consider an example scenario:
* aliasA -> requires aliasB
* aliasB -> requires aliasC
* aliasC -> missing from installer
The unstable status is set the first time we query for the required
aliases of an alias, so the case for "ReferenceToUnstable" could go
amiss if the required aliases list for "aliasA" was populated before
for "aliasB".
Fix by populating the required aliases and components in the order
of the alias dependency graph.
Change-Id: Id2fc9e3e1b315f5be98ca8915a0938abad1a2eb5
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
In addition to RequiresComponent and RequiresAlias, introduce new
OptionalComponent and OptionalAlias properties for component aliases.
The new properties are used to declare optional requirements for
aliases, which do not cause the declaring alias to become unstable in
case the referred component or alias is missing from the installer.
Task-number: QTIFW-3166
Change-Id: I43c8cd08099e879180ec7e028b55836750c727bd
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
| |
The progress did not work correctly yet in all steps.
Task-number: QTIFW-3068
Change-Id: Id33f92020dcee792f35a45a3459473535404267e
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce concept of component aliases, which act as an alternative way
for referring a set of related components.
Component aliases are declared in an alias definition file, which is
included to the created installer's binary layout as a resource. The
file lists the available aliases, including metadata - such as name,
version, and description - and the list of components and other aliases
the alias requires.
Aliases can be referred only from the CLI for the time being, with the
supported commands 'install' and 'search'.
Task-number: QTIFW-2978
Change-Id: I281f171cc7d932ce496051d7090ae169a4709eec
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
| |
Also adding tests for UpdateOperations which used the deprecated
QVariant functions
Task-number: QTIFW-3077
Change-Id: I5b6b975631b4d0380511f614b0cad1f90a4849e8
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Cache integrity checking takes some time in Windows and progressbar
showed nothing. This caused an illusion that installer did nothing.
Adding a busy indicator to progress bar.
Task-number: QTIFW-3068
Change-Id: I1c685bf1e2ac4d2fca5db49054f7369d90f24480
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
| |
Task-number: QTIFW-1829
Change-Id: Iad99b41ec67b0d4c64623da04fff65a737f46ff2
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
| |
To get rid of [-Wreorder] warnings
Change-Id: I2b0b071100eeb1830017da2913b62c00a18823bd
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
QScopedPointer function take() is deprecated since 6.1. Fixed by using
std::unique_ptr instead
Task-number: QTIFW-1829
Change-Id: I7a0c0167044dedf2f520fffc97a8f7d2a1e72371
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
|
|
|
|
|
|
| |
Task-number: QTIFW-1829
Change-Id: I8ac001416331493a7bdc90cdeaafca034e0bbbd7
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The installer.gainAdminRights() and installer.dropAdminRights() methods
are invokable from the scripting API. During installing, updating or
uninstalling components, installer does it's own decision making to
request and drop admin rights on-demand, but this could be overridden
with the aforementioned methods.
This was not taken into account, instead it was only checked if admin
rights were gained in the context of the calling method. Fix by
checking if the admin rights were present at the start of the installer,
or if they were requested by anyone during installation.
Task-number: QTIFW-2929
Change-Id: Ie4f6fc0ac746183b00f460a2e60c57c2eae9808c
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At the end of calculating components to install or uninstall, the
check states of the components are updated in the model.
The updateComponentInstallActions() asks both installer and uninstaller
calculators for resolved components, but these may not be valid after
new repository categories are fetched, and the component model is reset.
This would result in dereferencing invalid Component pointers in some
cases. The root cause was that the other calculator was not quaranteed
to be cleared when another requested updating the check states.
Fix by clearing both calculators before full recalculation occurs. Also
clear the calculators when the component environment is reset, for
correctness and to avoid bumping into the similar issue elsewhere in
the code.
Change-Id: Ide6a6188b9a19f4680cd79b55dcc842bbe98e174
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There was behavioral mismatch of handling processes to stop for updates
between GUI and CLI modes.
For CLI, each command that would make changes to components would
recursively check the installation directory for running processes
early on, and block continuing if such processes were found. In addition
to this, the component scripts may have requested to stop processes
before performing component 'updates' (add/remove/update).
For GUI, only the latter functionality was utilized, so remove
the early checks from the CLI side to make the behavior uniform.
Task-number: QTIFW-2927
Task-number: QTIFW-3009
Change-Id: I028e699c43ef4352593b49ccc8a927644916c41a
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|\
| |
| |
| | |
Change-Id: I486d6f3f6fbdbfe1b92ccff918aaf0fe72aa2fc8
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The states were only updated at the end of PackageManagerCore
::recalculateAllComponents() method - the method calls:
PackageManagerCore::calculateComponentsToInstall() and
PackageManagerCore::calculateComponentsToUninstall()
functions in that order, and both emit signals indicating the finishing
of the calculation. Any install script connecting to these signals that
relies on the correct state of the install actions for the components
would work incorrectly, as the state was not updated to reflect the
calculation result yet.
Fix by updating the install action state in both functions before
emitting their finished signals. Also rename the function to better
distinguish its purpose from updating the check state of the components.
Task-number: QTIFW-2976
Change-Id: I67cd88478c39215ec124a5451c1f29a63cb1c82c
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Updates.xml contains Checksum variable which can be set to false to
skip the archives checksum verification. The variable was read from one
arbitrary Updates.xml file and that was used in all downloads. Fixed so
that the checksum is read per Updates.xml. This change also speeds up
the component generation phase as it no longer needs to read Updates.xml
file.
Task-number: QTIFW-2805
Task-number: QTIFW-2928
Change-Id: Id28dd370ef200aec67cb85cbbc1d08d925b43c21
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
As the classes already share similar features and public API, it would
make sense to inherit a common abstract class to define the interface.
Change-Id: I7ed278b1b049b7ec12c4401e55fdf39306b0ab85
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I07baba6a0e64b6022e6a933708e199551be7dd2f
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
IFW could already previously detect circular and missing dependencies by
running a precheck calculation when building the component tree.
However, there can be also cases of where the user selection results in
unsolvable changes to components.
One such case was the erroneous possibility to uninstall a component
marked with ForcedInstallation, if any of its dependencies was checkable
and the user unselected it for uninstallation.
Add support for reacting to such errors in the component tree view,
displaying a message box about the invalid dependency resolvation error,
and blocking further navigation until the component selection passes
the dependency calculations.
Also attempt some refactoring the related code to simplify the different
call sequences resulting in recalculation of the components.
Change-Id: I9dc78f858bd4be7932f89f8e14bbfd97fbd3a0f6
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTIFW-1829
Change-Id: I5f062ae4c6389aba57b1de6f0e1884b4cd301334
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTIFW-1829
Change-Id: Ieae92a7736784784bc548433eda8b073b1a4b8f8
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Id8121e6b4cdda23c8c44cf779e35dce8d9a28090
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If component is replaced with a component which is installed as
autodependency to other component, the replaced component was not
uninstalled on update.
Task-number: QTIFW-2887
Change-Id: Ibad04df765191f0e399c6f6020cdf081dba5d803
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
As there are several optimizations done, the single click of component
in component selection tree is not slow anymore. Cleaning the code so
it is easier to maintain.
Basically this revers commit a28cf55b5a5007c0dd952b3012c076d9da329f0f
but as there are bug fixes made after that so pure revert could not
be done.
Task-number: QTIFW-2885
Change-Id: Id486d5dc68c42c31b4848cd19a1761bcfe242db6
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Also clearing the foundEssentialUpdate flag in clearAllComponentLists()
function so that unit tests core status will match. As the unit tests
are not done to fully cleared core the foundEssentialUpdate was set to
true although the update was done and other components were installed.
Task-number: QTIFW-2732
Change-Id: I9b6754595b4b20b1ddc95d7587d98474a6967add
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Added const and reference to function names, removed unused
variables etc.
Change-Id: I5e3851c13ff3baf1884356198020fc86e69d69b4
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I413669860334d96de684c1c32962a33166ac6c7c
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|/
|
|
|
|
|
|
|
|
|
| |
This change adds attribute, postLoad, to existing <Script> -element.
Using <Script postLoad="True"> will call the script loading and
evaluation only to those components which are selected for install or
update right before the components installation start.
Task-number: QTIFW-2820
Change-Id: Ic1967d329cbb5de6a0216ff3f76cc2ede178db80
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|\
| |
| |
| | |
Change-Id: If99e84c5f6e6914f0d90770053ce6850e70ed403
|
| |
| |
| |
| |
| |
| |
| | |
Fortunately no reported issues yet that would have been caused by this.
Change-Id: I0ee9cb368600f660eb7c048e8cf3df5d31e43b4f
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Maintenancetool can be either app bundle or executable itself. In case
the maintenancetool is the executable itself, we need to create the app
bundle in the code.
Task-number: QTIFW-2856
Change-Id: Ib884cbd7d7f18b9503938114d56f3c396c8d3bd6
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The option can be used to select the path for metadata cache without
opening the installer's settings dialog.
Add public PackageManagerCore::resetLocalCache() function and remove
automatic initialization of the local cache in the private core class
constructor, so we can control the timeline better. Also make
PackageManagerCore::clearLocalCache() a regular member function as
it does not need to be a Qt slot.
Task-number: QTIFW-2810
Change-Id: Ia4a903026a10b90da16ba1b93fd3098a709f7ed7
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously maintenance tool could be updated from online repository
placing installerbase to repository and setting setInstallerBaseBinary()
in install script. The maintenancetool app bundle was written in the
code and installerbase placed under .app/Contents/MacOS/. This prevented
the maintenancetool app bundle to be signed and notarized.
Fixed so that the whole app bundle can be placed to repository. This
does not break the signing nor notarization as the whole bundle is
copied as it is. The setInstallerBaseBinary() is still needed in the
install script so that the installer knows which bundle is the
maintenance tool. Old way of updating maintenancetool still exists, if
the installerbaseBinary does not contain the ending 'app' installer
assumes that the maintenance tool is the executable itself instead of
whole app bundle.
This change also adds a new binarycreator switch
--create-maintenancetool, which can be used in macos to create the app
bundle for maintenance tool.
Task-number: QTIFW-2750
Change-Id: I3483ddb815d035644e826559947f6f9de4af9361
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Write the settings value to network.xml, with the rest of the user
configurable settings.
Task-number: QTIFW-2812
Change-Id: I90210ddb1426acf06215828dfb18dc65aa107e6e
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Introduce GenericDataCache and Metadata classes for storing the
fetched metadata files (Updates.xml and uncompressed files from
the meta.7z archives) on local filesystem.
The cache uses a checksum based dictionary to keep track of the
cached metadata items, with the SHA1 sums of downloaded Updates.xml
files being the keys to refer single metadata item. We still need
to download all the Updates.xml files on each fetch to check if the
cached metadata items are applicable for the current repositories.
Update the Updates.xml files in auto-test data to have unique
contents, otherwise there could be conflicts with identical test
repositories, as the tests will also utilize the cache now.
Also omit registering Repository type to the meta-object system in
the class contructors, this is expensive as we construct objects
from the class frequently, in the worst case hundreds of thousands
times. PackageManagerCore already does the registering.
Task-number: QTIFW-2621
Change-Id: Iee10ead68befd722ffe7f18ca48483d5a3666658
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The PackageManagerCore::componentByName(const QString &name)
-function is called repeatedly by the InstallerCalculator class
and at minimum once for each install script, because we
automatically inject a snippet which stores the return value
of the function in the 'component' variable for the script context.
Create a <name, component> hash once per each component model reset
to make the lookups faster:
* This avoids constructing a flat list of components and all
their descendants again and again when calling the function.
* The linear lookup from the component list is slow because it
calls componentMatches() for each element until the satisfactory
component was found or the list ends.
* The average time complexity of the key lookup from the QHash
is constant even for large hashes.
Task-number: QTIFW-2790
Change-Id: I580d28f78ac6681d5bcbfbad970002b49de1a830
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Do the replacing of the executable instead by:
- The original MT renames itself to a temporary name
- The new MT is renamed to the destination file name
- The new MT is started as a detached process, it polls to delete the
temporary MT (requires that the parent process exited)
Introduce hidden options, cleanup-update and cleanup-update-only to
start the maintenance tool in a mode for deleting the old binary.
Also fix missing verbose messages on hard restart of maintenance tool
after update. Due to QProcessWrapper::startDetached using a modified
implementation of the wrapped class (QProcess) method, the detached
process was started with a new console instead of inheriting the
console of the parent process. Fix by adding a second variant of the
QProcessWrapper::startDetached functions using the QProcess
implementation.
Task-number: QTIFW-2625
Change-Id: Iebc5b04befa1e79765217f93723f977556e03d90
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I54ae9e455d055abf321ba5c7c02301a889ef7ee2
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When RemoveTargetDir flag is set false, then uninstall.vbs stops with error.
Pass to script the correct arguments.
And remove the target directory only if it is empty.
Task-number: QTIFW-884
Change-Id: I722bfffbecaa6f7f27e545af354649bf17f7a0ae
Reviewed-by: Tasuku Suzuki <tasuku.suzuki@signal-slot.co.jp>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
maintenancetool create dat,ini,xml and txt files on installation.
Remove these files on uninstallation.
Task-number: QTIFW-884
Change-Id: I10a268678f1a4285f4a2fd6a749570f707f0dbc2
Reviewed-by: Tasuku Suzuki <tasuku.suzuki@signal-slot.co.jp>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reverts commit a6f2df9ebdb965d38ea2c263e3b3bea17c7abffe.
Reason for revert: This should go to master as this requires a long localization round and we need to keep 4.4 branch available for quick fixes
Change-Id: I4d4eb27a8f1d791666392ec3249254f6b516205e
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|