Oh yeah, currently the progress bar represents the number of files being downloaded, that's why. Thanks for reminding me that though, I wanted to eventually allow the UI to know how many bytes are being downloaded so the progress bar can be truly linear (which is what we expect of a proper progress bar). I'll create an issue on github to remember.
Working with processes or native windows requires some work to do that properly in a cross-platform way, so this isn't on my priority list.
Yes, it would be great to do so. However, same thing here, checking whether the client runs or not requires some work to do properly in a cross-platform way, plus there are a lot of cases to handle (EXE copies, renaming, etc.). Maybe we could get around that by checking some files' state as well (on GRFs for example).
Fortunately though, updating while the client is running should not be as risky (in that there's way fewer opportunities to corrupt anything).
Yes, that's something I'm thinking about. Having to re-download everything when cancelling is annoying. Issue #20 on github is related to this and I think I'll work on both features at the same time when I do.