UpdateManager

Description

The UpdateManager object provides functions and properties for querying and installing system updates.

› Inherits:Object

Properties

autoDownload

This property holds whether to automatically download available updates.

› Type:Boolean
› Default:false
› Signal:autoDownloadChanged()
› Attributes:Writable

autoInstall

This property holds whether to automatically install downloaded updates.

› Type:Boolean
› Default:false
› Signal:autoInstallChanged()
› Attributes:Writable

autoReboot

This property holds whether to automatically reboot the system after installing updates.

› Type:Boolean
› Default:false
› Signal:autoRebootChanged()
› Attributes:Writable

checkInterval

This property holds the interval in milliseconds in which to check the configured repositories for updates. The minimum value is 5000.

› Type:SignedInteger
› Default:0
› Signal:checkIntervalChanged()
› Attributes:Writable

downloadStorage

This property holds a storage location for storing downloaded update files.

› Type:Storage
› Signal:downloadStorageChanged()
› Attributes:Readonly

error

This property holds the most recently occurred error or UpdateManager.NoError if no error occurred. If the same error occurs multiple times this property does not change. Use the errorOccurred() signal to detect multiple occurrences of the same error.

› Type:Error
› Signal:errorChanged()
› Attributes:Readonly

errorData

This property holds additional information on errors occurred while checking, downloading or installing updates.

› Type:String
› Signal:errorDataChanged()
› Attributes:Readonly

errorString

This property holds the current human readable error string corresponding to the current value in the error property. It may include additional information such as failure reasons or locations.

› Type:String
› Signal:errorStringChanged()
› Attributes:Readonly

installStepMessage

This property holds a message providing information about the current step of an update installation.

This property was introduced in InCore 2.5.

› Type:String
› Signal:installStepMessageChanged()
› Attributes:Readonly

pendingUpdates

This property holds the list of available updates pending for installation. This list usually is populated by the download() method but also can be written manually for installing a custom update bundle via the install() method.

› Type:StringList
› Signal:pendingUpdatesChanged()
› Attributes:Writable

progress

This property holds the percentage progress of the update installation operation.

› Type:SignedInteger
› Signal:progressChanged()
› Attributes:Readonly

repositories

This property holds a list of repositories where to retrieve update bundles from.

› Type:List<Repository>
› Signal:repositoriesChanged()
› Attributes:Readonly

targets

This property holds a list of targets which to install updates for.

› Type:List<UpdateTarget>
› Signal:targetsChanged()
› Attributes:Readonly

updatesAvailable

This property holds whether any updates are available in the configured repositories.

› Type:Boolean
› Signal:updatesAvailableChanged()
› Attributes:Readonly

updatesReady

This property holds whether any updates have been downloaded and are ready to install.

› Type:Boolean
› Signal:updatesReadyChanged()
› Attributes:Readonly

Methods

check()

This method checks the configured repositories for updates by fetching corresponding update file lists. Returns true if at least one repository could be checked successfully. If autoDownload is set to true downloads will be started afterwards automatically. Otherwise call download() manually.

› Returns:Boolean

download()

This method initiates the download of available updates to the storage specified by downloadStorage. Returns true if the downloads could be started successfully. Once all downloads are finished the updatesReady property changes to true and pendingUpdates is updated accordingly. If autoInstall is set to true all downloaded updates will be installed afterwards automatically. Otherwise call install() manually.

› Returns:Boolean

install()

This method initiates the installation of the downloaded updates. Returns true if at least one update is available for installation. Once all updates have been installed the updatesInstalled() signal is emitted. If autoReboot is set to true the system is rebooted afterwards automatically.

› Returns:Boolean

Signals

errorOccurred()

This signal is emitted whenever an error has occurred, regardless of whether the error property has changed or not. In contrast to the change notification signal of the error property this signal is also emitted several times if a certain error occurs several times in succession.

repositoriesDataChanged(SignedInteger index)

This signal is emitted whenever the List.dataChanged() signal is emitted, i.e. the item at index in the repositories list itself emitted the dataChanged() signal.

targetsDataChanged(SignedInteger index)

This signal is emitted whenever the List.dataChanged() signal is emitted, i.e. the item at index in the targets list itself emitted the dataChanged() signal.

updatesInstalled()

This signal is emitted when one or multiple updates have been installed succesfully. This can be used to trigger further actions when autoReboot is set to false and the device keeps running after the update.

Enumerations

Error

This enumeration describes all errors which can occur in UpdateManager objects. The most recently occurred error is stored in the error property.

Name Value Description
UpdateManager.NoError 0 No error occurred or was detected.
UpdateManager.MissingRepositories 1 No repositories specified.
UpdateManager.InvalidUpdateFile 2 Update file is invalid or incompatible.
UpdateManager.InstallationError 3 An error occurred while installing an update.
UpdateManager.InvalidDownloadStorage 4 None or invalid download storage set.
UpdateManager.InsufficientDownloadStorage 5 Insufficient space available on the download storage.
UpdateManager.NoUpdatesAvailable 6 Updates have not been checked or no updates are available for the configured targets.
UpdateManager.NoUpdatesDownloaded 7 No updates have been downloaded for installation.
UpdateManager.DownloadFailed 8 Failed to download one or multiple updates.

Example

import InCore.Foundation 2.5
import InCore.Http 2.5

Application {

    id: app
    name: "update-manager-example"
    version: "0.1.0"

    UpdateManager {
        id: updateManager
        autoInstall: true
        onCompleted: check()

        repositories: [
            LocalRepository { storage: LocalStorage { } },
            UsbDriveRepository { storage.onAvailableChanged: updateManager.check() },
            HttpRepository { url: "http://download.inhub.de/siineos/updates/" }
        ]

        UpdateTarget {
            bundlePrefix: "siineos"
            currentVersion: system.osVersion
        }

        UpdateTarget {
            bundlePrefix: "example-app"
            currentVersion: app.version
        }
    }
}