1. The PRG file is included in the project.
2. The path is not hard-coded. Because this is a procedure file, the only place it's used is like so:
SET PROCEDURE TO cbsproc ADDITIVE
3. The FXP is not used in the project--only the PRG.
I use tons of PRG's in all of my projects, so I know that there's no problem with that.
The interesting thing is this: if you issue SET PROCEDURE TO like in my example above, and then call SET('PROCEDURE') inside your app, it returns 'CBSPROC.FXP'. FILE('CBSPROC.FXP') returns False (.F.). So it's like the procedure is set to a non-existent file. I've also noticed that if you're actually running VFP instead of a runtime VFP application and issue SET PROCEDURE TO a PRG, VFP automatically compiles the PRG to create the FXP. So what I suspect is that maybe when you call SET PROCEDURE TO in your runtime app, it creates a temporary FXP file on disk somewhere, and either that temporary file is getting deleted, or VFP "loses" its location somehow. I have tried running my runtime app and then looking in the path of the error message, but the file isn't there.