yoannmos / Inupdater

An auto-updater for your software
MIT License
1 stars 0 forks source link

Inupdater


License test codecov


Read Latest Documentation - Browse GitHub Code Repository


Descriprion

This is an auto-updater for your software.

You can provide a new version of your exe in a location of your choice and user will be auto-updated when launching your app.

How to Use

Download the last stable version of launcher.exe and add it to your dist folder.

To work, the launcher.exe should be installed in the same repo of your .exe

Typical install Folder

You need a settings.json with the following content in the same folder.

{
    "exe_name": "appexemple", // exe name without version
    "dist_location": "dist/", // location folder of yours dist (a version should look like : appexemple_1.0.2 = *exe_name*_*version*)
    "version": "0.0.1" // Version auto updated, (You can keep 0.0.1 to force update in first launch)
}

Only version will be updated exe_name and dist location will not be updated. It still can be updated externally by modifying the json.

Innosetup

with standard program launching

To launch your program simply call the launcher instead of your program. In InnoSetup you define your AppExeName to launcher.exe instead of yourapp.exe.

#define AppExeName "launcher"

with registry key launching

For exemple to add a right click shortcut in background add those line to your .iss file.

[Files]
Source: "dist\launcher.exe"; DestDir: "{app}"; DestName: "launcher.exe"
Source: "dist\settings.json"; DestDir: "{app}"; DestName: "settings.json"
Source: "dist\appexemple.exe"; DestDir: "{app}"; DestName: "appexemple.exe"

[Registry]
Root: HKCR; Subkey: "Directory\Background\shell\{#AppName}"; ValueType: string; ValueName: ""; ValueData: "&Appexemple"; Flags: uninsdeletekey
Root: HKCR; Subkey: "Directory\Background\shell\{#AppName}\command"; ValueType: string; ValueName: ""; ValueData: "{app}\launcher.exe"; Flags: uninsdeletekey

How to test Inupdater

You can check the exemple repo (Inupdater-AppExemple) for a simple implementation of Inupdater. Or clone this repo and execute inupdater/__main__.py a version of Inupdater-AppExemple is included for testing purpose.

How to contribute