I am about to hire someone from India to do this for RU. Posting it here first in case anyone is interested.
This project will use "custom URL protocols" and "web dav / web disk". You do not need prior knowledge of these. I will provide scripts to set these up. Your installer just needs to run the provided scripts.
First you will create a stand alone exe and an installer for Windows.
After I test it on Windows you will port it to MacOS, Linux, Android & iOS.
You will need to provide all source code and build instructions.
The program you create will have no display window and be invisible to the end user but it must display dilog boxes to ask the user questions or provide confirmations and progress bars.
The program you create will download files, launch another program that I provide (
Libretro) and monitor folders for changes, syncing those changes with the server. Your program will close itself when the child program (libretro) exits.
Order of events.
Step 1.
Your installer registers a custom URL protocol. (examples of custom URL protocol. mailto://,
news://, git://,
ftp://, spotify://.) You probably have never set these up before but it is simple and documented. In windows it is just a 5 line reg file.
Instructions for Windows here -
Registering an Application to a URI Scheme (Windows)
Step 2.
Install a web dav disk drive. I will provide a script for each platform. Your installer just needs to run the provided script.
Step 3.
extract the exe you create (see below) and a zip file I provide (libretro) from the installer to the program files folder. Create a shortcut on the desktop and start menu to the folder and to retroUp.com.
Step 4.
The custom url protocol in Step 1 will launch your exe from step 3. The url will be in the form of "retroUp://%key%". This will launch the exe you create with the argument "%key%". Key will be an alpha-numeric security code generated by retroUp.com.
Step 5.
Your exe will visit
http://retroUp.com/commands.php?key=%key% and download a json file containing the following variables.
version
core
content
ext
count
extract
config
sync (this will be a list of folder paths, files and check sums)
step 6.
If the version whole number has changed (1.0 to 2.0) then display a message box and tell the user they must upgrade. If the user clicks cancel the program exits. If they click OK then download the new version and replace the existing exe.
Step 7.
If the version decimal number has changed (1.0 to 1.1) then display message box asking the user if they want to upgrade. Provide the options "ask me again next time", "skip this version (don't ask again)" and "yes (upgrade now)" and perform the logic for each of these responses.
Step 8.
Check if the file %core%.dll exists in the program's folder. If it does not download it from
http://retroUp.com/commands.php?core=%core%.dll
Step 9.
Check if the file %content%.%ext% exists in the %temp% folder. If it does not then download it from
http://retroUp.com/commands.php?content=%content%.%ext%
Step 10.
if %count% is larger than one then repeat step 9 for %count% times looking for %content%-%count%.%ext%
Step 11.
Sync folder1, folder2, folder3 with server. The json file at launch will give you a list of files to download and paths to store them in and check sums to verify success. Provide a progress bar and confirmation or error message on completion.
Step 12.
Launch libretro.exe %core% %zip% -config %config%"
Step 13.
Monitor folder1, folder2, folder3. If files change upload them to server. Provide progress bar, and success or error message on completion. All other dialogs/progress bars should be medium sized in center of screen. The dialog windows for this step should be small and in bottom corner, except for error message which should appear as normal in center.
Step 14.
Monitor libretro.exe window. When it closes, exit your program.