For applications or toolkits that require NI Hardware Drivers, it can sometimes be a hard decision whether to include drivers with the installer or not. If you include the drivers, it can make the installer much larger which can be unnecessary if the user already has the driver installed. However if you do not include the drivers, users who do not already have them installed will get confusing errors and a bad first experience with your application.
The compromise for both of these problems is to have your application check for the driver installation on startup. If the driver is not installed, the application will cleanly give a message to the user pointing them to the correct download location. If the driver is installed, it will run the main code without the user knowing anything.
This document contains an example architecture about how to Check for drivers and then launch a VI. It contains the following VIs:
Example Launcher - Start Here.vi: This VI is the launcher VI which checks for the driver, and then either launches the main VI or returns a message to the user indicating the driver is required
Example Main.vi: This is the main application VI which is dynamically launched from "Example Launcher - Start Here.vi"
Check For Installed Driver.vi: This VI checks the registry for a specified driver and then returns the driver version and installed path of the driver. This VI returns error -603 if the driver is not installed.
Various subVIs and type-def controls used in "Check For Installed Driver.vi"