This isn't just taking a filename - it can be a URL.
Do we always expect to use this to launch from a filesystem, or ever from an in-memory string? Should it be overloaded to take a Reader?