I’ve recently been looking into some of NI’s latest and greatest products, specifically SystemLink and NI Package Manager. They’re both exciting new developments for the NI community, with great promise for the future of LabVIEW and test and measurement applications. They also are providing DMC with a great benefit in the near term.
Before I dive into the detail of how we’re using these two products, I’ll provide a brief overview for any readers who may be unfamiliar.
National Instruments Package Manager (NIPM)
You can think of this product like Nuget Package Manager, but for LabVIEW. It is a product that allows users to extend LabVIEW with various programming libraries, drivers, toolkits, etc. It is aimed at (eventually) centralizing and consolidating the functionality of existing products like VI Package Manager, and will hopefully be a great replacement for all of these. It has become the new standard for delivering NI software packages and driver sets, which you probably noticed if you installed LabVIEW 2019 and associated drivers right from the NI Package Manager GUI.
Learn more from the NI Package Manager Portal.
This product is a software suite that allows you to connect, deploy, and manage distributed test, measurement, and control systems. Distributed systems can either be hardware, software, or a combination of both. It aims to centralize how we interact with devices, software, and data, ultimately making high-level systems management a lot easier.
Learn more about SystemLink from NI’s webpage.
Why is DMC excited about these products? Well, there are many reasons. First, we've started finding great use cases for SystemLink, where our clients have remotely deployed cRIOs or other devices that are usually difficult to manage. SystemLink has enabled us to save us and our clients lots of time by enabling remote deployment of application updates to multiple targets. We’ve also been using NIPM and SystemLink to improve our LabVIEW application deployment for PC and some RT applications. Before the release of SystemLink and NIPM, a typical way that LabVIEW applications were shared with others could be summarized in the following steps:
- Create the EXE and zip it along with supported files into a .zip file.
- Post the .zip file on an FTP or shared folder, and notify the other person that they’re available.
- End user downloads the .zip file on the machine that will use them, or copies them to a flash drive if doing so on a different PC.
- End user then copies the files and places them in the correct location on disk (this is where a lot of mistakes are made).
- End user then tests the EXE. If it doesn’t work, repeat the above process to return to a stable build.
Wow, that process is long, error-prone, and greatly complicates an otherwise simple task. We’ve looked at a few ways to address this problem, but we found a great answer with the release of both SystemLink and NI Package Manager.
The high-level view is to create packages on development PCs, post them onto feeds on our SystemLink Server, and then allow clients access to those feeds to download updates to their software. The image below shows one idea on how this might work and even allows for client’s who may or may not want to use a SystemLink server themselves for their own software/hardware management.
Packages – We’re now delivering executables in the form of an NI Package (.nipkg file). This not only wraps up the application along with supporting files but also can include drivers and other dependencies. All that is necessary to install them is to have NI Package Manager installed on the target PC and then double-click the NI Package. It will install itself to the correct location without the end user needing to know what files go where. This greatly simplifies the deployment process and prevents us from needing to use installers, since those have their own limitations.
Delivering Packages – Now that we have nice packages that are super easy to install, we can focus on how to deliver them. To do this, we’ve set up a SystemLink Server that is secure but accessible from outside of our network. For a given project, we set up a new feed in the Package Repository and link the end user’s computer to the feed through NI Package Manager. Feeds are just containers for packages, and end users can subscribe to a feed and get access to any packages added to it. Therefore, we can put new packages into a feed, and as long as the end user has subscribed to the feed, they’ll get the updated package.
Automated Updates – Now that the end user is linked up to the feed, we can add code to our applications that checks the feed and notifies them if an update is available. In fact, we can even have the application do the feed registration on the first time it launches. We can add a UI to allow them to select which version to upgrade or downgrade to. We’ve been working with NI to refine the NI Package Manager API, which is publicly available as a VI Package.
Automated Package Posting – For our developers, we wanted an easier way to allow them to publish their packages to a feed than by logging onto the SystemLink Server and uploading the package using the web interface. We knew you could interact with SystemLink through a standard HTTP interface, but programming that takes time and involves a slight learning curve to understand the command format. Luckily, NI has a beta version of a LabVIEW SystemLink API. This makes the HTTP calls much easier for us LabVIEW users, so I recommend this as the starting point. By using this API, we were able to have developers run a short LabVIEW function to post their package to the SystemLink Server. We plan to build this into our LabVIEW development environment an even nicer, more integrated approach.
**New in LabVIEW 2019 - packages can be automatically posted to a feed on a SystemLink Server by configuring an added menu option on the Package build properties.
Caveats and Considerations
The one big limitation at this point is that SystemLink feeds cannot be officially secured. Anyone with NI Package Manager can get access to the feed if they can guess the URL. So, until NI provides a solution to securing feeds, you’ll need to be creative with URLs or come up with a more clever solution. For many others looking to do this, it might be possible to put the SystemLink Server behind your network's firewall, which would prevent any outsiders from gaining access. The Server will only be accessible from the intranet, but for many environments this would not be a limitation, but rather a preferred mode of operation.
If you think this is necessary like I do, then go kudo Jim Kring’s idea. DMC is hoping that NI will soon close this loophole, and perhaps offer authentication certificates to targets that are registered to a specific feed, which would provide a means of limiting access to a specific feed on a public SystemLink Server.
Overall though, we’re excited about the new possibilities that SystemLink and NI Package Manager offer and look forward to seeing continued development on both fronts by NI in the coming months. Are you doing anything with NI Package Manager or SystemLink? If so, we’d love to hear about it. Comment below!
Learn more about DMC's LabVIEW Programming services.