Bit of a tough call here, but I'm guessing that it would be better to fail-fast here rather than continuing after the first error. My thinking is:
- If there is an error, my project isn't going to work, so I don't want to wait while other things continue
- If there is an error, it's not unlikely that all subsequent installs will fail as well. Showing the errors for each step in a composed way is going to be a huge screen of error messages.
- The multiple-errors logic below is non-trivial, and I don't really think it's worth having to write a test for it.