You've made me angry.  I despise the fact that Microsoft can't make a reasonably accurate progress bar.  I wrote a damn-near perfect progress bar in 1999 (in my spare time waiting for batch processes with the sort of variable performance you described so well).  You'd tell it what stages would matter and their approximate time, how many tasks of each type in each stage, and then let it know as each one started and stopped.  It would do an average of averages, while maintaining a consistently decreasing time remaining after it got a decent amount of performance data, and would slow down the countdown rather than spiking the time remaining if some operation takes longer than expected.  It would remember those metrics in the registry so the next task of that type could have a better estimate from the start.  It could track with multiple bars, it could do color gradients, or show multiple parallel dependent processes with different color gradients on the same bar.  I got fired for wasting time on a progress bar.  Nowadays Microsoft thinks it's OK to just show an "infinite" progress bar, which doesn't give me any faith that it's working, or give me any indication whether I have time for a #1 or a #2.  It's shameful, they can do better.