AV License Server — 手册
目录
1. 概述与工作原理
AV License Server 管理"并发席位"(concurrent seats)许可证:每个产品(如 SPC、SPP)在客户的激活码中设定了可以同时使用的最大席位数。它不绑定单台电脑:网络上的任意客户端都可以使用一个空闲席位,直到席位全部用完为止。
该系统由两个程序组成,安装在同一台电脑(服务器)上:
- AV_LicenseServer.exe — 作为 Windows 服务在后台运行,始终处于激活状态(即使没有用户登录)。它负责响应网络上客户端的请求,没有图形界面。
- AV_LicenseManager.exe — 管理控制台:用于启动/停止服务、查看日志以及管理激活文件。无需一直保持打开:服务器的运行不依赖于它。
客户端(SPC、SPP 等,安装在网络上的其他电脑上)在启动时通过网络(TCP)连接到服务器,请求许可证,并在保持打开期间通过定期发送信号("心跳")来维持该许可证的有效性。
2. 系统要求
- 安装时需要 Windows 管理员权限(用于注册 Windows 服务并写入 Program Files 目录)。
- 选作服务器的电脑必须在局域网内拥有固定或保留的 IP 地址(如果发生变化,所有客户端都需要重新配置)。建议通过路由器上的 DHCP 保留分配,或将其设为静态 IP。
- 没有其他软件前置要求:安装程序已包含所需的一切。
3. 安装
- 将安装程序
<yyyymmdd>_AV_LicenseServer_x64.exe(由安装包在Kit\Output\中生成;文件名以生成日期开头,例如20261010_AV_LicenseServer_x64.exe)复制到选作服务器的电脑上并运行。 - 确认管理员权限请求(UAC)。
- 在安装向导的可选任务页面中:
- "Install and start the AV License Server Windows service" — 默认已勾选。保持勾选可立即启动服务;仅在希望只安装文件、暂不启用服务时取消勾选。
- "Create a desktop icon for AV License Manager" — 默认未勾选,如果经常在该电脑上进行管理操作,可以勾选以方便使用。
- 完成安装。如果服务已被安装,安装程序会:
- 注册并启动该服务(内部名称为
AV_LicenseServer,在services.msc中显示为 "AV License Server"); - 自动在 Windows 防火墙中添加例外规则,允许
AV_LicenseServer.exe通过,且仅限于域和专用网络配置文件(不包括公用网络)——如果没有此例外,其他电脑上的客户端将无法连接到服务器(参见第 8 节)。
- 注册并启动该服务(内部名称为
- 安装到
C:\Program Files\AV License Server\中的文件:AV_LicenseServer.exe(服务程序)AV_LicenseManager.exe(管理控制台 — 其"开始"菜单/桌面快捷方式已设置为以管理员身份启动,这是控制服务所必需的)AV_LicenseServer.ini— 带有默认值(Port=7788 等)的示例配置文件;后续更新永远不会覆盖它。AV_LicenseServer_Manual.html— 本手册,也可从开始菜单("AV License Server Manual")打开。
- 此时服务器已经处于激活状态,但尚未启用任何许可证:必须先安装客户的
Code.txt激活文件(第 4 节),真实客户端才能获得许可证。在此之前,客户端仍会尝试连接,并自动获得30 天的试用期(参见第 7 节)。
4. 授权激活:Code.txt 文件
Code.txt 文件决定了该服务器上启用了哪些产品、允许多少并发席位以及有效期至何时。它是针对特定客户生成的,并与服务器电脑的硬件绑定(如果复制到其他电脑上则无法使用)。
4.1 申请激活码
在 AV License Manager 的 Licenses 选项卡中,点击 "Code request" 按钮会自动检测本机的两个硬件标识符(SystemID 和 NetworkID),并打开浏览器进入 Arolo 页面提交激活码申请,两个标识符已自动填好,无需手动抄写。
4.2 安装收到的激活码
收到由生成激活码的一方(通过电子邮件或其他方式)提供的 Code.txt 文件后:
- 打开 AV License Manager,切换到 Licenses 选项卡。
- 点击 "Select Code.txt..." 并选择收到的文件:系统会对其进行验证,并自动复制到服务器所在的文件夹中。
- 相关数据(客户名称、已启用产品、席位数、到期日期)会立即显示在列表中,为只读状态。
- 重启服务(在 Service 选项卡中点击 Stop,然后 Start;也可用 Refresh status 按钮查看当前状态):服务器仅在启动时读取
Code.txt—— 在应用打开状态下安装新文件,不会影响当前已生效的许可证,直到服务重新启动为止。
"Remove license file" 按钮用于删除当前的激活文件(仅在需要替换时使用;没有 Code.txt 将无法授予任何正式许可证,只能使用试用期)。
4.3 文件内容
针对每个产品记录:名称、授权的最高版本、并发席位数量、签发日期以及到期日期(或"永不过期"),以及该产品已启用的可选功能(选项,例如 SPC 的 ResidualAnalysis 和 CutOptimization;全部或无)。该文件在磁盘上是加密存储的:用文本编辑器打开将看不到任何可读内容。
5. AV License Manager 日常使用
三个主要部分,均位于 Service 选项卡中:
- 标题标签 — 显示名称、已安装的 AV License Server 版本,以及客户端需要连接的 IP 地址和端口(例如
Service: AV_LicenseServer (AV License Server) v26.10.28.0 - 192.168.0.31:7788)。这是配置每个客户端时需要使用的值(参见第 6 节)。 - 服务状态(Running / Stopped / not installed),每 2 秒刷新一次,配有以下按钮:
- Start / Stop — 启动或停止服务。
- Install service / Uninstall service — 注册或移除该 Windows 服务(通常安装程序已经完成此操作;仅在手动重新安装时才需要用到)。
- Refresh status — 立即刷新状态,无需等待定时器。
- Log — 显示
AV_LicenseServer.log的最新内容,可手动刷新或每 2 秒自动刷新,并附有一个按钮可在资源管理器中打开日志所在文件夹。有助于了解某个客户端为何未能获得许可证(拒绝的确切原因总会记录在此处)。
所有针对服务的操作都需要管理员权限:如果权限被拒绝,应用会提示以提升权限的方式重新启动。
Licenses 选项卡显示当前生效的 Code.txt 数据,以及用于申请新激活码或安装已收到激活码的按钮(参见第 4 节)。Available 列显示每个产品当前仍可用的许可证数量:席位数减去正在使用的许可证和借出的许可证(参见第 7.1 节)。该值在打开选项卡或点击 Refresh 时从正在运行的服务读取,例如显示 3 of 5 或 2 of 5 (1 borrowed);如果 Code.txt 中该产品的许可证已过期,显示 0 (expired);服务停止时显示 n/a (service not running);对于新 Code.txt 中服务尚未加载的产品,显示 n/a (restart the service)(参见第 4.2 节)。Options 列显示 Code.txt 为每个产品启用的可选功能:All(全部)、None(无)或其列表(例如 ResidualAnalysis, CutOptimization)。
Borrowed 选项卡列出当前借出的许可证(参见第 7.1 节):产品、用户、计算机、借出日期、到期日期和剩余天数。该选项卡为只读 — 借出只能在客户端归还或到期时结束 — 并在打开选项卡或点击 Refresh 时更新。
6. 配置客户端(SPC、SPP 等)
每个客户端应用程序都有一个设置文件(例如 settings.xml),其中包含类似如下的节点:
<License Server="192.168.0.31" Port="7788" Product="SPC"/>
- Server:服务器电脑的 IP 地址,即 AV License Manager 中 Service 选项卡显示的地址(参见第 5 节)——如果客户端运行在与服务器不同的电脑上,绝不能使用
127.0.0.1/localhost(只有当客户端和服务器恰好在同一台机器上时才会"碰巧"生效,详见第 8 节)。 - Port:服务器上配置的端口(
AV_LicenseServer.ini,默认值为7788)——必须与之一致。 - Product:
Code.txt中预期的产品名称(不区分大小写)。
如果服务器的 IP 地址将来发生变化(更换电脑、网络重新配置等),必须在所有客户端上同步更新。
7. 客户端许可证的管理方式
- 启动时,客户端会连接到服务器,为自己的产品/版本申请一个许可证。如果有空闲席位(且该产品已在
Code.txt中启用),即可获得许可证;否则会收到错误信息(例如"没有可用席位")。 - 使用期间,客户端每 30 秒发送一次信号("心跳"),以确认自己仍处于活动状态并维持许可证。
- 正常关闭时,客户端会明确释放许可证,该席位会立即重新变为可用状态,供其他用户使用。
- 发生崩溃、断电或网线断开等情况时:如果 TCP 连接中断,服务器会立即释放该许可证;如果连接处于"挂起"状态而不再收到心跳,服务器也会在经过
HeartbeatTimeoutSec(默认 90 秒,可在AV_LicenseServer.ini中配置)后将其释放。实际上,不会因为某个客户端异常消失而长时间占用某个席位。 - 试用期:如果因任何原因该产品未被启用(没有
Code.txt、产品未列出、硬件不匹配、已过期等),客户端仍可获得30 天的试用访问权限,从其自身可执行文件的编译日期算起,且没有席位数量限制。该试用期无法通过安装/删除Code.txt来"重置":其基准是固定绑定到客户端的编译版本的。 - 即将到期提醒:一个真实(非试用)许可证如果即将到期(可配置的阈值,默认 15 天),会在客户端触发一个非阻断性的提醒——许可证仍会照常授予。
- 许可持有人:真实许可证还会显示该许可证所登记的客户名称(来自
Code.txt),客户端可以在其界面中显示该信息。 - 产品选项:真实许可证还会告知客户端该产品启用了哪些可选功能(
Code.txt中的 Options,参见第 4.3 节);客户端应用程序只启用这些功能。试用期内所有选项均处于启用状态。借出的许可证保留借出时所拥有的选项。
服务器停止或重新启动:许可证状态由服务保存在内存中,因此服务重新启动后不再记录已占用的席位。已在运行的客户端程序可以继续工作(许可证仅在启动时检查),并会在下一次心跳(30 秒内)自动重新登录并重新占用一个席位,无需手动操作。为确保它们能找回席位,服务器在重新启动后的 40 秒内会为重启前已连接的客户端保留席位:在此时间窗口内启动的新客户端会被提示几秒后重试。如果没有有效的许可证(服务器持续约 90 秒无法访问,或在此期间其他用户已占满所有席位),SPC 和 SPP 会显示提示信息:随后 SPC 会禁用其控件,与启动时许可证无效的情况完全相同,并在许可证恢复后自动重新启用(客户端每隔 30 秒重试一次);SPP 则会关闭。为避免这种情况,请在非工作时间重启服务器。
7.1 离开网络工作:借出许可证
需要离开办公室工作的用户(在客户现场、在家或出差时使用笔记本电脑)可以在离开前借出一个许可证:
- 借出(仍在网络中时):在客户端应用程序中选择借出命令并指定天数。服务器在此期间为该计算机保留一个席位,并向其发放一张签名的票据,保存在该计算机上。服务器最多批准
MaxBorrowDays天(默认 30 天,AV_LicenseServer.ini中的键;0表示禁用借出),且绝不超过Code.txt中许可证的到期日期。试用许可证不能借出。 - 离开网络时:客户端无需连接服务器即可正常启动和工作,直到借出期结束。票据仅在为其签发的计算机上有效,不能被修改,如果系统时钟被调回,票据将失效。
- 席位保持占用:在许可证借出期间,服务器将该席位计为已使用(即使服务重启后也是如此),因此其他用户无法使用。借出的许可证列在 AV License Manager 的 Borrowed 选项卡中。
- 回到网络:客户端会自动重新连接服务器,并继续使用同一个借出席位。如需提前释放席位,请使用客户端的归还命令(服务器必须可以访问)。
- 到期:如果许可证未归还,借出期结束时服务器会自动释放该席位,同时该计算机上的票据失效。因此,丢失或损坏的计算机会一直占用其席位直到借出期结束:无法提前释放,请谨慎选择天数。
7.2 无需 License Server:单机许可证
不使用 License Server 的单台计算机(例如只有一台 PC 的公司)可以使用单机许可证(stand-alone):一个文件(.lic),仅在该计算机上授权一个产品,无需服务器、网络或席位。
- 申请:在客户端应用程序的 License 窗口中,Stand-alone license 区域的 Copy 按钮会将 Computer code(计算机代码)复制到剪贴板:将其发送给您的供应商,由供应商签发
.lic文件(产品、最高版本、选项、签发日期以及到期日期或永不过期)。 - 安装:在同一区域中点击 Import license... 并选择收到的文件。系统会对其进行检查(本计算机、本产品、日期、版本)并保存到
%ProgramData%\AV_License\中,对该计算机的所有用户有效;它会立即生效,正在占用的网络席位会被释放。放在客户端可执行文件旁边的<产品>.lic文件同样会被使用。 - 使用:启动时,客户端首先查找单机许可证;如果没有或无法使用,则照常联系 License Server(网络许可证、借出、试用)。使用单机许可证时,即将到期提醒、许可证持有人和产品选项的工作方式与网络许可证相同;无需借出,借出请求会被拒绝。
- 保护:该文件仅在签发时指定的计算机和产品上有效,不能修改,并且如果系统时钟被调回,该文件将失效。如果文件存在但无法使用(已过期、为其他计算机签发等),客户端会显示原因。
- 删除:Remove license 会将其从计算机中删除;随后客户端将重新使用 License Server。
8. 网络与防火墙
服务器会监听电脑上的所有网络接口(而不是单一地址),因此:
- 如果客户端与服务器位于同一台电脑上,网络 IP(如
192.168.0.31:7788)和127.0.0.1:7788(回环地址)都可以正常使用; - 如果客户端位于不同电脑上,则只有服务器的网络 IP 地址可用——绝不能使用
127.0.0.1,因为它指向的是客户端自身。
服务器电脑上的 Windows 防火墙必须允许该端口的入站连接,否则远程客户端将无法连接(相关症状参见第 10 节)。安装程序会自动创建此例外规则(仅限于域/专用网络,不包括公用网络——这与该服务仅面向公司局域网使用的定位相符)。仅在以下情况下才需要手动重新创建:
- 服务并非通过官方安装包安装的;
- 该例外规则被手动删除,或因防火墙重置而丢失;
- 服务器电脑所连接的网络被归类为"公用"而非"专用"/"域"(在这种情况下该例外规则不会生效:请在 Windows 的"设置 > 网络和 Internet"中检查网络配置文件)。
手动(重新)创建该规则的命令,需在服务器电脑上以管理员身份运行(如安装在其他位置,请相应调整路径):
netsh advfirewall firewall add rule name="AV License Server" dir=in action=allow program="C:\Program Files\AV License Server\AV_LicenseServer.exe" enable=yes profile=domain,private
9. 更新
在服务器电脑上运行新的安装程序(<yyyymmdd>_AV_LicenseServer_x64.exe),操作方式与首次安装相同:它会覆盖可执行文件,但不会更改已有的 AV_LicenseServer.ini 或 Code.txt(客户的配置和激活信息保持不变)。服务会先停止,文件更新完成后,如果相应的任务选项保持勾选,服务会自动重新启动。
10. 故障排除
| 客户端出现的现象 | 最可能的原因 | 需要检查的内容 |
|---|---|---|
Communication error with the License Server: Connect timed out |
数据包始终无法到达目标:服务器电脑上的 Windows 防火墙阻止了该端口,或者 IP/网络配置有误。 | 在客户端电脑上执行:Test-NetConnection <服务器IP> -Port 7788。如果结果为 False,请检查服务器上的防火墙例外规则(第 8 节),并确认客户端与服务器处于同一可达的网络/子网中。 |
Communication error with the License Server: Socket Error #10061 - Connection refused |
该电脑有响应,但该端口/IP 上没有任何服务在监听:服务已停止,或客户端与服务器配置的端口不一致。 | 在服务器电脑上执行:netstat -an | findstr 7788(应显示 LISTENING);检查 AV License Manager(Service 选项卡)中的服务状态,并确认 AV_LicenseServer.ini 中的 Port= 与客户端配置一致。 |
NO_SEATS_AVAILABLE / "没有可用席位" |
该产品的所有并发席位已被占用。 | 检查当前有多少用户正在打开该程序;如需增加席位,请向管理激活码的一方申请提高 NumberOfLicense 值的新 Code.txt。 |
LICENSE_EXPIRED |
该产品在 Code.txt 中已列出,但其到期日期已过。 |
向管理激活码的一方申请续期(获取新的 Code.txt)。 |
VERSION_NOT_LICENSED |
客户端版本高于 Code.txt 中为该产品授权的最高版本。 |
申请涵盖新版本的新 Code.txt,或继续使用不高于授权版本的客户端。 |
TRIAL_EXPIRED |
该产品没有有效许可证(没有 Code.txt、产品未列出、硬件不匹配),且客户端的 30 天试用期已结束。 |
安装客户的 Code.txt(参见第 4 节)并重新启动服务;确切原因记录在日志中。 |
SERVER_STARTING |
服务刚刚重新启动:在 40 秒内,它会为重启前已连接的客户端保留席位(参见第 7 节)。 | 等待几秒钟后重新启动客户端。 |
BORROW_DISABLED / BORROW_NOT_ALLOWED |
服务器上已关闭借出功能(MaxBorrowDays=0),或该产品只有试用许可证,而试用许可证不能借出。 |
在 AV_LicenseServer.ini 中将 MaxBorrowDays 设置为大于 0 的值并重新启动服务;如果是试用许可证,请先安装客户的 Code.txt。 |
| "The stand-alone license has expired" / "...was issued for another computer" / "...is not valid" | 计算机上的单机许可证(参见第 7.2 节)无法使用:已过期、为其他计算机或产品签发、已损坏或被修改,或者系统时钟已被调回。 | 如有需要,请恢复正确的日期和时间;否则请向供应商申请针对本计算机代码的新 .lic 文件并导入(参见第 7.2 节)。在此期间,如果已配置 License Server,客户端会使用它。 |
即使已安装 Code.txt,客户端仍显示 "Trial version expires in: N days" |
安装新的 Code.txt 后尚未重启服务(该文件仅在启动时读取),或者文件中的 SystemID/NetworkID 与本机不匹配。 |
在 Service 选项卡中重启服务;在日志(AV_LicenseServer.log)中查看启动时记录的确切原因。 |
| AV License Manager 无法启动/停止/安装服务 | 缺少管理员权限。 | 对应用弹出的"以提升权限重新启动"提示选择"是",或以"以管理员身份运行"的方式启动该应用。 |
11. 快速参考
- 默认端口:TCP 7788(可在
AV_LicenseServer.ini中通过Port键配置)。 - Windows 服务名称:
AV_LicenseServer(在services.msc中显示为 "AV License Server")。 - 典型安装目录:
C:\Program Files\AV License Server\。 - 主要文件:
AV_LicenseServer.exe、AV_LicenseManager.exe、AV_LicenseServer.ini、Code.txt、AV_LicenseServer.log。 - 心跳超时时间:默认 90 秒(键
HeartbeatTimeoutSec)。 - 试用期:自客户端编译日期起 30 天,固定值,不可配置。
- 即将到期提醒:默认 15 天(键
ExpiryWarningDays)。 - 日志保留时间:默认 15 天(键
LogRetentionDays)。 - 借出许可证:默认最多 30 天(键
MaxBorrowDays,0= 禁用);状态保存在AV_LicenseServer.borrows中。 - 单机许可证:
%ProgramData%\AV_License\<产品>.lic(或客户端可执行文件旁边);无需 License Server(参见第 7.2 节)。