Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. General talk
  3. Announcements
  4. Elegant Auto Updates for Qt - Feedback Wanted
QtWS25 Last Chance

Elegant Auto Updates for Qt - Feedback Wanted

Scheduled Pinned Locked Moved Unsolved Announcements
updateinstallersparkleauto updatechangelog
7 Posts 4 Posters 3.6k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • pentacentP Offline
    pentacentP Offline
    pentacent
    wrote on last edited by
    #1

    Dear fellow Qt developers,

    first of all, I hope this is the right place for this topic. If not, I would like to apologize in advance.
    I used to be a Qt Ambassador in the ol’ Nokia days but I’m still new to this forum :-)

    I’ve been developing desktop apps with Qt (and other frameworks) for many years now and I found myself rewriting boilerplate code over and over: Every one of my applications needed auto updates.
    Of course, there are frameworks like Sparkle that help you with that but none of them are really great when you’re trying to have a good user experience across multiple platforms.

    So I came up with DBLSQD.
    DBLSQD is a Release and Update server that provides your application with information about new releases.
    You can use DBLSQD through a simple CLI tool that does all the work for you: Uploading a new release, creating a changelog, distributing it to existing users and creating a changelog.

    You can either build your own UI around DBLSQD with the SDK or use the drop-in GUI.

    I’m only just starting out with DBLSQD, so I’d love to hear your feedback and thoughts on it!

    Site: https://www.dblsqd.com
    Docs: https://www.dblsqd.com/docs/integration/qt


    P.S: Here is what integrating DBLSQD into a Qt5 application with the drop-in GUI looks like:

    #include "dblsqd-sdk-qt/feed.h"
    #include "dblsqd-sdk-qt/update_dialog.h"
    
    dblsqd::Feed* feed = new dblsqd::Feed("https://feeds.dblsqd.com/:app_token");
    dblsqd::UpdateDialog* updateDialog = new dblsqd::UpdateDialog(feed);
    

    Screenshot of the DBLSQD drop-in GUI for Qt

    1 Reply Last reply
    1
    • ? Offline
      ? Offline
      A Former User
      wrote on last edited by A Former User
      #2

      Hi! To be honest, instead of adding another remote attack vector to the users' computers by having yet another half-baked self-updater, I'd very much prefer integration with the operating systems' native package managers.

      VRoninV 1 Reply Last reply
      0
      • ? A Former User

        Hi! To be honest, instead of adding another remote attack vector to the users' computers by having yet another half-baked self-updater, I'd very much prefer integration with the operating systems' native package managers.

        VRoninV Offline
        VRoninV Offline
        VRonin
        wrote on last edited by
        #3

        @Wieland said in Elegant Auto Updates for Qt - Feedback Wanted:

        I'd very much prefer integration with the operating systems' native package managers

        That's not really an option in windows though.

        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
        ~Napoleon Bonaparte

        On a crusade to banish setIndexWidget() from the holy land of Qt

        ? 1 Reply Last reply
        0
        • V Offline
          V Offline
          Vadi2
          wrote on last edited by
          #4

          I very much appreciate this project! Thanks! Will look into this seriously - we need such a thing for Mudlet too.

          1 Reply Last reply
          1
          • VRoninV VRonin

            @Wieland said in Elegant Auto Updates for Qt - Feedback Wanted:

            I'd very much prefer integration with the operating systems' native package managers

            That's not really an option in windows though.

            ? Offline
            ? Offline
            A Former User
            wrote on last edited by
            #5

            @VRonin If I understand this correctly, Windows 10 has a native package manager named "PackageManagement".

            1 Reply Last reply
            1
            • pentacentP Offline
              pentacentP Offline
              pentacent
              wrote on last edited by
              #6

              @Wieland @VRonin I agree that package managers are generally preferable but there are two are two major problems:

              1. Package managers only provide additional security when you limit yourself to software provided by the OS vendor.
              2. Package management is only really available on Linux, macOS doesn’t have any package management and OneGet on Windows isn’t really geared towards the general public.

              So, in my mind, the best way to make sure users have easy access to the latest version of your software - and thus avoiding potential security problems with older versions - is using some sort of update mechanism like Sparkle or DBLSQD.

              But I didn’t mean to start a discussion on Windows vs Linux or the utility of auto updates in general :-)

              So, if anyone here still hasn’t been scared off and would like to give DBLSQD a try, I’d be happy to help them set it up and hear their feedback.

              1 Reply Last reply
              0
              • V Offline
                V Offline
                Vadi2
                wrote on last edited by
                #7

                As I mentioned earlier I was pretty interested in this as nothing else with sufficiently good end-user experience exists in the Qt world. There is the Qt Installer Framework, but from what I've seen in Qt Creator, that is designed for developers - pulling people through wizards is not the way to go in 2017.

                I've implemented DBLSQD in Mudlet, an open-source project (code available). We use DBLSQD handle the server-side part of running an updater - provide a feed clients can check for new versions, and parts of the client-side as well. On the client-side, it handles downloading of the new binaries, showing the update window, and a changelog window post-update.

                Installing updates is complemented by Squirrel on Windows and since we use AppImage on Linux, no installation is necessary there. I did find it too difficult to integrate with Sparkle on macOS given by lack of Objective-C knowledge that Sparkle required, on macOS we use Sparkle entirely and DBLSQD provides the feed for Sparkle to work with.

                So, overall, I'm super happy with this! Finally been able to add an updater to our application and @pentacent has been super helpful throughout the process. He's super responsive in communication, he adapted dblsqd to fit our needs, and he was also happy to include contributions we made to the clientside code. If I need an update solution for a commercial project, I would be more than happy to purchase a plan - the tech is good and support is top-notch.

                1 Reply Last reply
                0

                • Login

                • Login or register to search.
                • First post
                  Last post
                0
                • Categories
                • Recent
                • Tags
                • Popular
                • Users
                • Groups
                • Search
                • Get Qt Extensions
                • Unsolved