NI Package Manager (NIPM)

cancel
Showing results for 
Search instead for 
Did you mean: 

Ensure same versions of NI Software components are installed on all offline Test benches using NIPM.

Hi all, 

 

In our company we have multiple Test Benches worldwide which have NI Software- LabVIEW, TestStand, Runtimes, Drivers like DAQmx, XNET installed on them. These Test Benches are not connected to internet so NIPM cannot reach ni.com to download software updates.

 

Generally, we develop LabVIEW code modules on our development PCs and distribute them as PPLs to these Test Benches using Gitlab repos.

Problem: Many times, these Test Benches have different or older versions of device drivers installed on them and hence the PPL compiled on the development PC throws compatibility issues like "LABVIEW 20xx Runtime support for DAQmx missing".

 

Question: How can we avoid this problem and ensure that all our Test Benches have the same versions of NI Software components.
Also, If I install new NI Software component on my Development PC eg. NI-DAQmx 21.00 then how can all Test Benches get this update in their NIPM?

 

Raul2203_0-1648713473281.png

 

 

Thank you,

 

Rahul

Certified LabVIEW Developer 

 

0 Kudos
Message 1 of 11
(2,807 Views)

I'd suggest creating an nipkg that specifies all of the other packages you need, along with their specific versions. You don't need to include anything important (e.g. source code) in this, it's just a "meta package". I don't remember if from my testing you need to install something, if so, you can include a simple text file (it doesn't need contents, but a list of the files and versions might be an appropriate non-junk usage).

 

NI using nipkgs to distribute most of their software now makes this much easier - and if you're only targeting one setup/LabVIEW version, you could also create your own packages for VIPM packages (taking care to check licenses appropriately).

 

For the gitlab PPLs, as you noted in your other post here, I don't think you can currently run an NIPM feed on a GitLab hosted server, but you can run the feed somewhere within your company and download from there.

 


@Raul2203 wrote:

In our company we have multiple Test Benches worldwide which have NI Software- LabVIEW, TestStand, Runtimes, Drivers like DAQmx, XNET installed on them. These Test Benches are not connected to internet so NIPM cannot reach ni.com to download software updates.

 


I think you can mirror the NI packages on your own company server - does that solve your problem? (As in, do you have some server that you do connect the test benches to?)

Some of the comments in this thread might help with that, although I haven't tried mirroring packages, and the main point in that thread relates to using Docker, which is not so relevant for you. 


GCentral
0 Kudos
Message 2 of 11
(2,804 Views)

@cbutcher wrote:


...


I think you can mirror the NI packages on your own company server - does that solve your problem? (As in, do you have some server that you do connect the test benches to?)

Some of the comments in this thread might help with that, although I haven't tried mirroring packages, and the main point in that thread relates to using Docker, which is not so relevant for you. 


I am working on a local repo approach as well. Creating the packages using package builder works quite well, registering the local repo on the client machine as well.

The tricky part begins, when need to specify, which packages and their dependencies should be applied to the worksstation in question. 

What I am trying is to manually configure a machine setup and produce a installed package list on that base, that I can use. 

 

What is annyoing: once you install a package from your own repo, the standard ni.com repo gets registered as well....

 

 

0 Kudos
Message 3 of 11
(2,799 Views)

@Oli_Wachno wrote:

What is annyoing: once you install a package from your own repo, the standard ni.com repo gets registered as well....


I agree this is somewhat annoying, but why is it a problem?

 

I've not used NIPB, so maybe this is difficult/impossible there, but if the issue is specifying versions of packages (so that the NI feed doesn't give you a newer version than you expected) you can write your own "control" file in your metapackage and specify exact versions. Then I think the NI feeds shouldn't matter. But maybe it's a different issue and something related to control, or importing, or something?


GCentral
0 Kudos
Message 4 of 11
(2,797 Views)

No show stopper, but I'd like to keep my database clean 🙂

0 Kudos
Message 5 of 11
(2,795 Views)

As a PowerShell script, this might get you somewhere:

 

 (nipkg list-installed | Out-String) -split '(\r?\n){4,}' | Where-Object { $_ -match '\S' } | ForEach-Object {
>> $lines = ($_ -split '(\r?\n){2,}') | Where-Object { $_ -match '\S' }
>> foreach ($line in $lines) {
>> $name, $version, $others = ($line -split '\t').Trim()
>> echo "$name (=$version)"
>> }}

 

 

 

Instead of using "echo" you could probably build them into some other structure or file you liked, and conceivably you could also nest them into an array and then flatten to get a single string (albeit, in my case, a very long one on this PC) for the "Depends:" tag.

 

Edit: like this:

 

(nipkg list-installed | Out-String) -split '(\r?\n){4,}' | Where-Object { $_ -match '\S' } | ForEach-Object {
>> $lines = ($_ -split '(\r?\n){2,}') | Where-Object { $_ -match '\S' }
>> $deps = foreach ($line in $lines) {
>> $name, $version, $others = ($line -split '\t').Trim()
>> echo "$name (=$version)"
>> }
>> $deps -join ", "
>> }

 


GCentral
Message 6 of 11
(2,792 Views)

Thanks, dear PowerShell Wizard 🙂

0 Kudos
Message 7 of 11
(2,786 Views)

@Oli_Wachno wrote:

Thanks, dear PowerShell Wizard 🙂


Because we're all here for the text-based programming... right? 😕


GCentral
Message 8 of 11
(2,783 Views)

Well.... let me re-think  🤔..... YES!

 

Though we have to admit, that we're on some corner cases here, so I can somewhat understand, that features like this are not on top of the backlog...

0 Kudos
Message 9 of 11
(2,770 Views)

Oli, regarding "What is annoying: once you install a package from your own repo, the standard ni.com repo gets registered as well." When installing software from NI.com using Browse Products tab or a downloaded online installer, NIPM automatically adds the corresponding registered feed(s) to NIPM. When installing software from a local feed or offline installer, NIPM will lazily look for the corresponding registered feed after installation to add any missing feeds to NIPM. The option highlighted below controls this behavior.

 

Scott_Richardson_0-1649265070446.jpeg

 

Scott Richardson
https://testeract.com
Message 10 of 11
(2,720 Views)