Wednesday, August 31, 2005


My First U.S. Visit:

I went to US on 12April 2005 and return on 10 July 2004. During this period I stayed at KANSAS CITY. It was a very nice experience. I also went to CHICAGO.

Friday, August 26, 2005

Check For Upgrades

Software Upgrades

Most of software’s today has option to look for latest version. Below document explains way to check for latest version or way to check for upgrades.

Who should read this document:

Any software developer who has basic knowledge of software development can read this document. Also some basic knowledge of XML is necessary.




Most of software products had major, minor updates in product. The user should aware of updates is using Newsletter or by checking for sites periodically. Another way to increase the download count for product is making user aware of latest available product.

There are various ways you can prompt user to download the latest version. For e.g. Adobe Acrobat Reader at start of program asks for “Check latest version”. Or you can have a menu “Check for Upgrade”

The way it works is as follows.

One of common way to see latest version available on server is by reading the PAD (Portable Application Description) file. This files store all information about product. This is normal xml file with predefined tag structure. By reading this XML you can get information like “Company Info”, “Program Info”, “Web Info” etc.


Generally pad files are useful for submitting products on various sites. For e.g. suppose we have to submit product at site www.download.com . Now here for each product we have to enter company information, product information etc. This becomes tedious when you have to submit product to lot of sites. Instead of that you just have to submit your pad file containing your information and corresponding site will update information on their site.

So once we have our pad file created. Store them on server and make accessible to everyone. For e.g. a common path for pad file will be www.yourcompany.com/app.xml (where app is application name)

To get latest version of product available on server read xml file and tag “XML_DIZ_INFO/ Program_Info/ Program_Version”.

Once we get the latest version available on server, we can compare with what version user has. If the version on server is greater then we can prompt user to download the latest version from server. We can also find the path of setup by reading tag structure “XML_DIZ_INFO/ Web_Info/ Download_URLs/ Primary_Download_URL”

Once we get the download link of software we can directly execute the link so that user can save setup and run itself. Or that can be achieved from Inno Setup ( http://www.jrsoftware.org/) a free software installation tool, there is a third party dll (ISX download dll) which check for internet connectivity and download the setup and installs it.

Pseudo code for upgrade utility.


Step 1: Get version installed on user machine
Call GetCurrentVersion() method to get current version.
Step 2: Get Version Installed on Server
Call GetLatestVersion() method to get Version installed on server.
Step 3: if GetLatestVersion() > GetCurrentVersion() then
Prompt user if he want to download latest version
Step 3a: if User wants to download the latest version
Step 3b: Call GetDownloadURL() to get setup link
Step 4b: Process with the URL to download latest setup.
Step 4: Exit method.


Method GetCurrentVersion():

Step 1: Read registry to get current version installed by user
Or
Get application main Executable and read version information of that File
Or
Read application resource file to get the Version information

Step 2: Return the version retrieved from step 1.

Method GetLatestVersion()

Step 1: Get the pad file path for e.g. www.yourcompany.com/product.xml.
Step 2: Read the tag structure “XML_DIZ_INFO/ Program_Info/ Program_Version”
Step 3: Return the value read from step 2


Method GetDownloadURL()

Step 1: Get the pad file path
Step 2: Read the tag structure “XML_DIZ_INFO/ Web_Info/ Download_URLs/ Primary_Download_URL”
Step 3: Return the value read from step 2.



If you have any queries or suggestion please contact me at amod_go@yahoo.com