I use a very dodgy way to do it.
1) I get the file size with latest version and change log via XMLHTTP
2) If the update is chosen to be downloaded, I download the file using my exe and run a timer.
3) I check the percentage downloaded using current file size and the size received via XMLHTTPRequest.
4) I update the progress bar and then when the download is finished(both sizes are same) i run the file and close the update window.
For a better explanation you can have a look at @ScriptDev's or Backup Extreme!'s code
. I don't mind you using my code but i'd like to be credited for it. If you need, you can use the exe aswell(not using a dll as i couldn't register is properly) or maybe ask me to make another one or take the code aswell.