@autoit-gui-skeleton/ags-component-check-for-updates

1.0.3 • Public • Published

AGS-component-check-for-updates

Add the feature to check for updates to an AutoIt application built with the AGS framework.


How to install AGS-component-check-for-updates ?

In order to simplify the management of the dependencies of an AutoIt project built with AGS framework, we have diverted form its initial use the dependency manager npm, and its evolution Yarn. This allows us to manage the dependencies of an AGS project with other AutoIt libraries, and to share these AutoIt packages from the npmjs.org repository. All AGS packages hosted in this npmjs repository belong to @autoit-gui-skeleton organization

We assume that you have already install Node.js and Yarn, for example with Chocolatey, so to install AGS-component-http-request, just type in the root folder of your project where the package.json is saved :

λ  yarn add @autoit-gui-skeleton/ags-component-check-for-updates --modules-folder web/vendor

This package is installed into the ./vendor directory. To use it in your AutoIt program, you need to include this library with this instruction:

#include 'vendor/@autoit-gui-skeleton/ags-component-check-for-updates/ags-component-check-for-updates.au3'

AGS's vendor directory

To install AutoIt dependencies in the ./vendor directory, and not in the default directory of Node.js ./node_modules, you must add the --modules-folder vendor option. We force this choice to avoid any confusion with a Node.js project.

Note that with an AGS project, it is not necessary to explicitly write this option on the command line, thanks to the .yarnrc file stored at the root of the project. Yarn automatically use this file to add an additional configuration of options.

 #./.yarnrc 
 --modules-folder vendor

So with this file you can run yarn add @autoit-gui-skeleton/ags-component-check-for-updates to install the dependencies directly into the appropriate ./vendor directory.


AGS-component-check-for-updates

Description

With AGS-component-check-for-updates, you can create an AutoIt application that has a feature to check for updates.

ags-component-check-for-updates :: update available

To work, it compares the local version of the application installed on the user's PC with the repository of the published versions of the application. This repository is a json file, RELEASES.json, which is therefore hosted on a remote server. So we need to connect to the Internet to send an HTTP request to retrieve this file, and we need a JSON parse. This component therefore depends on other AGS components: ags-wrapper-json and ags-component-http-request. If you want to simulate different scenarios ofcheck for updates, you just need to change the value of the application version set in ./src/GLOBALS.au3.

The remote file RELEASES.json looks like this:

{
  "name": "ApplicationWithCheckForUpdates",
  "description": "Example to implementation of AGS-component-check-for-updates",
  "license": "MIT",
  "homepage": "https://autoit-gui-skeleton.github.io",
  "releases": [
    {
      "version": "1.0.0",
      "state": "stable",
      "downloadSetup": "https://myApplication.com/v1.0.0/setup_myApplication_v1.0.0.exe",
      "published": "2018-10-07",
      "releaseNotes": "https://myApplication.com/v1.0.0/README.md"
    },
    {
      "version": "0.1.0",
      "state": "prototype",
      "downloadSetup": "undefined",
      "published": "2014-03-21",
      "releaseNotes": "undefined"
    }
  ]
}

Available methods

This library provides few methods:

Methods Description
json_decode_from_file($filePath) Decode JSON from a given local file.
json_decode_from_url($jsonfileUrl, $proxy = "") Decode JSON from a given URL.
RELEASES_JSON_get_all_versions($jsonObject) Parse all defined version(s) persisted in a decoded RELEASES.json file given.
RELEASES_JSON_get_last_version($jsonObject) Get last version persisted in RELEASES.json
CheckForUpdates($currentApplicationVersion, $remoteUrlReleasesJson, $proxy = "") Compare the current version with the last version persisted in an remote RELEASES.json file, in order to check if an update is available.
_GUI_launch_CheckForUpdates($main_GUI, $context) Launch a check for updates. The build of a GUI exposing the results depends on the context when the check for update is launch : with an user interaction from menu or on startup application. We store the option to search update on starup in the configuration file ./config/parameters.ini in parameter LAUNCH_CHECK_FOR_UPDATE_ON_STARTUP.
_GUI_build_view_to_CheckForUpdates($main_GUI, $resultCheckForUpdate, $context = "") Create a child GUI use to expose the result of a check updater. It exposes if an update of current application is available. The child GUI is related to a given main GUI of application. If this method is execute on startup, we built this child GUI only if an update is available. And when this method is called by a user interaction, we built this child GUI in any case : no update available, new update or experimental.

Configuration

To configure the behavior of this component, you can set its options in the ./config/parameters.ini file. For example, you can enable or disable the search of a new update when the application starts, with the LAUNCH_CHECK_FOR_UPDATE_ON_STARTUP variable of the section AGS_CHECK_FOR_UPDATES.

## ./config/parameters.ini ##
[AGS_CHECK_FOR_UPDATES]
; [REQUIRED] Enable/disable the search of a new update on start-up.
LAUNCH_CHECK_FOR_UPDATE_ON_STARTUP=1

Example of an application that implements AGS-component-check-for-updates

Take a look of this example of an AutoIt application which implement AGS-component-check-for-updates ApplicationWithCheckForUpdates. This application have this features :

  • Check update on startup AutoIt application ;
  • Check update from the menu "? > Check for update" ;
  • Change settings application from the view "Configuration > Settings". Values are persisted into the configuration file ./config/parameters.ini. In this view, we can set proxy parameters to specify how this application try to connect to internet.

If the option to check update on startup application is enabled, and if a new version of this application is available, when the user starts application he gives this information on a child window:


About

Contributing

Comments, pull-request & stars are always welcome !

License

Copyright (c) 2018 by v20100v. Released under the MIT license.

Package Sidebar

Install

npm i @autoit-gui-skeleton/ags-component-check-for-updates

Weekly Downloads

2

Version

1.0.3

License

MIT

Unpacked Size

33.4 kB

Total Files

8

Last publish

Collaborators

  • v20100v