is a C++ cross-platform framework to update desktop software.
<updateInfo>
<channel type="alpha">
<version id="0.0.0.1" unixtime="0" size="1023" active="true" critical="false" url="" notes="First version" signature=""></version>
<version id="0.0.1.1" unixtime="1095292800" size="1023" active="false" critical="true" url="" notes="" signature=""></version>
<version id="0.0.1.1" unixtime="1095292801" size="1023" active="true" critical="false" url="" notes="Active critical version \nInstall It \nAny String" signature=""></version>
<version
id="0.1.1.1" // id - [required] main info about version
unixtime="1095292802" // unixtime - [optional] helps to decide which version newer if ids equals
size="29696808" // size - [optional] helps to show correct downloading progress
active="true" // active - [required] enabled/disabled version to update
critical="false" // critical - [required] if critical is true then this version will downloaded even there is newer version exists
url="https://..." // url - [required] url where the installer is placed
notes="" // notes - [optional] just notes. Not used in framework yet
signature="...." // signature - [required] SHA-512 hash of installer
updateargs="" // updateargs- [optional] extra options when installer started
></version>
</channel>
<channel type="beta"></channel>
<channel type="test"></channel>
</updateInfo>
Windows
macOS
Linux
It built with some other open source libraries:
https://gitlab.com/desktopsoftwareupdater/updaterlib/-/blob/master/.gitlab-ci.yml#L11
apt-get install -y git cmake build-essential autoconf libtool pkg-config libssl-dev
git
it will install Xcode with git if need./bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install autoconf automake libtool openssl cmake
use header
#include <updaterInterface.h>
link library
appUpdaterShared
get the updater instance
auto updater = getUpdaterInstance();
set the current version info
//current version
std::string version("0.0.0.1");
setCurrentVersion(updater, version.c_str(), version.length());
//url where the fileInfo is placed const std::string infoUrl("https://gitlab.com/desktopsoftwareupdater/updaterexamples/-/raw/master/appUpdateSample_Win.xml"); setInfoUrl(updater, infoUrl.c_str(), infoUrl.length());
//channel ("alpha", "beta", "rc", "stable", or any other string to identify particular version) setChannel(updater, "alpha", 5);
1. check and update for a new version in one command
checkAndUpdate(updater);
You may find more details in other examples.
# Examples
[updateExample all projects](https://gitlab.com/desktopsoftwareupdater/updaterexamples)
[example with separate commands](https://gitlab.com/desktopsoftwareupdater/updaterexamples/-/blob/master/main.cpp)
[example with all-in-one commnad](https://gitlab.com/desktopsoftwareupdater/updaterexamples/-/blob/master/allInOne.cpp)
[example with downloading pause](https://gitlab.com/desktopsoftwareupdater/updaterexamples/-/blob/master/pause_resume.cpp)
[QML example](https://gitlab.com/desktopsoftwareupdater/updaterexamples/-/tree/master/qml_example)