1. Préparez le produit et la licence
Commencez avec une licence verrouillée par nœud et une fonctionnalité d'exportation ordinaire. Ajoutez une utilisation mesurée uniquement une fois que le flux d'autorisation de base fonctionne.
Le quota compte les activations actuelles et est rendu à leur libération. Les licences ordinaires restent comptées hors ligne ; les licences flottantes rendent aussi le quota à l’expiration du bail.
- Copiez l’ID du produit dans Console > Produits. Ouvrez les clés publiques de signature du même produit et collez toutes les paires ID de clé/clé publique dans le code d’initialisation, en remplaçant YOUR_PRODUCT_ID, YOUR_KEY_ID et YOUR_PUBLIC_KEY. L’intégration rapide peut générer ce code. Aucun fichier de configuration n’est nécessaire ; le SDK utilise https://www.licentivo.com par défaut.
- Dans Intégration rapide, créez ou sélectionnez un produit. Activez une fonctionnalité nommée export dans sa politique et préparez une licence de test.
2. Installez le SDK
Installez le SDK 0.11.6 avec la commande suivante dans votre projet ou ajoutez la dépendance de compilation. Le gestionnaire de paquets récupère le SDK ; aucun ZIP source, aucune extraction manuelle ni aucun chemin local ne sont nécessaires.
Les erreurs de build natives indiquent généralement des en-têtes C11 ou libcurl manquants, des architectures incompatibles ou une mauvaise cible Windows. Le noyau natif actuel de Windows nécessite GNU/MinGW ; L'acceptation du MSVC est en attente.
cargo new licensed_app
cd licensed_app
cargo add licentivo@=0.11.6sudo apt-get update
sudo apt-get install build-essential libcurl4-openssl-dev libssl-dev pkg-configrustup toolchain install stable-x86_64-pc-windows-gnu --profile minimal
$env:LICENTIVO_CURL_ROOT = "C:/path/to/curl-mingw"
$env:PATH = "$env:LICENTIVO_CURL_ROOT/bin;$env:PATH"
cargo +stable-x86_64-pc-windows-gnu build3. Protéger une véritable exportation
Initialisez le SDK au démarrage ou lors de l’activation de votre logiciel. Lisez la clé client dans votre formulaire et transmettez l’ID produit et les clés approuvées. Gardez le client jusqu’à la fermeture. Placez run_feature au point d’entrée métier réel et remplacez l’export par votre fonction.
use licentivo::{Client, Error};
use std::{env, fs};
// BEGIN LICENTIVO PRODUCT
// Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
const PRODUCT_ID: &str = "YOUR_PRODUCT_ID";
const TRUSTED_KEYS_JSON: &str = r#"{"YOUR_KEY_ID":"YOUR_PUBLIC_KEY"}"#;
// END LICENTIVO PRODUCT
fn setting(name: &str, fallback: &str) -> String {
env::var(name).ok().filter(|value| !value.is_empty()).unwrap_or_else(|| fallback.into())
}
fn export_report(path: &str) -> Result<(), Error> {
// Replace this write with your existing export operation.
fs::write(path, "A report generated by the licensed application.\n")?;
Ok(())
}
fn run() -> Result<(), Error> {
// A GUI supplies the activation input. Later starts use an empty key.
let mut client = Client::open_product(
PRODUCT_ID, TRUSTED_KEYS_JSON,
&setting("LICENTIVO_LICENSE_KEY", ""),
)?;
let feature = setting("LICENTIVO_FEATURE", "export");
let path = setting("LICENTIVO_OUTPUT", "licensed-report.txt");
if setting("LICENTIVO_METERED", "0") == "1" {
client.run_metered_feature(&feature, 1, &setting("LICENTIVO_OPERATION_ID", ""), || export_report(&path))?;
} else {
client.run_feature(&feature, || export_report(&path))?;
}
println!("License OK: {feature} is available\nExport completed: {path}");
// Real app: keep client alive until shutdown. Drop returns floating seats;
// do not deactivate a device on a normal application exit.
Ok(())
}
fn main() {
if let Err(error) = run() { eprintln!("{error}"); std::process::exit(2); }
}
4. Gardez le client en vie jusqu'à l'arrêt
Cet exemple de ligne de commande effectue une opération et se ferme. Dans une application de bureau, ouvrez un client au démarrage, appelez le rappel de fonctionnalité à partir de l'action d'exportation et fermez le client uniquement lorsque l'application se ferme.
Après l'activation, les démarrages ultérieurs peuvent laisser LICENTIVO_LICENSE_KEY vide et restaurer les informations d'identification privées sous le même utilisateur et le même emplacement de cache. Conservez ces informations d'identification dans le répertoire de données d'application utilisateur. La fermeture arrête les heartbeats et rend les sièges flottants ; la sortie normale ne doit pas désactiver un périphérique verrouillé par nœud.
L'accès hors ligne n'est disponible que lorsque la politique le permet et que la subvention signée reste valide. Une fonctionnalité expirée ou refusée doit rester bloquée. Les opérations mesurées nécessitent une connexion réseau.
Conservez le client mutable dans l’état de l’application propriétaire. Il s'agit d'envoyer mais pas de synchronisation : déplacez-le vers un seul travailleur plutôt que de partager des appels simultanés. Drop arrête le travail en arrière-plan et renvoie les sièges flottants. Close consomme le client ; la sortie normale préserve la liaison du périphérique.
Gérez l'utilisation simultanée de logiciels avec des licences flottantes
5. Exécutez et vérifiez le résultat
Copiez l’ID du produit dans Console > Produits. Ouvrez les clés publiques de signature du même produit et collez toutes les paires ID de clé/clé publique dans le code d’initialisation, en remplaçant YOUR_PRODUCT_ID, YOUR_KEY_ID et YOUR_PUBLIC_KEY. L’intégration rapide peut générer ce code. Aucun fichier de configuration n’est nécessaire ; le SDK utilise https://www.licentivo.com par défaut.
- Confirmez qu'une licence valide avec accès à l'exportation crée licensed-report.txt.
- Effacez LICENTIVO_LICENSE_KEY et réexécutez en utilisant le même compte utilisateur : les informations d'identification enregistrées doivent être restaurées.
- Définissez LICENTIVO_FEATURE sur une fonctionnalité absente de la licence et LICENTIVO_OUTPUT sur un nouveau nom de fichier. Le programme doit signaler un refus sans créer ce fichier.
- Testez un redémarrage hors ligne uniquement avec une autorisation signée autorisée et non expirée. Ne contournez pas une vérification de fonctionnalité ayant échoué après une erreur d’actualisation en arrière-plan.
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
cargo +stable-x86_64-pc-windows-gnu runLICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY cargo runProblèmes d'intégration courants
Vérifiez l’ID produit, toutes les paires ID de clé/clé publique et la licence du client. Les clés publiques appartiennent au produit ; licences et identifiants des appareils sont distincts. Ne distribuez pas de clés de test ou de clés API de gestion.
Fonctionnalité refusée, limite d'appareils atteinte ou licence expirée : inspectez la licence et la stratégie dans la console, puis affichez l'erreur SDK au client. Une autorisation échouée ne doit pas appeler la fonction d'exportation.
run_feature vérifie l'accès aux fonctionnalités ; la variante mesurée réserve et règle l'utilisation configurée. Utilisez un ID d'opération stable par tâche métier réelle et inspectez son résultat durable avant de récupérer une tâche interrompue.
Les erreurs de build natives indiquent généralement des en-têtes C11 ou libcurl manquants, des architectures incompatibles ou une mauvaise cible Windows. Le noyau natif actuel de Windows nécessite GNU/MinGW ; L'acceptation du MSVC est en attente.