Uploaded image for project: 'Qt Installer Framework'
  1. Qt Installer Framework
  2. QTIFW-1214

Create POC using conan.io and VCPKG

    XMLWordPrintable

    Details

    • Type: User Story
    • Status: Closed
    • Priority: Not Evaluated
    • Resolution: Done
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: General
    • Labels:
      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)
          • ...

      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
      • 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
        • Enterprise: Amazon S3 and other decicated servers
      • 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

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            Activity

              People

              Assignee:
              olhirvon Olli Hirvonen
              Reporter:
              kamartti Katja Marttila
              PM Owner:
              Tino Pyssysalo Tino Pyssysalo
              RnD Owner:
              Olli Hirvonen Olli Hirvonen
              Votes:
              0 Vote for this issue
              Watchers:
              12 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Gerrit Reviews

                  There are no open Gerrit changes