no the file doesn't have to be in the exe folder, it can be anywhere on the disk that you allow.
the file served is stored in loc:filename in the ServeDocument procedure.
however the name sent back to the browser is set in the content disposition. ie
p_web.HeaderDetails.ContentDisposition = 'attachment; filename="'&clip(loc:fileName)&'"'
in the example it uses loc:filename there, but you can use anything, literally anything, you like.
Cheers
Bruce