Riferimento della riga di comando Server
Tutte le opzioni della riga di comando lic, raggruppate come nell’output di lic —help.
lic <assembly|licensefile> [<other assemblies>...] [options]Il primo argomento è l’assembly a cui è destinata la licenza, di cui lic registra nella licenza il nome, la versione, le impostazioni cultura e il token della chiave pubblica, oppure un file di licenza esistente, XML o stringa, da aggiornare o verificare. Anche gli assembly successivi aggiungono la propria identità alla licenza. Gli argomenti obbligatori sono indicati tra parentesi angolari, quelli facoltativi tra parentesi quadre; il prefisso --[no] contrassegna un’opzione che può essere negata.
Le opzioni possono essere abbreviate fino al prefisso più corto non ambiguo, quindi --comp seleziona --component, e molte hanno un alias, indicato tra parentesi nei titoli qui sotto. Le opzioni a coppie chiave-valore, come --licensee e --trial, vanno ripetute una volta per ogni coppia. Le date accettano qualsiasi stringa di data e ora che le impostazioni cultura correnti sanno interpretare, e il formato ISO 8601 (2027-09-01) funziona sempre.
Esegui lic --help <option> per la descrizione estesa di un’opzione, oppure lic --help --format json per l’intero insieme di opzioni come documento leggibile dalle macchine; vedi Modalità CLI compatibile con l’AI.
Varie
—help [option] (-h, -?)
Visualizza il messaggio d’uso con tutte le opzioni e una breve descrizione. Con il nome di un’opzione, visualizza la descrizione estesa di quell’opzione. In combinazione con --format json o ndjson, emette lo schema delle opzioni in JSON.
lic --help
lic --help sign
lic --help --format json—[no]logo
Visualizza o sopprime il banner del copyright all’avvio. Il banner è attivo per impostazione predefinita ed è sempre soppresso nelle modalità di output json e ndjson.
—license [path]
Senza argomenti, visualizza la licenza con cui lic è in esecuzione ed esce. Con un argomento, indica allo strumento dove si trova la sua licenza: il percorso di un file di licenza, una cartella in cui cercare babel.licenses, oppure env:VARIABLE per leggere una chiave di licenza da una variabile d’ambiente. L’opzione può essere ripetuta. Se manca, lo strumento cerca babel.licenses accanto al proprio eseguibile e poi nel percorso indicato da BABEL_LICENSE_PATH.
lic --license
lic MyApp.dll --license /opt/babel/babel.licenses ...
lic MyApp.dll --license env:BABEL_LICENSE ...—verbose <n> (-v)
Imposta il livello di dettaglio della console. 0 non stampa nulla, 1 (predefinito) stampa i messaggi normali, e un valore superiore a 10 aggiunge l’output di debug, compreso il dump di ogni variabile di input.
—version
Visualizza la versione dell’assembly, del prodotto e del file ed esce. Con --format json, emette la versione, il runtime e la piattaforma in JSON.
—noconfig
Ignora i valori predefiniti delle opzioni salvati nel file di configurazione dello strumento (lic.exe.config).
—format <name> (—fmt)
Formati di output della CLI disponibili dalla versione 11.8.
Seleziona il formato di output della licenza oppure il formato di output della riga di comando. I due insiemi di valori sono disgiunti, quindi una sola opzione copre entrambi, e i due possono comparire nella stessa riga di comando.
| Valore | Significato |
|---|---|
xml | Predefinito. Un file di licenza XML (.licenses), il formato che il client Babel.Licensing convalida da un file. |
serial | Una licenza in formato stringa con la codifica predefinita, adatta a un numero di serie che l’utente digita. |
base32 | Una licenza in formato stringa codificata in Base32 (lettere maiuscole e cifre). |
ascii | Una licenza in formato stringa codificata in ASCII leggibile, il più compatto dei formati stringa. |
text | Output della riga di comando: l’output di console predefinito, leggibile dalle persone. |
json | Output della riga di comando: un unico documento JSON sullo standard output, conforme a lic.cli.v1. |
ndjson | Output della riga di comando: JSON delimitato da caratteri di nuova riga, un evento per riga, trasmesso non appena viene prodotto. |
Le licenze in formato stringa vengono scritte nel file --output come un’unica riga di testo. Hanno lo stesso contenuto della forma XML e si convalidano allo stesso modo, tramite StringLicense nella libreria client.
lic MyApp.dll --keyfile ecdsa.pem --sign --format serial --output MyApp.serial
lic MyApp.dll --keyfile keys.pem --sign --format json --quiet --strict-exit
lic MyApp.dll --keyfile ecdsa.pem --sign --format base32 --format ndjson—keygen [type] (—kg)
Genera una nuova coppia di chiavi e la scrive in formato PEM nel file indicato da --keyfile. Il tipo è rsa (predefinito) o ecdsa. Usa --keysize per scegliere la robustezza; la chiave privata contenuta nel file firma le licenze e va tenuta segreta, mentre --publickey estrae la metà pubblica per l’applicazione.
lic --keygen rsa --keysize 2048 --keyfile keys.pem
lic --keygen ecdsa --keysize 256 --keyfile ecdsa.pemLe chiavi RSA firmano le licenze XML con l’algoritmo rsa o dsig; le chiavi ECDSA producono le licenze in formato stringa più corte e sono la scelta abituale per i numeri di serie.
—keysize <size> (—ks)
Imposta la dimensione della chiave per --keygen. RSA accetta dimensioni da 384 a 4096 bit; ECDSA accetta 112, 192, 256, 384 o 521 bit. Una chiave ECDSA più grande produce un numero di serie più lungo.
—[no]keyinfo
Indica se includere le informazioni sulla chiave pubblica nell’elemento della firma RSA di una licenza XML. Si possono omettere quando l’assembly con licenza ha un nome sicuro, perché il client estrae la chiave pubblica RSA dal nome sicuro per convalidare la licenza.
—publickey (—pk)
Stampa la chiave pubblica della coppia di chiavi indicata con --keyfile, per le chiavi RSA, ECDSA e di firma digitale XML. Incorpora questo valore nell’applicazione, che lo usa per convalidare le licenze.
lic --publickey --keyfile keys.pem—[no]xmldeclaration
Indica se scrivere la dichiarazione XML all’inizio di un file di licenza XML. Attiva per impostazione predefinita.
—encoding <name>
Imposta la codifica dei caratteri del file di licenza XML, tramite il nome della codifica (utf-8, utf-16, us-ascii e qualsiasi altra codifica registrata sul computer). Per impostazione predefinita il file è scritto in UTF-16 con un byte order mark; passa utf-8 per ottenere un file più facile da esaminare e da incorporare.
—showhardwareinfo (—show-hardware-info)
Stampa le informazioni da cui viene calcolata la chiave hardware sul computer corrente: nome del sistema, UUID, produttore, nome del prodotto, numeri di serie del BIOS e della scheda madre, sistema operativo, memoria, l’eventuale rilevamento di una macchina virtuale e l’identità della CPU. È utile nei casi di assistenza in cui una licenza vincolata al computer non supera la convalida.
—hardwareid <component> (—hardware-id, —hwid)
Calcola la chiave hardware del computer corrente e la stampa come HardwareKey=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX. L’elenco facoltativo di componenti seleziona ciò da cui la chiave viene ricavata: cpu, ethernet (indirizzo MAC), disk (numero di serie), motherboard, bios, computername (predefinito) o all. La chiave è ciò che passi a --hardware key= quando emetti una licenza vincolata al computer, e ciò che l’applicazione calcola con gli stessi componenti al momento della convalida.
lic --hardwareid cpu,disk,computername—salt [hex string|size] (-s)
Aggiunge dati casuali al calcolo della chiave hardware, in modo che due prodotti vincolati allo stesso computer non condividano la stessa chiave. Passa una stringa esadecimale per usare un salt fisso, oppure una dimensione per generarne uno; il salt generato viene stampato come Salt= e va usato di nuovo al momento della convalida.
—register <assembly>
Carica un assembly di estensione prima dell’elaborazione. Un’estensione può fornire tipi di restrizione personalizzati per --restriction, provider di firma personalizzati per --sign e servizi come un’identificazione hardware alternativa. L’opzione può essere ripetuta.
—[no]quiet (-q)
Disponibile dalla versione 11.8.
Sopprime il banner del copyright e ogni richiesta interattiva, così il comando non resta mai in attesa di input: se manca --keypwd termina con un errore esplicito invece di chiedere la password. È pensata per le pipeline di CI e le esecuzioni non presidiate. Vedi Modalità CLI compatibile con l’AI.
—[no]strict-exit
Disponibile dalla versione 11.8.
Restituisce un codice di uscita semantico al posto dei valori predefiniti 0 per il successo e 1 per qualsiasi errore: 10 argomenti non validi, 20 file di input non trovato, 30 errore di elaborazione della licenza, 40 errore di licenza, 50 errore di chiave o di firma. I codici coincidono con quelli dell’offuscatore. Vedi Modalità CLI compatibile con l’AI.
Licenza
—id [licid]
Imposta l’identificatore della licenza. Senza argomento viene generato un nuovo identificatore. L’identificatore è ciò che --update e --verify usano per individuare una licenza all’interno di un file che ne contiene più di una.
—type <type>
Imposta il tipo di licenza, un testo libero come Standard, Professional o Trial che l’applicazione può leggere per selezionare un’edizione.
—sites <number>
Imposta il numero di sedi, o postazioni, coperte dalla licenza.
—issuedate [date]
Imposta la data di emissione. Senza argomento vengono usate la data e l’ora correnti.
—expiredate <date>
Imposta la data di scadenza, come stringa di data e ora oppure come numero di giorni a partire da oggi.
lic MyApp.dll --expiredate 2027-09-01 ...
lic MyApp.dll --expiredate 365 ...—supportexpiredate <date>
Imposta la data di scadenza della manutenzione del prodotto, indipendente da quella della licenza.
—[no]assembly <file|name> (—asm, —no-asm)
Aggiunge alla licenza l’identità di un altro assembly, da un file o da un nome di assembly; l’opzione può essere ripetuta e accetta caratteri jolly. --noassembly rimuove tutte le informazioni sugli assembly e produce così una licenza non legata a un assembly specifico.
lic MyApp.dll --assembly "MyApp.Core, Version=2.1.0.0" ...
lic MyApp.dll --assembly "*, Version=" ...
lic MyApp.dll --noassembly ...—licensee <key=value>
Imposta le informazioni sull’intestatario, una coppia per ogni opzione: id, name, company ed email.
lic MyApp.dll --licensee id=C-1001 --licensee name="Contoso" --licensee company="Contoso Ltd" --licensee email=info@contoso.com ...—product <key=value>
Imposta le informazioni sul prodotto, una coppia per ogni opzione: id, name, version, copy (nota di copyright), descr (descrizione) e url.
lic MyApp.dll --product id=MYAPP --product name="MyApp" --product version=2.1 --product url=https://contoso.example ...—component <name>
Aggiunge un componente concesso in licenza, per i prodotti che concedono in licenza singoli componenti o moduli di un assembly. L’opzione può essere ripetuta.
—feature <file|key=value>
Aggiunge o aggiorna una funzionalità della licenza, cioè uno degli interruttori che l’applicazione controlla per abilitare parti del prodotto. Con key=value, la funzionalità prende la chiave come nome e il valore come dati. Con il percorso di un file o un carattere jolly, ogni file diventa una funzionalità che prende il nome dal file e ha come dati il contenuto del file. Con def=file, un file XML esterno fornisce la definizione completa della funzionalità, comprese le date di scadenza e la descrizione.
lic MyApp.dll --feature Pro=1 --feature Export=csv,xlsx ...
lic MyApp.dll --feature "features/*.txt" ...
lic MyApp.dll --feature def=features.xml ...—field <file|key=value>
Aggiunge o aggiorna un campo della licenza, un valore con nome che l’applicazione legge: numero di postazioni, configurazione, una password per la cifratura del codice e così via. Valgono le stesse tre forme di --feature: key=value, un file il cui nome e contenuto diventano il campo, oppure def=file per una definizione XML.
lic MyApp.dll --field Seats=25 --field Region=EU ...—sign [type]
Firma la licenza con la coppia di chiavi indicata da --keyfile o --keyname. Il tipo facoltativo seleziona l’algoritmo: rsa (predefinito con una chiave RSA), ecdsa (con una chiave ECDSA) o dsig, lo standard di firma digitale XML, con una chiave RSA. L’algoritmo deve corrispondere alla chiave: una chiave RSA non può produrre una firma ECDSA e viceversa.
lic MyApp.dll --keyfile keys.pem --sign ...
lic MyApp.dll --keyfile keys.pem --sign dsig ...
lic MyApp.dll --keyfile ecdsa.pem --sign ecdsa --format serial ...Senza --sign la licenza viene scritta senza firma, e la libreria client la rifiuta. --keyfile da sola rende soltanto disponibile la chiave; non firma.
—[no]verify (—validate)
Verifica la firma del file di licenza di input con la chiave indicata da --keyfile o --keyname; basta la chiave pubblica. Lo strumento riporta verified successfully oppure is not valid, e con --strict-exit una verifica non riuscita termina con il codice 30.
lic MyApp.licenses --verify --keyfile keys.pem—update [licid|all]
Aggiorna una licenza all’interno del file di licenza di input invece di crearne una nuova: ogni opzione di licenza presente sulla riga di comando sostituisce il valore corrispondente, e il file viene riscritto. Senza argomento viene aggiornata la prima licenza del file; passa un identificatore di licenza per individuare una licenza, oppure all per aggiornare tutte le licenze del file. Passa di nuovo --sign per firmare di nuovo la licenza modificata.
lic MyApp.licenses --update --keyfile keys.pem --sign --licensee company="Contoso Ltd" --field Seats=50Restrizioni della licenza
Ogni opzione di restrizione accetta coppie key=value, una per opzione, e può essere ripetuta. Ogni restrizione accetta id=<id> per impostarne l’identificatore ed expire=<date> per assegnarle una data di scadenza propria. Vedi Restrizioni della licenza per sapere come la libreria client valuta ciascuna restrizione.
—trial <key=value>
Aggiunge o aggiorna una restrizione di prova:
| Chiave | Significato |
|---|---|
days=<n> | Numero di giorni in cui il software può essere usato dopo la prima esecuzione. |
time=<timespan> | Tempo di utilizzo totale consentito. |
instances=<n> | Numero di istanze che possono essere in esecuzione contemporaneamente. |
terms=<text> | Testo dei termini e delle condizioni mostrato per la prova. |
lic MyApp.dll --trial days=30 --trial instances=2 ...—hardware <key=value>
Aggiunge o aggiorna una restrizione hardware, che vincola la licenza a un computer: key=<key> è la chiave hardware calcolata con --hardwareid sul computer di destinazione, e data=<data> incorpora dati hardware aggiuntivi.
lic MyApp.dll --hardware key=GPHI6-128DI-6196C-KN5LV-BCDRE ...—domain <key=value>
Aggiunge o aggiorna una restrizione di dominio: name=<name> è il dominio di rete a cui il computer deve appartenere, e role=<role> il ruolo di rete.
—usage <key=value>
Aggiunge o aggiorna una restrizione di utilizzo: type=<context> limita la licenza al contesto Runtime o Designtime, vm=<true|false> consente o vieta l’esecuzione in una macchina virtuale, e processlist=<list> indica i processi autorizzati a usare la licenza.
lic MyApp.dll --usage processlist=proc1,proc2,proc3 --usage vm=false ...—beta <key=value>
Aggiunge o aggiorna una restrizione beta, per le build non definitive: build=<text> imposta il tipo di build beta e changes=<text> descrive le modifiche recenti.
—restriction <name:key=value>
Aggiunge o aggiorna una restrizione personalizzata, identificata dal nome, con le coppie chiave-valore indicate. Il tipo di restrizione deve essere fornito da un assembly di estensione registrato con --register; se manca, lo strumento segnala che non è impostata alcuna factory di licenze.
lic MyApp.dll --register Contoso.Licensing.dll --restriction "Region:name=EU" ...File di output
—output <file> (—out)
Imposta il file di output. Per impostazione predefinita la licenza viene salvata accanto al file di input come <assembly file>.licenses.
—logfile [file] (—log)
Reindirizza l’output di console su un file di log. Senza argomento il log prende il nome del file di output con estensione .log.
—makeproject [file] (—mp)
Salva l’intera riga di comando come file di progetto MSBuild che esegue il task Lic con le stesse impostazioni. Senza argomento il progetto prende il nome del file di output con estensione .lcproj. La licenza viene generata comunque. Vedi Task MSBuild Lic.
File di input
—keyfile <file> (—kf)
Il file di chiavi usato per firmare o verificare la licenza. I formati supportati sono PEM (come quello scritto da --keygen), i file di chiave con nome sicuro SNK e i certificati PFX; un file PFX di solito richiede --keypwd.
—keyname <container> (—kn)
Firma o verifica con una coppia di chiavi conservata in un contenitore di chiavi del sistema operativo, indicato per nome, anziché in un file.
—keypwd <password> (—kp)
La password di un file di chiavi PFX. Se manca, lo strumento chiede la password; con --quiet termina con un errore invece di chiederla. Su un server di build, conserva la password in una variabile d’ambiente ed espandila sulla riga di comando.
—project <file> (—prj)
Esegue lic con le impostazioni salvate in un file di progetto .lcproj, prodotto da --makeproject o scritto a mano. Le opzioni sulla riga di comando vengono applicate sopra le impostazioni del progetto.
Opzioni lunghe e brevi
Le opzioni lunghe sono introdotte da due trattini, le opzioni brevi e gli alias di una sola lettera da uno: --verbose 2 e -v 2 sono equivalenti, come --keyfile e --kf. Un’opzione lunga può essere abbreviata con qualsiasi prefisso non ambiguo. Le opzioni contrassegnate con --[no] si disattivano con il prefisso no o no-, quindi --nologo, --no-logo e --noassembly sono tutte valide.
Codici di uscita
Per impostazione predefinita il processo restituisce 0 in caso di successo e 1 per qualsiasi errore. Con --strict-exit viene restituita invece la classe dell’errore; la stessa classe è sempre riportata come exitReason nell’output JSON, con o senza --strict-exit.
| Codice di uscita | exitReason | Significato |
|---|---|---|
0 | success | Il comando è terminato senza errori. |
10 | invalidArguments | Non è stato possibile interpretare la riga di comando, oppure conteneva un valore non valido. |
20 | inputNotFound | L’assembly, il file di licenza o un altro input obbligatorio non è stato trovato. |
30 | processingFailure | L’elaborazione della licenza non è riuscita, compreso il caso di una firma che non ha superato la verifica. |
40 | licensingFailure | La licenza dello strumento stesso è mancante, non valida o scaduta. |
50 | keyOrSigningFailure | Non è stato possibile caricare una chiave, oppure un’operazione crittografica non è riuscita. |