在FlexNet服务器上,托管了几个不同时间的MDK License,它们具有相同的许可证类型,但服务支持结束日期不同。有些仍然有效的支持,有些已经过期了。我们有些客户使用旧的MDK版本,这些版本仍然受到维保过期的许可证的支持。然而,由于许可证问题,所以在Keil MDK的License Management只看到过期的服务支持结束日期。虽然FlexNet服务器有最新版的License,但使用最新MDK版本的客户端无法获取授权。如下面图1和图2所展示的一样。MDK Plus的License有多个维保期时间,其中就包括维保期到2024年的License和维保期到2017年的License。但是在License Management中只会显示2017年的维保时间(如图1)。而且客户端安装最新版本的MDK后去编译就会提示报错,提示”Flex license is not available”(如图2)。

图1

图2
在同一服务器上面部署多种不同支持日期的MDK Flexnet License的客户,可以根据需求让使用不同版本的Keil MDK可以获取License授权。
1、软件版本:(1)Flexnet:FlexNet Publisher 11.17.2.0 for Windows 64-bit(2)Keil MDK:Keil MDK 5.38a2、电脑环境(1)服务端:Windows 10(2)客户端:Windows 11
服务端MDK License服务已经配置好,可以启动成功。客户端可以正常获取到授权。
本文档对于该问题的解决思路:对于最新版本的Keil MDK无法获取的授权进行排除,使得最新版本的Keil MDK软件可以直接访问到支持该版本软件的license。想要排除就需要使用EXCLUDE命令编写Flexnet服务管理软件的配置文件。
1.EXCLUDE命令介绍
(1)命令作用:允许使用该特性的用户列表中排除一个用户或预定义的用户组。
(2)语法:EXCLUDE feature[:keyword=value] type {name | group_name}
① feature:受影响的特性或Package的名称。
在MDK license中指的是mdk的版本名,如:mdk_std、mdk_pro
② keyword=value:表示一组许可证的特性名称修饰符。
在MDK license中keyword为VERSION。value为版本号
③ type:USER, HOST, DISPLAY, INTERNET, PROJECT, GROUP, HOST_GROUP
④ name:对于这个特性的license需要排除的对应type类型项的名称。
例如:USER就是客户端的用户名username。HOST就是客户端的主机名hostname。
⑤ group_name:要排除的组的名称,组名区分大小写。
例如:GROUP就是客户端的用户名组。HOST_GROUP就是客户端的主机名组。
注意:name和group_name都不要有空格。
2.操作步骤
(1)创建opt文件:在服务管理软件flexnet文件夹(如C:\FLEXNET\flexnet_17)中创建一个license.opt文件(如图3)。

图3
(2)确认EXCLUDE语句中需要排除的license信息,在opt文件中写入对应的语句。
① 确认需要排除的license信息,可以根据序列号在license文件中进行确认。如图4中的第1处。
② feature参数可以在license文件中的PACKAGE段中可以查看到。如图4中第2处。
③ value参数可以在license文件中的UPGRADE段中可以查看到。如图4中第3处

图4
(3)实例① 单用户:电脑用户名为”xiaoming”的工程师想要授权过程中不去获取不支持该版本使用的产品名为mdk_std、版本号为5.020xxxx的license。EXCLUDE mdk_std:VERSION=5.020xxxx USER xiaoming② 单主机:电脑主机名为”DESKTOP-A”的工程师想要授权过程中不去获取不支持该版本使用的产品名为mdk_std、版本号为5.020xxxx的license。EXCLUDE mdk_std:VERSION=5.020xxxx HOST DESKTOP-A③ 多用户组:电脑用户名为xiaoming、xiaowang、xiaomei的三个工程师想要授权过程中不去获取不支持该版本使用的产品名为mdk_std、版本号为5.020xxxx的license。GROUP most_recent_mdk_users xiaoming xiaowang xiaomeiEXCLUDE mdk_std:VERSION=5.020xx GROUP most_recent_mdk_users④ 多主机组:电脑主机名为DESKTOP-A、DESKTOP-B、DESKTOP--C的三个工程师想要授权过程中不去获取不支持该版本使用的产品名为mdk_std、版本号为5.020xxxx的license。HOST_GROUP most_recent_mdk_host DESKTOP-A DESKTOP-B DESKTOP--CEXCLUDE mdk_std:VERSION=5.020xx HOST_GROUP most_recent_mdk_host(4)确认好后,就在license.opt文件中对应的语句(如图5)。

图5
(5)在license文件中“VENDOR”行中用“options”参数去指定opt文件路径(如图6)。例如:options=C:\FLEXNET\flexnet_17\license.opt

图6
(6)设置好license文件和opt文件后,重新启动一下服务。
(7)服务启动成功后,客户端重新连接一下。License management中会如图7中第一处一样在Support Period显示出最新的维保时间2024年。如果排除的对应的license只有一个,那么就会如图7中第2处一样在Support Period就会显示”User/host on EXCLUDE list for”信息。然后build工程,就不会在报错(如图8)。这样最新版本的软件就可以排除掉对应的license,调用到正确的license了。

图7

图8
对于拥有多种支持时间的MDK Flexnet license的用户来说,使用上面的方法可以有效的使得license的使用得到最大化,不同版本的软件可以直接调用到相对应支持的授权。也可以解决因为Flexnet服务管理软件的服务时间的检测方式导致最新版本的MDK无法调用license使用,从而不得不将新的license部署到另外一台服务端的问题,降低了软件授权使用的硬件成本,也方便了人为对于授权的管理与监测。
对本文内容有疑问的地方欢迎大家留言询问。

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删