1. Bereiten Sie das Produkt und die Lizenz vor
Beginnen Sie mit einer knotengebundenen Lizenz und einer normalen Exportfunktion. Fügen Sie die gemessene Nutzung erst hinzu, nachdem der grundlegende Autorisierungsablauf funktioniert.
Das Gerätekontingent zählt aktuelle Aktivierungen und wird bei Freigabe wieder verfügbar. Normale Lizenzen zählen auch offline; bei Floating-Lizenzen gibt auch ein abgelaufener Lease das Kontingent frei.
- Kopieren Sie die Produkt-ID unter Konsole > Produkte. Öffnen Sie die Signaturprüfschlüssel dieses Produkts und tragen Sie alle Schlüssel-ID/Public-Key-Paare im Initialisierungscode ein. Ersetzen Sie YOUR_PRODUCT_ID, YOUR_KEY_ID und YOUR_PUBLIC_KEY. Die Schnellintegration kann den Code erzeugen. Eine Produktkonfigurationsdatei ist nicht erforderlich; das SDK verwendet standardmäßig https://www.licentivo.com.
- Erstellen Sie in der Schnellintegration ein Produkt oder wählen Sie es aus. Aktivieren Sie eine Funktion mit dem Namen „Export“ in ihrer Richtlinie und bereiten Sie eine Testlizenz vor.
2. Installieren Sie das SDK
Installieren Sie SDK 0.11.6 mit dem folgenden Befehl in Ihrem Anwendungsprojekt oder fügen Sie die Build-Abhängigkeit hinzu. Der Paketmanager lädt das SDK; ein Quellcode-ZIP, manuelles Entpacken oder ein lokaler Quellcodepfad ist nicht erforderlich.
Native Build-Fehler weisen normalerweise auf fehlende C11- oder libcurl-Header, nicht übereinstimmende Architekturen oder das falsche Windows-Ziel hin. Der aktuelle native Windows-Kern erfordert GNU/MinGW; MSVC Die Annahme steht noch aus.
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. Schützen Sie einen echten Export
Initialisieren Sie das SDK beim Start oder bei der Aktivierung Ihrer Software. Lesen Sie den Kundenschlüssel aus Ihrem Aktivierungsdialog und übergeben Sie Produkt-ID und vertrauenswürdige Schlüssel. Halten Sie den Client bis zum Beenden offen. Platzieren Sie run_feature am tatsächlichen Geschäftsaufruf und ersetzen Sie den Export durch Ihre eigene Funktion.
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. Halten Sie den Client bis zum Herunterfahren am Leben
In diesem Befehlszeilenbeispiel wird ein Vorgang ausgeführt und beendet. Öffnen Sie in einer Desktop-Anwendung einen Client beim Start, rufen Sie den Funktionsrückruf aus der Exportaktion auf und schließen Sie den Client nur, wenn die Anwendung beendet wird.
Nach der Aktivierung kann LICENTIVO_LICENSE_KEY bei späteren Starts leer bleiben und die privaten Anmeldeinformationen unter demselben Benutzer und Cache-Speicherort wiederhergestellt werden. Bewahren Sie diese Anmeldeinformationen im Anwendungsdatenverzeichnis des Benutzers auf. Das Schließen stoppt den Heartbeat und gibt schwebende Sitze zurück; Der normale Ausgang sollte ein knotengesperrtes Gerät nicht deaktivieren.
Der Offline-Zugriff ist nur verfügbar, wenn die Richtlinie dies zulässt und die unterzeichnete Bewilligung gültig bleibt. Eine abgelaufene oder verweigerte Funktion muss blockiert bleiben. Für den gebührenpflichtigen Betrieb ist eine Netzwerkverbindung erforderlich.
Behalten Sie den veränderlichen Client im Status der besitzenden Anwendung bei. Es handelt sich um „Senden“, aber nicht um „Synchronisieren“: Verschieben Sie es auf einen Worker, anstatt gleichzeitige Anrufe zu teilen. Drop stoppt die Hintergrundarbeit und gibt schwebende Sitze zurück. Close verbraucht den Client; Beim normalen Beenden bleibt die Gerätebindung erhalten.
Verwalten Sie die gleichzeitige Softwarenutzung mit Floating-Lizenzen
5. Führen Sie den Vorgang aus und überprüfen Sie das Ergebnis
Kopieren Sie die Produkt-ID unter Konsole > Produkte. Öffnen Sie die Signaturprüfschlüssel dieses Produkts und tragen Sie alle Schlüssel-ID/Public-Key-Paare im Initialisierungscode ein. Ersetzen Sie YOUR_PRODUCT_ID, YOUR_KEY_ID und YOUR_PUBLIC_KEY. Die Schnellintegration kann den Code erzeugen. Eine Produktkonfigurationsdatei ist nicht erforderlich; das SDK verwendet standardmäßig https://www.licentivo.com.
- Bestätigen Sie, dass eine gültige Lizenz mit Exportzugriff licensed-report.txt erstellt.
- Löschen Sie LICENTIVO_LICENSE_KEY und führen Sie es erneut mit demselben Benutzerkonto aus: Die gespeicherten Anmeldeinformationen sollten wiederhergestellt werden.
- Legen Sie LICENTIVO_FEATURE auf eine in der Lizenz fehlende Funktion und LICENTIVO_OUTPUT auf einen neuen Dateinamen fest. Das Programm muss eine Ablehnung melden, ohne diese Datei zu erstellen.
- Testen Sie einen Offline-Neustart nur mit einer zulässigen, nicht abgelaufenen signierten Berechtigung. Umgehen Sie nicht eine fehlgeschlagene Funktionsprüfung nach einem Fehler bei der Hintergrundaktualisierung.
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
cargo +stable-x86_64-pc-windows-gnu runLICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY cargo runHäufige Integrationsprobleme
Prüfen Sie Produkt-ID, alle Schlüssel-ID/Public-Key-Paare und den eingegebenen Lizenzschlüssel. Öffentliche Prüfschlüssel gehören zum Produkt; Kundenlizenzen und Geräteanmeldedaten sind getrennt. Verteilen Sie keine Testschlüssel oder Verwaltungs-API-Keys.
Funktion verweigert, Gerätelimit erreicht oder Lizenz abgelaufen: Überprüfen Sie die Lizenz und Richtlinie in der Konsole und zeigen Sie dem Kunden dann den Fehler SDK an. Eine fehlgeschlagene Autorisierung darf die Exportfunktion nicht aufrufen.
run_feature prüft den Funktionszugriff; Die getaktete Variante reserviert und rechnet die konfigurierte Nutzung ab. Verwenden Sie eine stabile Vorgangs-ID für jeden echten Geschäftsauftrag und überprüfen Sie deren dauerhaftes Ergebnis, bevor Sie einen unterbrochenen Auftrag wiederherstellen.
Native Build-Fehler weisen normalerweise auf fehlende C11- oder libcurl-Header, nicht übereinstimmende Architekturen oder das falsche Windows-Ziel hin. Der aktuelle native Windows-Kern erfordert GNU/MinGW; MSVC Die Annahme steht noch aus.