Copying file dependencies
Why is a method that is ostensibly about "copying file dependencies" killing a process? 

It also seems awkward to use recursion for something like this, especially from the catch block. Maybe it's just me?

I would get rid of the recursion and the process killing, and let the calling code higher up deal with that. This method should just attempt to copy the files from a to b, and the calling code can run it as many times as it wants, handle failures by killing a process or whatever, etc.