• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Dreama
只想要简简单单的快乐!
博客园    首页    新随笔    联系   管理     
NI-VISA.NET运行时包提取

提取原因

官方不再提供运行时的安装包,下面以截止目前为止(2025-4-16)官方的安装包为例:
image
以上图片中可以从包含的版本一行中看到完整版两字,而最后一个提供运行时的版本则为18.5,如下图:
image
现在NI-VISA提供的完整包,提供了太多的功能,比如:LabVIEW相关的、开发者工具包、NI-MAX、IO-Trace等,导致文件体积太大,约为1.5G,如下图:
image
虽然目前的存储介质的存储容量都比较大,但是1.5G,需要拷贝(或下载)到作业环境中某些电脑配置低(或下载网速低)的时候,真的是让人难以忍受,因此才对完整包内容进行提取。

提取过程

环境

开发环境:Windows 11 x64、VS2022、
开发框架:WPF、NET Framework4.7.2

下载完整包

从以下网址下载安装包:
https://www.ni.com/zh-cn/support/downloads/drivers/download.ni-visa.html
操作平台为Windows,版本选择最新的,点击“离线安装”,弹出“下载脱机安装程序”的界面后,点击“下载”,图片可参考前面所述页面截图。

提取NI安装包

双击打开安装包,复制除了pool里面的内容外的其他文件夹及文件到名称为ni-visa-dotnet-runtime-25.3.0(名称可自定)文件夹内:
image
pool文件夹内包含了所有需要安装的安装包,为了能让Install.exe安装程序识别到安装包,必须在pool文件夹内放置VISA.NET运行时对应的安装包。
因此,需ni-visa-dotnet-runtime-25.3.0内新建pool文件夹。
双击Install.exe运行安装程序,点击肯定性的按钮或者选项,安装软件会安装NI Package Manager,再使用这个程序安装拓展名为.nipkg的安装包。
当到了以下页面的时候,点击“取消全选”,再点击“NI-VISA.NET运行引擎”(只保留这一个)
image
点击下一步之后,出现以下页面,根据拓展名为.nipkg的文件名称,如:eula-ivi_25.3.0.49221-0+f69_windows_x64.nipkg
image
在原来安装包最原始的pool内找到对应的文件,如下:
image
将其拷贝到新建空的pool文件内,不断重复以上操作,就可以把所有缺失的安装包找出来。

提取结果

文件对比

左边为原始pool文件夹内的文件,右边是提取之后pool文件夹内的文件,红色是未提取的,蓝色是已提取的。
image
image

测试

使用以上完整版安装的环境,开发串口数据传输的小软件。
在主窗体加载时引发Loaded事件,用以显示所有的资源名称、找到第一个/第二个串口资源以供后面串口数据通信:

        private async void Window_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                ResourceManager resourceManager = new ResourceManager();
                string info = await Task.Run(() => 
                {
                    var resources = resourceManager.Find("?*");
                    if(resources.ToArray() is string[] array && array.Length>=2 && array[0].Contains("ASRL") && array[1].Contains("ASRL"))
                    {
                        _firstResource = array[0];
                        _secondResource = array[1];
                        RS232Enabled = true;
                    }
                    string content = string.Empty;
                    foreach (var resource in resources)
                    {
                        content += $"{resource}\n";
                    }
                    return content;
                });
                TextBlock1.Text = info;
            }
            catch(Exception ex)
            {
                TextBlock1.Text = ex.Message;
            }
        }

在按钮的Click单击事件引发串口通信,串口1发送当前时间到串口2,代码如下:

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            if (!(e.Source is Button button)) return;
            RS232Enabled = false;
            SerialSession session1 = null;
            SerialSession session2 = null;
            try
            {
                string result1 = await Task.Run(() => 
                {
                    //发送
                    session1 = new SerialSession(_firstResource);
                    //接收
                    session2 = new SerialSession(_secondResource);
                    session1.FormattedIO.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss fff}");
                    string result = session2.FormattedIO.ReadLine();
                    session1.Dispose();
                    session2.Dispose();
                    return result;
                });
                MessageBox.Show($"已收到 {result1}");
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                session1?.Dispose();
                session2?.Dispose();
            }
            RS232Enabled = true;
        }

完整项目文件:下载

注:由于是电脑系统内之间的串口通信,没有用到物理串口,因此要使用VSPD虚拟串口软件,需自行下载
由于测试环境中的电脑没有物理串口,所以以上代码使用了第一个、第二个串口,如果自己测试用的电脑有物理串口,需根据实际情况更改以上代码

运行结果:
image
接着将以上程序拷贝到已经安装以上NI-VISA.NET运行时的系统上,进行验证,如果结果与上面图片一致,说明运行时可用。

我们也可以从以下路径的信息获取到安装包的依赖信息,以下图片为例,图片中Depends对应的值为:

Depends: ni-mdfsupport (>= 25.3.0), ni-metauninstaller (>= 25.3.0), ni-msiproperties (>= 25.3.0), ni-msvcrt-2015 (>= 14.1.5), ni-visa-shared-components (>= 5.11.0)

再依据Package的值就可以找到对应的安装包。
image

路径feeds\ni-visa内的文件夹存储着安装包的相关信息,也许只要对Packages、Packages.gz、Packages.stamp三个文件进行修改,就可以完全自定义安装显示及安装指定的安装包了。
有时间的话,可以自己研究,针对其他NI(National Intruments)的其他最新产品,也是如此之操作。

提取包

提取的安装包:ni-visa-dotnet-runtime-25.3.0.7z 网盘

提取码: 4i9e

其他安装方式

需要先安装NI Package Manager软件,用于对拓展名为nipkg的安装包进行安装。
分析pool文件夹的文件哪些是NI-VISA.NET运行时需要的安装包,点击安装,根据提示的安装文件缺失信息找到必要的安装包。
分析完之后,因安装包有依赖关系,所有就有安装的先后顺序,通过分析之后的安装包如下:
image
通过以上顺序安装,即可安装需要的运行时软件,且安装的内容是最少的。
提取的安装包:ni-visa-dotnet-runtime-portable_25.3.0.7z 网盘

提取码: kuxc

posted on 2025-04-16 15:21  Dreamma  阅读(185)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3

© 本文章版权归 Dreama 所有, 转载授权请联系: cnxy@88.com

如果本文对您有帮助,欢迎支持原创

支付宝

支付宝扫码支持

微信

微信赞赏支持