As I've been writing a few Python applications to share, I've been wondering the last day or so about how to have the application check, upon startup, for updates. This is a pretty common feature in a lot of programs, so I've been wondering how to do it.
Here's what I came up for now. It should work.
Say I have an application called FooPython and its project folder is http://blog.humaneguitarist.org/uploads/FooPython/.
I can just maintain a small XML file in that directory called update.xml that would look like this:
<versionInfo>
<currentVersion>0.9.1</currentVersion>
<message>Version 0.9.1 is now available!</message>
</versionInfo>
Now all I'd have to do is add code similar to that below in my application to alert the user of an update:
import urllib
from lxml import etree #see: http://codespeak.net/lxml/
url = "http://blog.humaneguitarist.org/uploads/FooPython/update.xml" #not a real URL
update = urllib.urlopen(url).read()
root = etree.XML(update)
currentVersion = root.find(".//currentVersion")
currentVersionValue = currentVersion.text
message = root.find(".//message")
messageValue = message.text
if currentVersionValue != "0.9.0": #assuming this code is for version 0.9.0
print messageValue
All this does is go to the update.xml file and read the element values. If the <currentVersion> doesn't match the version specified within the source code itself then it will print the value of the <message> element.
--------------