Start a new topic
Implemented

Better Upgrade/Patching mechanism

as a long time RoyalTS user (since v2)... I'm finally going to vent a complaint:


While I love, and applaud your constant update/improvements...


I'm SO sick of having to run a full 130meg download/install/wait-while-dotnet-chugs-my PC 'optimising'.


I use RoyalTS on 7 workstations at the six different sites(Schools) I work at, as well as my Home PC...


and it's REALLY starting to grind my gears at having to upgrade all 7 installations, sometimes every week or two...

(5 upgrades since v6's June release = me installing RoyalTS 35 times in less than 8 weeks!!)



SURELY you guys can come up with a built-in updater/patching system


I'd love it to just launch RoyalTS.. have it detect a new version available -> Dialog: "would you like to upgrade?"    Yes.... 20meg patch downloads/installs... and bam.. done!



thankyou for my vent :)


Hi Rohan,


I can hear you loud and clear and I really wish it would be much easier. One thing I can tell you it's not as easy as it sounds. Building something like that from scratch is a huge undertaking. We looked at https://github.com/Squirrel/Squirrel.Windows and https://github.com/vslavik/winsparkle which are frameworks which could improve update size and handling but during our tests we stumbled upon several issues:

* stability: these libraries work well most of the time but when it doesn't, it's really painful to debug, diagnose and get a fix in

* open source: while open source is mostly a good thing and I'm happy to support open source projects wherever I can, looking at squirrel alone, is not really reassuring. Not sure if the project is "dead" already but they are desperately looking for contributors

* enterprise support: a lot of our customers are enterprise customer and they rely on good mechanism to deploy software in their infrastructure. MSI is still the best and most stable technology for that. The other frameworks make it hard in these environments.


With .NET 5 and later we now also have the opportunity to create self-containing deployments. Which mean, we are not dependent on any .NET Framework installation on the client machine. We had several issues in the past because of a corrupt Framework installation or some weird issues where the app just wouldn't start or behave because of the version installed on the client was slightly different than the version we compiled against.


The downside of self-contained deployment is the increased package size but the upside of using .NET 5 in Royal TS V6 is that the "optimizing" part is a thing of the past. Installation (once downloaded) should be much quicker now (essentially a file copy).


I'm really sorry we don't have a better solution right now but if there's a better alternative which works with all our requirements, I'm happy to switch to something more efficient.


cheers,
Stefan


1 person likes this

thanks for the comment..

while not a programmer, I have been in IT long enough to fully get everything you've said.


it's just that I look at other apps like Chrome, Slack, Cisco Webex, and even Lego/Bricklink's Stud.io, and they are not simple programs.. yet they somehow manage to update themselves easily


I'm not overly fussed by actual installer file size.. thankfully living on 50mbit+ connections everywhere now.. it's just the manual install process that's starting to grind on me.. 


Looking forward to any improved system


on a side note, I was pleasantly surprised to see the new 'winget' PS module knows about Royal!

>winget install royalts

Well the products you listed are not simple programs but they have dedicated team far bigger than our entire dev team just handling the installer/update mechanism alone ;) Maybe we get there sometime...


I'm a bit confused about the manual install process you mentioned. Are you referring to manually download a MSI file using the browser and installing the update? Royal TS should notify users about a new release and usually it downloads in the background and updates itself as soon as the app is closed. Pretty much like Chrome except the part where we give the user more control whether or not the update should be installed.


The winget listing is not maintained by us yet. We tried to include this in our CI/CD pipeline (like chocolatey) but the tooling is not good right now and registering new releases is quite painful - at least it was. We will definitely look into winget soon again and we are also investigating a listing in the Microsoft Store right now.


Regards,
Stefan

Yes.. I guess it's a bit better now.. I do the 'download from within royalts, and install when exiting/restarting'


 But I still need to <uac-prompt> and  next through the MSI... 


I also was a little bit annoyed when V6 didn't upgrade/replace/uninstall V5... it took me a bit to realise, that the icon pinned on my taskbar was still launching V5!!  Not sure of how many people need multiple versions of this app installed? :)

and even with same versions I sometimes lose my taskbar pinned icon.


With regards to winget, this is what appeared in the console:


PS C:\Users\rbeckett> winget install royalts

Found Royal TS [RoyalApps.RoyalTS]

This application is licensed to you by its owner.

Microsoft is not responsible for, nor does it grant any licences to, third-party packages.

Downloading https://download.royalapps.com/RoyalTS/RoyalTSInstaller_6.00.50710.0.msi

  ██████████████████████████████ 214 MB / 214 MB

Successfully verified installer hash


So it is coming directly from your servers!


Thanks again
RB

Yes, the MSI is from our server when you use winget but we don't maintain the package itself to be registered with winget. This seems to be community driven but we do plan to update packages there as well in the future.


There's also an explanation why we leave the old version installed when a new major version is release. We actually did that in the past but it upset a lot of people because a new major version also means a new license is required and only customers with an active maintenance get that for free. We got a lot of complaints from users who needed to pay that this behavior is bad and leaves them with a "broken" piece of software because they can't work anymore. Many users don't know that they also can download older versions and it caused a lot of confusion. This is why we decided to keep the old version on the box.


Regards,
Stefan

Any updates on using winget to get an up-to-date installation?


I totally agree with Rohan Beckett, the upgrade process is annoying. Using winget would be very helpful.

For now, I've submitted the PR with the new package manifest manually but I've also integrated the submission in our CI/CD pipeline. Future releases will automatically update the manifests and submit the pull request. How long it takes to get it merged, I don't know.

I'm actually happy with the upgrade mechanism now.. it's a lot nicer..  less prompts/nags

upon launching, I'm presented with the 'what's new' page.. I simply select 'download and install'.. and then when I quit RTS, it quietly installs, with no prompts.. and it doesn't break the icon pinned to the taskbar anymore!


I guess the only improvement would be to have an option that says "I trust you guys - always install latest verion upon quitting" :)

In my case I'm getting an UAC prompt for credentials because I'm running as a standard user.

Thanks for adding an updated installation to winget, much appreciated!


I just upgraded one of my installs using it and it worked flawless :-)

Glad to hear that the winget manifest works. 


As an FYI: we decided to only push release versions (no beta releases) to the winget feed and we will not differentiate major versions. We will probably also pull the beta and versioning from chocolatey in the near future.

It seems the updates are no longer available via winget. Can this be fixed?

Sorry about that. I've just submitted the latest V6 release to winget packages repo. Once the PR is accepted, it should appear in winget.


Regards,
Stefan

Thanks, it's working again.

Login or Signup to post a comment