Installation is part of the product
Deployment becomes a project in its own right when software depends on several elements: a LabVIEW application, hardware drivers, a database server, utilities, or customer-specific configuration. Each element has its own lifecycle and installation requirements.
Our approach identifies these components and their relationships. The aim is to deliver a consistent system while allowing individual components to evolve without rebuilding everything else each time.
Versioned components
- LabVIEW application
- Drivers and prerequisites
- Configuration
- Database and third-party tools
Release configuration
The LabVIEW tools describe packages and their dependencies. Qt Installer Framework generates the release.
Installation and maintenance
- Offline installer
- Or installation from an online repository
- Updates based on components and their dependencies
Separate components and make dependencies explicit
A package describes what must be installed: its files, version, dependencies, and any specific operations. The installer then brings together the packages required for the product and target machine.
For example, a new executable can be delivered without redistributing an unchanged driver. This requires checking compatibility between their versions. An update that changes data formats or configuration also needs a migration strategy.
- Identify components shared across products and those specific to each one.
- Define compatible versions and mandatory or optional components.
- Plan how to handle existing configuration files and data.
LabVIEW tools for preparing a release
STUDIO BODs has developed LabVIEW libraries to describe packages and installers, save their configuration, and prepare the files required by Qt Installer Framework. The configuration interfaces use DQMH.
These tools connect release preparation to the LabVIEW development environment. Configurations can be saved, loaded, and used to generate a new release. The build tools are also accessible through a LabVIEW API.
- Package configuration: versions, dependencies, source files, scripts, and required administrator rights.
- Installer configuration: package selection, target directories, update repositories, and the installation wizard’s appearance.
- Generation: directory and XML preparation, followed by archive, installer, and repository creation using the Qt tools.
Install on connected or isolated machines
Qt Installer Framework can produce an offline installer containing the components to deliver, or an online installer that retrieves them from a repository. The choice depends on network access and the constraints of the deployment site.
An isolated machine needs a complete delivery with its prerequisites. A connected fleet can use a repository to distribute component updates. Qt’s maintenance tool lets users add, update, or remove components; online updates depend on the configured repository.
Plan updates alongside the first installation
An installer needs to be evaluated on machines representative of the fleet: a clean workstation, a machine running an earlier version, an account with limited permissions, or an environment without network access. We define the expected behavior with your team.
We also prepare what support staff and the next developer will need: release configurations, tool versions, build instructions, and verification scenarios. A database or an operation involving third-party software may require its own recovery procedure.
- Check prerequisites and required permissions before changing the machine.
- Test updates while preserving the data and settings that should remain.
- Define diagnosis and recovery steps for interruptions and failures.
Apply the approach to your application
We start by inventorying what your application actually installs and the machines it must run on. We then select a representative workflow, such as a first installation followed by an executable update that preserves configuration.
This first release lets us validate the component boundaries and dependencies before extending the solution to other components or product variants.
