Herramienta Babel Licensing Server
Babel.Licensing.Tool empaqueta la línea de comandos lic como herramienta de dotnet, de modo que puede generar y gestionar licencias desde un terminal o un script en Windows, Linux y macOS con solo tener instalado el SDK de .NET.
Contenido del paquete
Babel.Licensing.Tool es un paquete de herramienta de .NET que instala el comando lic. Es la misma herramienta de línea de comandos que se distribuye en los paquetes zip de Babel, con las mismas opciones, y se incluye en las ediciones de Babel Licensing, Server y Data Center. El paquete contiene una compilación de la herramienta para cada entorno de ejecución admitido, de .NET 6.0 a .NET 10.0, y la CLI de dotnet elige la que corresponde al SDK del equipo.
Como los demás paquetes de Babel, el paquete de la herramienta no está en nuget.org: alójelo en su propia fuente como se describe en Alojar el paquete, o añádalo a una fuente de carpeta local como se muestra en Componentes de cliente.
Cuándo usar la herramienta
Use la herramienta allí donde las licencias las produce un proceso y no una persona en Babel Desktop:
- Emitir licencias desde un pipeline de pedidos, un script de soporte o una compilación, en cualquier sistema operativo.
- Generar y rotar pares de claves de firma, y exportar la clave pública para incrustarla en una aplicación.
- Verificar las licencias que devuelven los clientes y actualizarlas sin volver a crearlas.
- Calcular la clave de hardware de un equipo para emitirle una licencia vinculada al hardware.
- Automatizar con agentes mediante el modo compatible con IA, que la herramienta
liccomparte con el ofuscador.
La herramienta genera licencias que la aplicación valida sin conexión, con la biblioteca cliente Babel.Licensing. Las licencias que gestiona el Babel Licensing Service, como las licencias de activación y las flotantes, se crean en cambio con las herramientas del servicio: Babel Desktop, la aplicación web (Data Center), la API REST o el servidor MCP.
Instalar la herramienta
Herramienta global
Una herramienta global se instala una vez por usuario y está disponible desde cualquier terminal:
dotnet tool install Babel.Licensing.Tool -gCuando la fuente no figura en un archivo NuGet.config, indíquela explícitamente. El origen puede ser la URL de una fuente o una carpeta local:
dotnet tool install Babel.Licensing.Tool -g --add-source ~/NuGetEn Linux y macOS, asegúrese de que la carpeta de herramientas esté en la ruta de búsqueda; de lo contrario, no se encuentra el comando lic:
export PATH="$PATH:$HOME/.dotnet/tools"Herramienta local
Una herramienta local queda fijada a un repositorio mediante un manifiesto de herramientas, de modo que todos los desarrolladores y agentes de CI ejecutan la misma versión:
dotnet new tool-manifest
dotnet tool install Babel.Licensing.ToolCon esto la herramienta queda registrada en .config/dotnet-tools.json, archivo que se confirma en el repositorio. En cualquier otro equipo, dotnet tool restore instala la versión fijada. Una herramienta local se invoca a través de la CLI de dotnet:
dotnet lic --versionActualizar y desinstalar
dotnet tool update Babel.Licensing.Tool -g
dotnet tool list -g
dotnet tool uninstall Babel.Licensing.Tool -gOmita -g para una herramienta local. dotnet tool list muestra el paquete instalado, su versión y el comando lic que proporciona, junto a babel cuando también está instalada la herramienta del ofuscador. Los mismos comandos se describen en Instalación.
Licencia de la herramienta
La herramienta necesita una licencia de Babel Licensing. Una herramienta de dotnet no tiene una carpeta de instalación en la que copiar babel.licenses, así que proporcione la licencia a lic de una de estas formas:
- Establezca la variable de entorno
BABEL_LICENSE_PATHen la ruta completa del archivo de licencia. Es la configuración recomendada en los equipos de desarrollo y en los agentes de compilación:
export BABEL_LICENSE_PATH=~/Babel/babel.licenses- Pase
--licenseen cada invocación, con la ruta del archivo de licencia o de una carpeta en la que buscarlo. - Pase
--license env:BABEL_LICENSE, donde la variable contiene una clave de licencia: es la opción adecuada en los servidores de compilación, donde la clave se guarda en un secreto.
lic --license sin argumento muestra la licencia en uso. Un archivo de licencia es válido para una sola versión del producto: use el archivo recibido con la misma versión que la herramienta y actualice ambos a la vez.
Usar la herramienta
El comando lic acepta la sintaxis y las opciones documentadas en Herramientas de línea de comandos y en la Referencia. Una invocación típica indica el ensamblado que se va a licenciar, la clave, el contenido de la licencia y el archivo de salida:
lic MyApp.dll --keyfile keys.pem --sign --licensee name="Contoso" --product name="MyApp" --expiredate 365 --feature Pro=1 --trial days=30 --output MyApp.licenses --encoding utf-8Con una herramienta local, anteponga dotnet al comando.
Scripts y automatización
Desde la versión 11.8, la línea de comandos lic tiene un modo compatible con IA pensado para scripts y agentes:
lic MyApp.dll --keyfile keys.pem --sign --licensee name="Contoso" --expiredate 365 --format json --quiet --strict-exit--format json o ndjson convierte la salida en un flujo legible por máquina y envía los diagnósticos destinados a las personas a la salida de error estándar, --quiet quita el banner y hace que cualquier solicitud interactiva falle de inmediato, y --strict-exit devuelve un código de salida distinto para los argumentos no válidos, la entrada no encontrada y los fallos de procesamiento de la licencia, de licencia de la herramienta y de firma. Los códigos de salida son los mismos que los del ofuscador, así que un solo script puede controlar las dos herramientas con una única tabla.
Ejecutar en un servidor de compilación
La herramienta encaja en los pipelines que emiten licencias como un paso más, por ejemplo para licenciar la compilación de prueba de una aplicación antes de que se ejecuten sus pruebas de integración. Con un manifiesto de herramientas confirmado en el repositorio y la fuente configurada en NuGet.config (consulte el ejemplo de GitHub Actions para ver una configuración que se autentica en GitHub Packages), un trabajo de GitHub Actions tiene este aspecto:
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- name: Restore tools
run: dotnet tool restore
env:
PACKAGES_TOKEN: ${{ secrets.PACKAGES_TOKEN }}
- name: Write the signing key
run: echo "$SIGNING_KEY" > keys.pem
env:
SIGNING_KEY: ${{ secrets.LICENSE_SIGNING_KEY }}
- name: Issue the test license
run: dotnet lic artifacts/MyApp.dll --license env:BABEL_LICENSE --keyfile keys.pem --sign --licensee name="CI" --expiredate 7 --output artifacts/MyApp.licenses --quiet --strict-exit
env:
BABEL_LICENSE: ${{ secrets.BABEL_LICENSE_SECRET }}Guarde la clave privada en un secreto y nunca en el repositorio: quien la tenga puede emitir licencias de su producto.
Solución de problemas
lic: command not found: la carpeta de herramientas globales no está en la ruta de búsqueda; añada~/.dotnet/toolsaPATH, o use una herramienta local y ejecutedotnet lic.- Un mensaje que pide instalar .NET: la compilación seleccionada de la herramienta necesita el entorno de ejecución de .NET correspondiente, de 6.0 a 10.0. Instale ese entorno de ejecución o establezca
DOTNET_ROLL_FORWARD=Majorpara ejecutar la herramienta en un entorno de ejecución más reciente. - A valid license could not be found (no se ha encontrado una licencia válida): compruebe
BABEL_LICENSE_PATHo el argumento--licensey, a continuación, ejecutelic --licensepara ver qué ha cargado la herramienta. Un archivo de licencia de otra versión se notifica como no válido. - La aplicación indica que la licencia no es válida: es probable que la licencia se escribiera sin
--sign, o que se firmara con un par de claves cuya clave pública no coincide con la incrustada en la aplicación. Ejecutelic <file> --verify --keyfile <key>para comprobar la firma con la clave que espera. Unrecognized option: está respondiendo unlicmás antiguo que se encuentra en la ruta de búsqueda; ejecutedotnet tool list -gylic --versionpara comprobar qué compilación está invocando.--format json,--quiety--strict-exitnecesitan la versión 11.8 o posterior.