| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
Components might be uninstalled also in updater view, for example if the
component is replaced with another components. This was not shown to the
user.
Task-number: QTIFW-2576
Change-Id: I143324eeb4830d15a718005992b3cb35d0f6696d
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Virtual dependencies are uninstalled if all dependencies to the
component is removed. Virtual dependencies were calculated using recent
components in repository, which is wrong as the dependencies may have
changed in the repository, causing the dependencies to be uninstalled
although those are still needed. Fixed so that the uninstallable virtual
components are calculated from repository components if the component is
going to be updated, otherwise the dependeny is calculated from the
local installed packages.
Task-number: QTIFW-2573
Change-Id: If9cc59fa7f453d502ec1883f27273ef604128a6e
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 270c5dfd9b6c86bec8eaf34d0a2c3d3b945ed5e5.
Reason for revert: This caused a regression when an absolute path pointing to a directory non-writable by current user was used.
QTemporaryFile uses its own file engine so we need to use QFile
instead to forward the calls to the elevated privilege installer
process with the Qt Installer Framework's RemoteFileEngine.
Task-number: QTIFW-2575
Change-Id: I47f5bea06f9e1689ee322d972b405d8127967a98
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
This bug was caused by the previous change which allowed the Windows
separators to be saved to dat file without converting to normalized
separators
Task-number: QTIFW-2501
Change-Id: Iaeb70da0eaaa5c677c72178fcb8b336bc50a6842
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
If there was at least one valid component argument, the installer would
silently ignore any invalid component arguments.
Instead print the appropriate "cannot install" reason for such
components but still don't block installation for others.
Change-Id: I7325d151385744ac46fcb5fa04c0eaf6acade3f3
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Libarchive stores most paths internally in a multistring that can
contain a combination of a wide character string, multibyte string in
current locale or unicode string encoded as UTF-8. Try to retrieve and
set a variant of the string with the correct encoding when converting
libarchive strings to/from Qt string classes.
Task-number: QTIFW-2506
Change-Id: I7e7c1e3c5709b669df68b2f3918789ad4ebe4f13
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Execute -operation might be strict with the path separators. If wrong
separators are used the Execute -operation might fail. Fixed so that
Execute -operations paths are saved to dat file without converting to
normalized separators. As the target dir is saved as @RELOCATABLE_PATH@
also for Execute -operation, check from the next available separator
which separator should be used for operation.
Task-number: QTIFW-2501
Change-Id: Ia9969bbe3177a6b2daab21c026df88d4e2ec2bb0
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
| |
Sometimes the textual error message returned by archive_error_string()
does not reveal enough useful information, add also the error code from
archive_errno().
Change-Id: Icc62168bc862484bfa1efc70dd8ca2e341b3394f
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On Windows, the non-admin users cannot create symbolic links by default.
Extracting archives containing symlinks would fail if the installer was
no started as administrator. Catch the case and auto-elevate installer
to extract such archives.
Do not elevate installer if the current user has the privilege for
symlink creation, or if the Developer mode is enabled, allowing
unprivileged creation of symlinks.
Task-number: QTIFW-2428
Change-Id: I0b6b1079daabb9727055dce8a9475c203d7e92b0
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Add information that the predefined variables are not resolved when
calling this function.
Task-number: QTIFW-2488
Change-Id: Ic6da8323c74c216f09dd54610ee9095d0a32c27c
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
| |
ConsumeOutput may be run to fetch a file path. Extra line break in the
end will cause problems.
Change-Id: I61133a66fb3d3a6961e9f79c11f783b5d103f046
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
ConsumeOutput operation executable might be a system executable.
Checking with QFileInfo if the file exists or is an executable does not
work then as QFileInfo expects the given path to be full. QProcess might
still find the executable although QFileInfo does not.
Task-number: QTIFW-2499
Change-Id: I355f24c0c97947f8247667f54f203189b3830ead
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
| |
Use https instead of http in www.qt.io/licensing
Change-Id: I0a2e97afcda03d50fd823be8e11426c2399a3b8f
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|
|
|
|
|
|
|
|
| |
Add where missing. Replace occurrences of Q_DECL_OVERRIDE macro,
building IFW requires a C++11 compatible compiler so the language
specifier is preferred.
Change-Id: Idb75e2813d26b9da85e03891f0ae9537c6524c56
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
| |
Upstream details:
https://github.com/libarchive/libarchive/releases/tag/v3.5.2
Change-Id: I92bc5911bde854c30d0b6515c49b5d512210401f
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Katja Marttila <katja.marttila@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>
|
|
|
|
|
| |
Change-Id: I1d5fdfedaee35c530b383951e6fc69b75bd67d64
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
| |
Change-Id: I4e5d627ae1832f6db63decfe1df4309bee938972
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Removing QWizard::NoDefaultButton will enable enter clicking in macos.
This will also keep the Spacebar -key press to accept the Next -button.
Adding also Qt::StrongFocus to Next -button, otherwise for example the
radio buttons in Introduction -page will get the Spacebar -key press, even
when those are set invisible, causing the installer to be converted to
package manager.
Task-number: QTIFW-2409
Change-Id: I2ad0e98b5be635c2f9e53ec1b6262bd37be22cae
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@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>
|
|
|
|
|
|
| |
Task-number: QTIFW-2437
Change-Id: I3c0293550456f36e37e98e97042bf6bfae6ce96d
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
| |
Also enable linking qtimageformats as a static plugin on macOS,
it is required to read the .icns file to be shown on the dialog.
Task-number: QTIFW-2453
Change-Id: Ib776635167a4c90ffa20a91ecc447d2d73f5aeb9
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Print both 'TreeName' element and 'moveChildren' attribute value with
detailed verbosity mode.
Also use QXmlStreamWriter to write the output documents with
deterministic attribute order, QDomElement stores the attributes
internally in a QMultiHash map, which is randomized.
Task-number: QTIFW-2452
Change-Id: I8eec64d39394f4092f8505ec99869165c82d11da
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
| |
These were printed with a logging category that is disabled by default.
Task-number: QTIFW-2426
Change-Id: I7e7fd650e32f27e80cd5603c5385d3ff2197be7b
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
|
|
|
|
|
|
|
|
| |
Next should be the default selection when use presses Enter. Sometimes
the focus was in Settings button.
Task-number: QTIFW-1046
Change-Id: Idae996bd5a0c511b9d2595a22b7ea0114f34ade1
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
|\
| |
| |
| | |
Change-Id: Ifb02b022312859c2c946ec0debcd77dc90a0ced2
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
By calling toLower() it will go against what the expected format is
for a language such as zh-CN and as a result not find the license
file which is matching this language.
Change-Id: Ibdf7d57d3d2761db7b68edcabf5599b9404f3b7e
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Topmost treeview item should be open by default, but this was
not the case after categories were fetched.
Task-number: QTIFW-2058
Change-Id: If64126623bd7b783524b8bd16771ede574be3b97
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QBSP archives were missing a handler which caused UnzipArchiveTask
to fail when fetching metadata. Also fix the resulted segfault in
UnzipArchiveTask::doTask() when ArchiveFactory::create() returns nullptr
for unknown file extension - it now handles the exception properly.
Task-number: QTIFW-2475
Change-Id: I72624763a06d6e7495daebd69970a5f22a4fd6d3
Reviewed-by: Katja Marttila <katja.marttila@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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Replacable component was not correctly removed in install and update.
Also added new tests for Replace element.
Task-number: QTIFW-2454
Change-Id: Idce7fd1ef0ac2025ca5ca0952ab837e14516ac2b
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On (tree)name conflicts with other than the same component in local and
remote packages - instead of silently replacing the remote package with
local, do one of the following:
- Remote package A may have declared the same tree name as installed
local package B. Catch the case and re-register package A as an
unstable component with the original name, if possible.
- Remote package A may have declared a tree name that conflicts with
local package B's name. Do not register component A.
Change-Id: I16ac583ea10bf203d8b8d0b19e6890f03cf0067a
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The QHash dictionary used to store component objects before building
the component tree may include keys that are either original names or
overridden tree names of components. Only the former were handled when
removing replaced components from the QHash.
Task-number: QTIFW-2455
Change-Id: I340aa61c724da0da62d7e5a875a38b6ecc0eceb5
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>
|
| |
| |
| |
| |
| |
| |
| |
| | |
qSort is obsoleted and std::sort should be used instead. Also QHash
insertMulti is obsoleted and QMultiHash should be used instead.
Change-Id: Ie4a44355d25d44943a4eeefc2842b4af3e126101
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTIFW-2439
Change-Id: Ie8f7a35d73d847e8864b1f1f2dc5fb7bc8ed9092
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We store the unstable state in a QHash dictionary that holds the
misc variables for components.
Change-Id: Icc88032f4bf07176e684a37d896d676838b448f8
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It is hard to match the case so lets make users life a bit
easier by allowing the case insensitivity.
Task-number: QTIFW-2451
Change-Id: Ia9f307f4a3a2f9dbb027c294bd797263c21b5bd8
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTIFW-2408
Change-Id: I6aed46dc12e184d021c2a80d465fda11a5f6870f
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Also update build version requirements.
Task-number: QTIFW-2388
Change-Id: Iae1949548dda7a3b8d448228e27060efb5abd8eb
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
There is a disparency in the return value of QFileInfo::isFile() on
Windows whether QFileInfo uses QFileSystemEngine directly (for local
files, returns false) or with another file engine (QFSFileEngine in this
case, returns true), when the file does not exist on disk.
Installer registers its own file engine handler that handles file
engine creation. It creates custom RemoteFileEngine instances suitable
for writing into more restrictive locations when the connection to the
elevated installer server process is active.
When calling RemoteFileEngine::fileFlags() with TypesMask parameter, the
returned combination of enum values includes FileFlag::FileType when
the given file does not exist, this can be reproduced with both the
active remote server connection that forwards the file engine calls to
the server process, and when the composed QFSFileEngine object is used
directly without the remote connection.
Fix by adding a check if the given target directory path exists, if it
doesn't we can assume it is a directory to be created by the installer.
Also rename function to better match what it does.
Task-number: QTIFW-2383
Change-Id: I906b0676802d9d94e70abeb2dea1f71866cbbec8
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Prefer elided text to horizontal scrolling. Fix invalid size hint for
side widget items, otherwise the item delegate will compute the size
hint based on the item data. We want to include custom height to not
make the list cramped.
Task-number: QTIFW-2388
Change-Id: I490a12c04f921b8c9a01c3ac72c6bcd4d951f6d3
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Task-number: QTIFW-2404
Change-Id: I4c62d283d54a1f180f9c3525da0728a1c75ef50e
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Make libarchive the default handler for 7z archives if the IFW
tools were built with the 'libarchive' configuration feature.
The LZMA SDK library is still built and can be used instead
if the config feature is omitted.
Also modify tests.
Task-number: QTIFW-2375
Change-Id: I1091d5fa140cbd783cddecc595f35c6562639b07
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Arguments with wildcards were not working if archivegen was called from
somewhere else than shell, like from within a Python script.
Task-number: QTIFW-2423
Change-Id: Icf6d6c3c45ad9050a03c1a3dd7c4d9f10d1f3be6
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When verifying the selected target directory for forbidden directories
(user home and root), we incorrectly checked if the directory was
empty regardless of if the path of the QDir object was empty.
No need to check this as installing into either of these should be
prevented - the folder may be populated after initial installation and
installer would then nuke it on uninstallation.
Also fix related warning about deprecated '=' operator.
Task-number: QTIFW-2424
Change-Id: If4835dcc719e09e0a51a13149ae05d75c0e2b359
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Instead of constantly checking (busy waiting) if the server was started,
perform the task in a local event loop.
Task-number: QTIFW-2374
Change-Id: I7ddf63014c0cf0a187085339a5394186b0245a63
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
|