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

    Originally published at: http://sbb.me/b3YQ7

    One thought on “Project: Open Software Update

    Comments are closed.