The installer builds once the LabVIEW dependency closure loads from the configured LabVIEW 8.6 environment and every required VI is saved in a compatible version. Treat Query Available Printers.vi as the first unresolved dependency, not proof that the printing VI itself is broken.
Stop applying the usual wrong fixes
The analysis phase completed, but the build stopped while processing VIs. That distinction matters: analysis can inventory workspace references without successfully loading and packaging the complete LabVIEW hierarchy.
| Quick fix | Why it does not address this failure | Correct next check |
|---|---|---|
| Add every reported System32 DLL | Those entries appear under a dependency warning. The fatal message instead names a LabVIEW VI. | Read the first Error: line and follow its missing path. |
| Add TestStand user-interface files | No user-interface file is named in the fatal build error. | Trace which saved VI calls the printing VI. |
| Install arbitrary drivers or components | A broad component selection can hide the actual dependency and enlarge the deployment without proving the cause. | Identify the calling LabVIEW module or instrument driver first. |
Open only Query Available Printers.vi
|
A VI can open alone while one of its callers, subVIs, or saved links cannot load correctly during the deployment traversal. | Load the complete calling hierarchy in the same LabVIEW version used by the build. |
Do not copy kernel32.dll, user32.dll, advapi32.dll, or the other listed Windows files into the deployment merely because analysis detected them. Separate warnings from the fatal condition before changing the package.
Read the fatal line before changing the deployment
Take three readings from the log: the last successful phase, the operation active at failure, and the exact missing path. Here they are:
- Analysis: completed.
- Build operation:
Processing VIs.... - Missing path:
C:\Program Files\National Instruments\LabVIEW 8.6\vi.lib\printing\Query Available Printers.vi.
If analysis also fails, repair the workspace or sequence references before investigating LabVIEW packaging. If analysis succeeds and the build fails at Processing VIs..., continue with the LabVIEW hierarchy checks. If the failure moves to installer creation after the VI problem is cleared, treat that as a separate packaging fault.
The build message gives two branches: a subVI is missing, or a saved VI is not under the current LabVIEW version. Check both branches; the fact that the named VI is present eliminates only the simplest missing-file case.
Load the exact VI path in the build environment
Check the file at the exact logged path, not another copy with the same filename. LabVIEW projects, search paths, instrument drivers, and vi.lib can contain links that resolve differently between development and deployment analysis.
- Start the LabVIEW version represented by the path:
LabVIEW 8.6. - Open
C:\Program Files\National Instruments\LabVIEW 8.6\vi.lib\printing\Query Available Printers.vi. - Record whether it opens without a missing-subVI dialog, search-path prompt, or broken run arrow.
- Inspect its callers from the application hierarchy rather than testing this VI only in isolation.
If the exact file is absent, repair the LabVIEW installation or restore the matching component through the official installer; do not substitute a same-named VI from an unknown version. If it opens but its caller hierarchy breaks, follow the first missing link shown by LabVIEW. If the full hierarchy loads, proceed to saved-version checks.
Find why the printing VI enters the build
A module can depend on printing support without an explicit print step in the TestStand sequence. An instrument driver, utility library, error-reporting path, or unused diagram branch can still place a statically linked VI in the dependency closure.
- Review every LabVIEW code module selected by the deployment.
- Use the LabVIEW hierarchy and caller information to find the first project VI that reaches
Query Available Printers.vi. - Identify whether that caller is application code, a shared utility, or an instrument driver.
- Decide whether the caller is required at the target station.
If the caller is required, keep it and repair its dependency chain. If it is obsolete and not executable from any deployed sequence, remove the caller from the deployment inputs and rebuild. Do not remove the printing VI alone while retaining a saved caller that requires it; the build will still lack a complete hierarchy.
Record the top-level caller and the resolved file location. This prevents a later search-path change from silently selecting a different copy.
Resave the complete hierarchy in the active LabVIEW version
The error explicitly identifies saved-version compatibility as the alternative to a missing subVI. The useful reading is therefore not merely “does the file exist?” but “can the build-time LabVIEW environment load every saved VI in this dependency branch?”
- Open the top-level LabVIEW module called by TestStand in
LabVIEW 8.6. - Allow LabVIEW to report unresolved files or version-related load problems.
- Resolve each missing dependency from the correct installed library or project location.
- Save the required application-owned hierarchy in the active version.
- Close LabVIEW, reopen the top-level module, and confirm that it loads without searching for files.
- Run deployment analysis again, then start a new build.
If the hierarchy cannot be loaded or saved in LabVIEW 8.6, stop this branch. Determine which LabVIEW version last saved the failing caller and align the build environment with the application's supported source version.
Resolve the dynamic TestStand sequence warnings separately
The log also reports expressions whose target sequence files cannot be determined statically. These warnings name RunState.ProcessModelClient and Locals.ModelPath. An expression-selected file may exist at runtime yet remain invisible to deployment analysis.
| Reference | Where it appears | Required decision |
|---|---|---|
RunState.ProcessModelClient |
MainSequence Callback, Routing Entry Point, and Test UUTs
|
Add the possible process-model client sequence files explicitly when the deployed station can select them. |
Locals.ModelPath |
PostUUT and PreUUT
|
Include every sequence file that the expression can resolve to on the target. |
One warning points into a TestStand 4.0 component tree, while other entries point into TestStand 4.1.1. Read the configured component directories and station search paths. If both trees are intentional, document which files come from each. If not, correct the workspace and search-path selection before packaging.
These dynamic sequence warnings did not produce the logged VI-processing stop, but ignoring them can create a deployment that builds and then fails when PreUUT, PostUUT, or a process-model callback executes.
Prove the deployment path with a clean sequence
Use a minimal deployment to separate an installation problem from an application dependency problem. The TestStand Reference Manual deployment procedure in Chapter 14 provides the baseline workflow.
- Create or select a clean sequence with no application instrument drivers or custom process-model callbacks.
- Analyze and build it using the same deployment workstation.
- Install and execute it on a clean target computer.
- Add the actual sequence files and LabVIEW modules in controlled groups.
- Rebuild after each group until the failing dependency branch is identified.
If the clean build fails with the same path, repair the LabVIEW/TestStand build environment before touching application code. If the clean build succeeds, the deployment utility is operating and the fault enters with an application module, driver, callback, or custom process model. Add only the required TestStand engine, drivers, and components after the application dependency set is known.
Rebuild and verify the resolving branch
- Delete no source files. Start a fresh build after correcting the hierarchy or excluding the unneeded caller.
- Confirm that analysis completes.
- Confirm that
Processing VIs...passes without theQuery Available Printers.vierror. - Review the log for unresolved expression-selected sequence files and add the required targets explicitly.
- Confirm that the installer is created; the failed run reported
An installer was not created due to an error. - Install on a clean target and exercise the normal entry point plus
PreUUT,PostUUT,Test UUTs, and any routing callback used by production. - Run the instrument-driver path that introduced the printing dependency, even if normal operation does not print.
A successful installer alone is not the acceptance test. The target must load every deployed LabVIEW module and every expression-selected sequence without searching the development machine's paths.
FAQ
What happens if Query Available Printers.vi opens normally?
Trace and load its complete caller hierarchy in LabVIEW 8.6. The deployment can still fail when a caller references a missing subVI or was saved under an incompatible LabVIEW version.
What happens if I ignore the RunState.ProcessModelClient warnings?
The installer may omit sequence files selected through RunState.ProcessModelClient. Production can then fail when MainSequence Callback, Routing Entry Point, or Test UUTs resolves the missing file.
What happens if a clean TestStand sequence also fails to build?
Treat the deployment workstation as the fault boundary. Stop changing application sequences and contact official NI support with the full deployment log, the exact LabVIEW and TestStand paths, and the smallest clean sequence that reproduces the failure.
Stop here if the correct installed LabVIEW version cannot load the exact hierarchy, if repairing installed library content would require copying files between versions, or if the minimal deployment reproduces the same failure. Escalate to official NI support with the complete log and reproducible clean build; do not send only the final missing-file line.