Here's my attempt at making substitute-related logging a little easier to grok.
I added newlines to split up output and visually separate multiple substitutions. Since the download size is unknown, we can't use a progress bar, but I made the output more consistent with the progress bar behavior. I also shortened the hash after it's been repeated in full twice (once for the store and once for the download URL).