13
5 月
一个完全意料之外的Bug
- By IanGoo
这两天将Autodesk Alias 2024.1和Keyshot 2023.3升级到了2025.0和2024.1。这俩用的都是FlexNet License Manager作为许可服务器,自然激活也是从FlexLM来入手。我找到的软件包里都是FlexLM。
Keyshot还算好,但是Autodesk却出现了一个让我郁闷不已的Bug。
先说一下使用FlexLM向Alias授权的全部过程:
- 安装Autodesk Network License Manager(NLM),这个没啥疑问,肯定要装。
- 使用第三方
adskflex.exe
替换Autodesk NLM当中的第一方可执行文件。 - 向Autodesk Desktop Licensing Service的目录当中注入一个
netapi32.dll
。它将接替ADLS和NLM进行通讯。 - 修改License文件头当中的主机名和MAC地址。
- 在LMTools当中建立服务,设定好
lmgrd.exe
、许可证文件和Debug日志的位置,并设置为开机自启动。
所有使用FlexLM方案的软件(比如Autodesk全家桶、Abaqus、Ansys、Fluent、UG NX、Creo等等),都是这么个思路,其中的关键是第2、3,它相当于接管了FlexLM服务器和桌面Licensing服务的通信渠道,一个让服务器可以如常发出授权,另一个让软件相信下发的授权是正确的。很好理解。
事实上安装也确实挺顺利。三下五除二就搞定了。公司的电脑用着好好的,就是无线网卡掉线的时候就会导致FlexLM卡一下,可能需要重新运行一遍服务才行,但也能用。ROG更是跑得无比欢快。唯独家里的台式机。
刚装上时,一切都很正常。但是用一段时间后,就会报错Error[-8.544.0]
,错误内容是“License无效、所有License都被占据或者服务器未正常运行”。
我在FlexLM里折腾了很久、换了第三方提供的其他服务,都没能解决问题。
但是在今天上午继续苦闷的时候,我掏出ROG和台式机对比了一下,结果发现了一个差别:
为啥Autodesk Desktop Licensing Service的工作目录台式机里有俩,而笔记本里只有一个?
然后我的思路一下子就开窍了:
首先,FlexLM从任何角度来看都是完全正常的。它能够正常发送授权。
所以,差别就在于客户端了。ROG上的客户端拿到的授权被认为是正确的,而台式机上则被视为是错误的。那么是谁在负责授权校验呢?
Autodesk Desktop Licensing Service。而这就是两台电脑环境当中的区别。
打开看了一下,原因非常简单。台式机上的ADLS有两个以版本号命名的目录,很明显,这货被升级了。而升级之后的新目录当中没有加入嘴替netapi32.dll
,导致了新版本的ADLS无法通过FlexLM下发的授权。
将netapi32.dll
放进去之后,风平浪静,Alias顺利启动。
Bug消除。