Sorry, I've just noticed the mistake in the source I originally pasted.
I have changed it. The progress bar should only be changed during the OnProgress event.
Adding ProgressBar1.Update; to the event handler helped, but now I see another problem.
Because, I believe, the unzip process runs in its own thread, the procedure finishes and only shows the progress from unzipping the last file. The logic I am looking for is
1. Build list of files to unzip
2. Start at beginning of list
3. Unzip file showing progress
4. If another zip file is in the list then select next file and repeat from step 3
5. End
Or is there another way?