Many programs these days support checks for updates while being online. I think this would be a good feature for a later version of ARC. Since we're going to have a special repository for ARC, online updates shouldn't be much of a problem. I have already bought www.arc-engine.com a while ago, I could easily open up another hosting account at CP's host and we can put all ARC related stuff and downloads there. We should just decide whether 1 GB of disk space is enough for ARC or if we should go with the 10 GB package just in case.
If needed DM can supply hosting as well as arc-engine. Our package is good until December 2012 and I'm sure by then we'll get another year.
Sure, it's always good as an alternative mirror.
I think 1 GB should be plenty, even with RTP graphics and audio. If you want to split costs or take turns paying the bill, just let me know.
The bill is paid once per year and it's $72 (that's $6 per month). It's not a big deal, but I don't mind taking yearly turns. xD
I had actually considered this too. I might be a great feature considering that we plan on actively developing the program.
If we want to do this then a few consideration have to be made in regards to the program's structure.
the existing structure of the program makes this much easier to implement. compiling only the plug-in core management system and the updater into the exe as well as some basic start up code would allow us to keep all the components of the system outside of the exe and be updated individually.
this way only changes made to the plugin system and the update code would require a re download of the exe. a small update program could be made that when activated would fetch the latest version of the exe and then restart the main program which would then update the rest of the system.
Exactly my thoughts. You can leave that out for the very first version, but I think we should definitely include it in 1.1 or something like that.
I've been thinking about this and we can actually make this work very easily. There's 3 things that need to be done.
1. Connect internally to
http://www.arc-engine.com/version.php?edition=EDITION (where EDITION can be "Legacy" or left out for the normal version) which will basically return the version string of the newest ARC version of the given edition.
2. After getting the version string of the current version, it will be compared with the current ARC version and if the new version is higher than the current one, a dialog will pop up informing the user that the new version X.Y.Z is available. There will be 2 buttons: "Update now" and "Close".
2. If the user clicks on the "Update now" button, just run this in Python:
try:
os.system("start http://www.arc-engine.com/update.php")
except:
pass
This will open the default browser and take the user to the ARC download page where he can download the newest version.
Additionally it would be good if there was an option in ARC "Check for updates on every start up" and a menu option "Check for new version" in the "Help" sub-menu so people can turn it off if it's annoying them.
Sure, this may not be the nicest solution, but why complicate things? Tons of programs do it this way, including highly regarded and commercially used programs such as Tortoise SVN.
sounds simple enough to me. if we do it this way there needs to be two setup files for every version. one that includes the RTP (for a full install) and one that doesn't (for the updates).
This is pretty much what I did with Gemini. I made a simple console app that was started by the main app, passing its file location and version as the argument. The console app simply reads a file online that contains the available version for download and compares the two versions. If higher, it downloads and replaces the main executable, then restarts the main app using the argument that was passed to it for the file location. Very simple and effective. We could include a secondary function to only download file that were actually updated, so it only has to do what is necessary.
Again, my idea isn't an actual updater, it's just a way to notify the user that a new version is up. When they install the new version, it uninstalls the previous version first.