Anyone using a third-party update tool for LC-originated desktop apps?

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Anyone using a third-party update tool for LC-originated desktop apps?

Matthias Rebbe via use-livecode
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.

I was about to embark on coding all this in LC for an app that runs on Mac and PC desktops, when I realised that there are third-party tools out there that do it for you. At this stage I have not at all looked at the API of these things, or indeed checked if any of them are cross-platform. Before I go down one or more of these rabbit holes, I’d like to know if anyone on this list is already using one or more of these tools, and can give any guidance, including what to avoid, gotchas etc.

TIA for any input.

Graham
_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Anyone using a third-party update tool for LC-originated desktop apps?

Matthias Rebbe via use-livecode
On Mon, Jan 22, 2018 at 5:04 AM, Graham Samuel via use-livecode <
[hidden email]> 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.


Graham,

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.

https://github.com/trevordevore/levurehelper-app_updater

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.

https://winsparkle.org

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.

--
Trevor DeVore
ScreenSteps
www.screensteps.com
_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Anyone using a third-party update tool for LC-originated desktop apps?

Matthias Rebbe via use-livecode
Trevor, this is great stuff! I will now study it very carefully. I absolutely agree that there should be some kind of standard solution offered to LC developers. I’ve been saying for a long time that deployment is really the big issue for developers who have signed up to, and wish to depend on, LiveCode. Other topics under this heading include:

- code signing;
- installer production
- uninstallers to get rid of hidden files (neither the Mac nor the Windows built-in uninstall processes do a good job, not sure about mobile)
- workaround advice for users faced with aggressive anti-malware software that threatens to reject anything new
- uploading to servers using FTP clients

I’ve had to tackle all these, and I know there’s more, for example submission to the various app stores out there..

Anyway I’m about to start another chapter of my education!

Thanks again

Graham



> On 22 Jan 2018, at 16:06, Trevor DeVore via use-livecode <[hidden email]> wrote:
>
> On Mon, Jan 22, 2018 at 5:04 AM, Graham Samuel via use-livecode <
> [hidden email]> 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.
>
>
> Graham,
>
> 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.
>
> https://github.com/trevordevore/levurehelper-app_updater
>
> 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.
>
> https://winsparkle.org
>
> 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.
>
> --
> Trevor DeVore
> ScreenSteps
> www.screensteps.com
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Anyone using a third-party update tool for LC-originated desktop apps?

Matthias Rebbe via use-livecode
On Mon, Jan 22, 2018 at 11:32 AM, Graham Samuel via use-livecode <
[hidden email]> wrote:

> Trevor, this is great stuff! I will now study it very carefully. I
> absolutely agree that there should be some kind of standard solution
> offered to LC developers. I’ve been saying for a long time that deployment
> is really the big issue for developers who have signed up to, and wish to
> depend on, LiveCode.


Yes, deployment can be quite time consuming if you don't have an automated
process. For my uses cases Levure makes the process rather straight forward.


> Other topics under this heading include:
>
> - code signing;
>

Levure will take care of this on macOS (assuming you have your signing
certificate installed).


> - installer production
>

Levure has Helpers for DropDMG and Inno Setup. It can package up for the
Apple Store out of the box. When building on macOS a DMG can be created
using DropDMG. A file that can be loaded into Inno Setup can be created as
well. Inno Setup will sign your application when building the installer
(assuming you have your signing certificate installed on your Windows
machine).

https://github.com/trevordevore/levure/wiki/Building-Installers


> - uninstallers to get rid of hidden files (neither the Mac nor the Windows
> built-in uninstall processes do a good job, not sure about mobile)
>

Personally I don't worry about this on macOS. On Windows the uninstaller
create by Inno Setup can remove any files you specify in the Inno Setup
configuration file.

--
Trevor DeVore
ScreenSteps
www.screensteps.com
_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Anyone using a third-party update tool for LC-originated desktop apps?

Matthias Rebbe via use-livecode
In reply to this post by Matthias Rebbe via use-livecode
Just reporting in, having had a closer look, I see that what Trevor has done is frankly beyond me. There seems too much to learn, starting with GitHub, and the number of days I could dedicate to the task in the near future is quite limited.

For that reason I’m tempted to try to grow my own, using just LC scripting: of course this may not work. I absolutely agree with Trevor’s policy of replacing the entire application (although IMO the user should be offered preservation of any data kept in the application support area on either platform).

However, this is tricky, since one would want to invoke a standard installer without the user having to take any of the classic actions (e.g. on the Mac, moving the app icon the Applications folder, which is what DMG installers propose).

I suppose the ultimate simplification is to detect that an update is available (easy, via a little file on a server) and then tell the user how to delete the old version and install the new one ‘by hand’, so to speak. Sounds terrible, but it may be the only possible economic method for me. Or am I being particularly stupid?

I have still not fully explored third-party solutions, but they would have to avoid coding - well, certainly in any language other then classic LC - to work for me.

Anyone else got any thoughts on this?

Graham

> On 22 Jan 2018, at 15:06, Trevor DeVore via use-livecode <[hidden email]> wrote:
>
> On Mon, Jan 22, 2018 at 5:04 AM, Graham Samuel via use-livecode <
> [hidden email]> 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.
>
>
> Graham,
>
> 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.
>
> https://github.com/trevordevore/levurehelper-app_updater
>
> 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.
>
> https://winsparkle.org
>
> 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.
>
> --
> Trevor DeVore
> ScreenSteps
> www.screensteps.com
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode