You might want to also add a start=up screen that displays while everything else is loading. I'm not sure if this is the best way, but I start the startup Form as one of the first lines in the start-up PRG and then release it in the INIT method of my first Form, which doesn't initialize until after all the objects and the Data Environment.
Even though prevending multiple executions might be necessary, you still have the annoyed user problem.