I've developed a lot of large labview applications in the past - espescially large test applications. Often I've released an "office edition" of a test application. That is, I've stripped out all the DAQmx, NI-Motion, etc. dependencies from the application and built an executable for managers to run in their offices without the hardware. I retain all the code to save and load tests from a database, do statistical analysis, etc., but remove all the code to actually run tests. This is so a production manager at a factory can view test results and analyze data from their office, and the IT department does not have to be burdened with the painful NI installers for DAQmx, NI-Motion, etc., that are not group policy deployable. All they have to install is a run-time engine. And this way I don't have to write an entirely new project... I can just strip out a couple of cases from my top-level vi's state machine (the ones that involve hardware drivers like DAQmx) and build a new executable. Suddenly I have a version of the exe that doesn't need all those NI dependencies.
The last couple applications I developed have a large LVOOP class called "Test". Each test type is a sub-class. A method of each class is "Run Test". But another method of each class is "Analyze Results". All the hardware dependencies come from the "Run Test" method, which I never call in my office edition of the application. But I do call teh "Analyze Results" method. Using LVOOP (LV8.2) in this manner, even though I remove all calls to the "Run Test" method in my code, in order to run a single method of the class I have to load all methods of all inherited classes, including the unused "Run Test". The result is that it's impossible to strip out the DAQmx or NI-Motion content easily simply by never calling it. If it exists as part of the LVOOP class hierarchy it must load all components of all methods, regardless of whether they are being used.
Is there any way to easily structure an executable build, or remove select content from a project that will effectively eliminate the need for certain hardware driver requirements in the way I've described above?