Hi Michael,
Please take a look at the attached zip for what may be a viable solution.
If I undestand correctly, you want to have a built app that does not change.
This built app has to do dynamic calls to VI's that can change.
The attached files include two .bld files. One for the main app the other for the dynamic VI's.
I modified your main app to look inside the "appl_support.exe" to find the dynamic VI's.
If you need to mod the dynamics only the ...supprt needs to be re-built. The top level stay un-changed.
What was happening in the code you posted for me.
The first VI you called dynamicly is part of the main's hiarcht so it gets included as part of the build by default. Since it is part of the build it gets compiled and included as part of the exe. It is also loaded into the memory space of the LV run-time engine when the top level gets loaded. When it was called, the run-time engine found the VI in memory and used it. This all worked fine.
In the case of the second dynamic VI, it was not part of the build and not spec'd as a dynamic VI. When the run time engine went looking for the VI, it was not a built VI and since the run time engine can not compile VI's it reported that VI was not executable.
Using the supplied .bld files you can compile your dynamics VI and prepare them for use by the executable.
I think this may be what you need.
I am a little confussed what the Express VI's have to do with this issue. Once I adjusted the calls and build it worked on the first try for me.
Please let me know if I am in left field here.
If the is a bug in this somewhere please let me know how to reproduce it so I can report it.
Trying hard to help,
Ben