Project: Open Software Update

  • one app to find them all, and in the darkness bind them.
    • open to anyone. dependent on no one.
    • like mac os x’s Software Update
    • extensible
  • simple plugin interface
    • format
      <?xml version="1.0" encoding="utf-8"?>
      <application>
      	<name>Delicious Library</name>
      	<host>delicious-monster.com</host>
      	<updateInfoURI>http://delicious-monster.com/softwareUpdate/update.xml</updateInfoURI>
      </application>
      			

    • optional nodes
      <updateFrequency>daily</updateFrequency>
      <updateFrequency>weekly</updateFrequency>
      <updateFrequency>monthly</updateFrequency>
      
      <requiredMinimumVersion>2.0</requiredMinimumVersion>
      <requiredMinimumUpdated>20040118</requiredMinimumUpdated>
      			

    • plugins by users or developers (partying together)
  • server side : update.xml
    • single app
      <host name="delicious-monster.com">
      	<application>
      		<name>Delicious Library</name>
      		<updated>20041118</updated>
      		<version>1.0.5</version>
      		<updateURI>http://delicious-monster.com/downloads/DeliciousLibrary.dmg</updateURI>
      	</application>
      </host>
      			

    • multiple apps
      <host name="ranchero.com.com">
      	<application>
      		<name> NetNewsWire</name>
      		<updated>20041022</updated>
      		<version>2.0b6</version>
      		<updateURI>http://ranchero.com/downloads/NetNewsWire2.0b6.dmg.gz</updateURI>
      	</application>
      	<application>
      		<name>MarsEdit</name>
      		<updated>20041116</updated>
      		<version>1.0b12</version>
      		<updateURI> http://ranchero.com/downloads/MarsEdit1.0b12.dmg.gz </updateURI>
      	</application>
      </host>
      			

    • optional nodes
      <updateFrequency>daily</updateFrequency>
      <updateFrequency>weekly</updateFrequency>
      <updateFrequency>monthly</updateFrequency>
      
      <requiredMinimumVersion>2.0</requiredMinimumVersion>
      <requiredMinimumUpdated>20040118</requiredMinimumUpdated>
      
      <endOfLife>true</endOfLife>
      <endOfLife>false</endOfLife>
      			

  • download prefs
    • respect server side unless overwritten client side by user
    • update frequency : all items
      • daily
      • weekly
      • monthly
      • manually
    • enable / disable : item specific
    • auto download : item specific
    • auto download : item specific
    • admin password : save in keychain (BOOL)
  • auto open files
    • resolve decompression
      • if zip, gz, tar, et al : decpress internally
      • if sit, sitx : farm out to stuffitexpander
    • replace old version
    • backup older version pref (BOOL)
    • keep originals pref (BOOL)
  • issues to work out
    • inital lastUpdated date for each app
      • from the app’s ‘date modified’ data?
      • sounds like good enough to me
    • xml namespaces
      • are namespaces necessary?
      • beneficial?
  • benefits
    • for users
    • for developers
      • can easily migrate existing check for update systems
      • inexpensive deployment
      • inexpensive maintainence
      • inexpensive bandwidth
      • keeps user base up to date
Advertisements