Anyone using a third-party update tool for LC-originated desktop apps?
lists at mangomultimedia.com
Mon Jan 22 10:06:11 EST 2018
On Mon, Jan 22, 2018 at 5:04 AM, Graham Samuel via use-livecode <
use-livecode at lists.runrev.com> wrote:
> Nowadays it’s customary for quite modest apps after launching to notify
> the user of an update being available, with the possibility of carrying out
> the update there and then, or refusing. A succession of dialog boxes guides
> the user through the updating process and shows progress. The update
> somehow bypasses the normal installation process, accepts existing license
> data, and simply replaces the app. If the app has a document open, then the
> new copy of the app re-opens it.
There are a lot of different approaches to this in the community. Here is
my take on it. Currently I'm using the code in the following repository for
automated updates. It is a Helper that I use with the Levure framework and
I haven't documented it at all.
It is a combination of Sparkle for macOS (Monte wrapped this up in an
external for me) and LCS for Windows that I've been using over the years.
Both macOS and Windows download an entirely new application. On macOS the
app is zipped up and Sparkle downloads the zip archive, unzips it, and
installs it. If the update requires authentication that is handled. On
Windows the updater just downloads the Windows installer executable that is
used for installing the app for the first time. This is an installer built
using Inno Setup which will prompt the user for administrative permissions
if need be.
I prefer to replace the entire application when I do updates. My apps are
installed in a number of different environments. I would often get reports
of problems when trying to update the app in pieces inside of corporations.
Plus if you don't update the exe on Windows then the version number of your
app won't be reported properly in the File Properties dialog. When I
switched to downloading and running a full installer on Windows the reports
of issues after running the updater dropped to 0.
In my ideal world the Windows side would use WinSparkle as it would be nice
to leverage the work of a 3rd party. I like using code that is being tested
by a lot of other people and which is entirely focused on automatic
updates. I didn't want to create an external around it, however, so I've
been waiting for the LCB to DLL interface in the engine to mature. I
imagine WinSparkle could probably be wrapped using LCB now.
I would like to see the LC community have a standard automatic update
solution available that is easy to use and is very reliable in all
environments. To me it makes the most sense to leverage the work done by
others who are focused on automatic update.
More information about the use-livecode