| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Change-Id: I50ff0eb9dd1f3c2bbcc20abbed5244e46229468a
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, offline installers did not consider configured repositories
for metadata fetch, but this was changed in a fix for bug
report QTIFW-3078.
Some users were relying on the previous behavior, so make it
configurable in the installer's config file, and default to the
new behavior.
Task-number: QTIFW-3160
Change-Id: I26c0ab825f080f81ce2320e0be5f75334207c33e
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Task-number: QTIFW-1829
Change-Id: I29a7465c854c8a1af7ec5d9af600bfc65dc1950e
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Licenses value write was accidently changed from lower case to upper
case, which caused that the licenses undo operation did not find a value
for the license undo. Fixed the value settings, and also removed the
error dialog as there is no point in showing that in undo operation as
we are removing the component.
Task-number: QTIFW-3013
Change-Id: I402658a05b904454da045ba3fe38c21cf4c3dd4b
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Once installer is started, metadata is downloaded to cache and that
cache is used later to speed the installation process. Cache should not
get invalid but sometimes that can happen. Informing user where the
cache exists and that clearing it might help when the error occurs.
Task-number: QTIFW-2998
Change-Id: Ia2c2a1209fa84070f9ad337c63a429a1afd721a7
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This speeds up the metadata evaluation with the Qt online installer,
which uses a dynamic list of temporary repositories that can be
provided with an expected checksum information. The installer or
maintenance tool can skip downloading the Updates.xml files again for
already cached metadata items, in case the checksum of the file in the
repository has not changed since the last metadata fetch.
Task-number: QTIFW-2873
Change-Id: I61384d8bcbd29e01fda3019fb00d7360b0f81435
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>
|
|
|
|
|
|
|
| |
Task-number: QTIFW-2805
Change-Id: Ib37475314375ad0977b627016901e9b4d57cdb28
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
The command can be used to clear the contents of local metadata cache
without opening the installer GUI.
Task-number: QTIFW-2810
Change-Id: I18cec027b9945f83d25fa1716858756ececae6d4
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Task-number: QTIFW-2208
Change-Id: I8c8e9bd798320ab6d4397ac411cfea75177d27f2
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Search command results can now be optionally filtered with
the '--filter-packages'-option, which takes an unspecified
count of key-value pairs that contain the desired package
information element and a regular expression used to find
matches in the element.
Example usage:
'installer --fp "Version=1.0, Description=Some text" search *'
Only the packages which match all given filter rules are
included in the output print.
Task-number: QTIFW-2168
Change-Id: I788b065d95952b988489c36db80b3c859b970f05
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Task-number: QTIFW-1903
Change-Id: I4d8eaf71a1a63dfbfa75ea61af728fa1f5e3e9f3
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
| |
Task-number: QTIFW-1945
Change-Id: Ic8a076a28385e99ad09cfbccd07c7012d6570639
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
| |
Task-number: QTIFW-2084
Change-Id: I4047457aae9709819f1a19ec9c74c5a88e9b7e7c
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@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>
|
|
|
|
|
|
|
| |
Task-number: QTIFW-2061
Task-number: QTIFW-2060
Change-Id: Idaabb6a08f5e52aa7808de4b3ad541ae47dc4dd8
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
| |
Task-number: QTIFW-1984
Change-Id: I9e2c9302d4a21f169266b147bac618758f004fa5
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
|
|
|
|
|
|
| |
Task-number: QTIFW-1981
Change-Id: Ibb531dcd6e95c6dc6a17d92659736f3cab57af29
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
|
|
|
|
|
|
| |
Task-id: QTIFW-1980
Change-Id: Id4641406d67f377597575d1e7f9d2e6d312091a3
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
|
|
|
|
|
|
| |
Task-id: QTIFW-1982
Change-Id: I97f51c0931f4baef5e19f0e819bd6beee186301e
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add possibility to show an arbitrary number of product related, or
other images on PerformInstallationPage. These can be specified in
the installer configuration file, using <ProductImages> element with
one <Image> child element for each file name.
Task-number: QTIFW-1900
Change-Id: I2be727d9189963ef1a79046150111dd8c91153c6
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
These should be only provided for backward compatibility and be hidden
from help text.
Task-number: QTIFW-1791
Change-Id: Iff92bdf0be425edf724d3bcd3984458eca5f8ff2
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Task-number: QTIFW-1760
Change-Id: Ibd0668756700eeab68bce12ddce1866893cc08f9
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
With this change user can individually answer to message queries if
message id is known. The syntax is --auto-answer
message.id=QMessageBox::Ok,message.id2=QMessageBox::Cancel
Task-number: QTIFW-1740
Change-Id: I86d08df77cf5f3d665901b599586d8c52b7dcdf6
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added new command line switches accept-messages and reject-messages to
automatically accept or reject installer message queries.
Also removed Retry option in CLI when archive or hash download
failed. With GUI it is possible to try Retry in case either is missing
but without GUI Retry will cause infinite loop.
Added unit tests for accept-messages and reject-messages using CLI.
Task-number: QTIFW-1736
Change-Id: Ie87d2d8157be772b790415c96e5b94fc882d4be7
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
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 single or couple letter short options and two letter short commands.
Single letter short options can be passed in a single joined form, for
instance '-dg'.
Also change CLI options constant string literals type to QLatin1String
as we would have to use this as a wrapper anyway wherever the constants
would be used, causing quite long and verbose statements.
Task-number: QTIFW-1634
Change-Id: I17e80c9a657d934687d2b7e87fcecddffa1b9b21
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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>
|
|\
| |
| |
| | |
Change-Id: Ia4cf718409ce431cce8d766865ecec506426afb9
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| | |
We are not showing GUI in checkupdates so add it to options too
Change-Id: I581df6671429ce83d9d48e613f5e6a7e7e3501ed
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|