Details
-
User Story
-
Resolution: Done
-
Not Evaluated
-
None
-
None
-
None
Description
Requirements (this list is open for further updates):
Packaging:
- Package pre-built binaries, CI system produces build artifacts per module, per module version and per configuration
- Package repository granularity [1]
- Per product / per Qt module
- Per module version
- Per build configuration
- e.g. Qt5 integration produces ~ 40 (submodules) x 30 (packaging configurations) = 1200,
- Q: is this feasible? Every Qt snapshot would mean ~1200 package repository updates?
- Package manager tool(s) integration to existing system: Python 3.x, Linux
- Control scripts possible for each installable component
- e.g. when installing a Qt package:
- create shortcuts
- register file types (QtCreator)
- after installation has finished, open web page etc.
- add to PATH
- invoke system commands (check e.g. that xcode exists on system)
- ...
- e.g. when installing a Qt package:
Installer:
- The idea is to provide a CLI (Command Line Interface) on top of the package manager
- Easier way to list, install, update, remove Qt products, Qt versions etc.
- the idea is to package each Qt module separately so over time there will be a lot of packages, the CLI would provide more tailored view to packages
- Easier way to list, install, update, remove Qt products, Qt versions etc.
- QtCreator integration
- QtCreator plugin to interact with the CLI, install & update Qt packages
- Qt Installer
- Provide similar install experience as with current Qt Installer-Framework
- Would use the CLI
- Wrap all package manager dependencies and produce standalone (static) installer for all host platforms: Windows, Linux, macOS
- License checking / Qt Account integration [1]
- Users are granted to certain repositories based on the purchased Qt license thus the required granularity in online repositories
- Qt specific server returns information to installer, based on Qt Account (login), which repositories are accessible
- permission control per repository [1]
- Proxy settings
- Admin installs
- Specify installation directory
- Disable installing to path which contains spaces
- Offline installer (ability to generate offline installer from online installer (selected packages))
- Install "external" dependencies, e.g. VSRedist (embedded .msi)
- Suggestion: ditch the "MaintenanceTool", the installer could allow the user to "select" existing QtSDK installation path and continue from there..
Back-end:
- Package repositories are hosted by different CDN systems
- OpenSource: MirrorBrain
- Mirrors are not hosted by Qt Company i.e. no direct control over those
- We sync to master (hosted by us) and mirrors sync content from our master at different times (hourly ... weekly)
- sync to mirrors need to be "atomic" so that all relevant data from update is visible to users at once
- Currently we first push & sync payload, after confirmed that payload exists at master mirror then the metadata is pushed and sync'ed, once metadata is mirrored the users see the content
- sync to mirrors need to be "atomic" so that all relevant data from update is visible to users at once
- Enterprise: Amazon S3 and other decicated servers
- OpenSource: MirrorBrain
- Current Qt Installer-Framework based online repositories are plain files under certain file paths, no actual server needed, files are retrieved via http(s)
- If the package manager requires a server running on each mirror?
- How do we sync content from our master to each mirror? Do we mirror the raw data or do we need to push via each package manager server instance's API (e.g. Conan)?
- MirrorBrain: all mirrors need to run the package manager back-end server and need to be informed about required updates etc.
- Install and download statistics (client informs server what Qt packages has been installed and what licenses has been approved)
Attachments
Issue Links
- relates to
-
QTBUG-62425 Changes planned for Qt 6
- Closed
-
QTBUG-73760 Move third-party components to dedicated package manager
- Open
-
QTBUG-73968 Qt6: Poc for Vcpkg based installers
- Closed
-
QTBUG-74360 Qt6: Poc for Conan.io based installers
- Closed
-
QTIFW-1207 Refactor Qt Installer Framework to Better Match New Versatile Requirements
- Withdrawn