1. उत्पाद और लाइसेंस तैयार करें
डिवाइस-बद्ध लाइसेंस और सामान्य export फ़ीचर से शुरू करें। बुनियादी अनुमति प्रक्रिया चलने के बाद उपयोग गणना जोड़ें।
डिवाइस कोटा वर्तमान सक्रियणों से गिना जाता है और रिलीज़ पर लौटता है। सामान्य लाइसेंस ऑफ़लाइन भी गिने जाते हैं; फ्लोटिंग लाइसेंस की लीज़ समाप्त होने पर भी कोटा अपने आप लौटता है।
- कंसोल > उत्पाद से उत्पाद ID कॉपी करें। उसी उत्पाद की हस्ताक्षर सार्वजनिक कुंजियाँ खोलें और हर कुंजी ID/सार्वजनिक कुंजी जोड़ी को आरंभिक कोड में डालें; YOUR_PRODUCT_ID, YOUR_KEY_ID और YOUR_PUBLIC_KEY बदलें। त्वरित एकीकरण यह कोड भी बना सकता है। उत्पाद कॉन्फ़िगरेशन फ़ाइल नहीं चाहिए; SDK डिफ़ॉल्ट रूप से https://www.licentivo.com से जुड़ता है।
- त्वरित एकीकरण में उत्पाद बनाएँ या चुनें। नीति में export फ़ीचर सक्षम करें और परीक्षण लाइसेंस तैयार करें।
2. SDK स्थापित करें
अपने ऐप प्रोजेक्ट में नीचे दिया गया कमांड चलाकर या बिल्ड डिपेंडेंसी जोड़कर SDK 0.11.6 इंस्टॉल करें। पैकेज मैनेजर SDK प्राप्त करता है; सोर्स ZIP डाउनलोड करके निकालने या लोकल सोर्स पाथ सेट करने की ज़रूरत नहीं है।
नेटिव बिल्ड त्रुटियों का सामान्य कारण C11 या libcurl headers का न मिलना, अलग आर्किटेक्चर या गलत Windows target है। वर्तमान Windows नेटिव कोर को GNU/MinGW चाहिए; MSVC का सत्यापन अभी लंबित है।
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. वास्तविक निर्यात सुरक्षित करें
अपने ऐप के शुरू होने या सक्रियण पर SDK आरंभ करें। सक्रियण फ़ॉर्म से ग्राहक की कुंजी पढ़ें और उत्पाद ID तथा विश्वसनीय कुंजियाँ दें। ऐप बंद होने तक क्लाइंट रखें। वास्तविक कार्य के प्रवेश पर run_feature लगाकर निर्यात उदाहरण की जगह अपना फ़ंक्शन दें।
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. ऐप बंद होने तक क्लाइंट जीवित रखें
यह कमांड-लाइन उदाहरण एक काम करके बंद होता है। डेस्कटॉप ऐप में स्टार्टअप पर एक क्लाइंट खोलें, निर्यात क्रिया से फ़ीचर कॉलबैक बुलाएँ और ऐप के निकास पर ही क्लाइंट बंद करें।
सक्रियण के बाद उसी उपयोगकर्ता और कैश स्थान से LICENTIVO_LICENSE_KEY खाली देकर निजी क्रेडेंशियल बहाल कर सकते हैं। क्रेडेंशियल उपयोगकर्ता की ऐप-डेटा डायरेक्टरी में रखें। बंद करना हार्टबीट रोकता है और फ़्लोटिंग सीट लौटाता है। सामान्य निकास पर डिवाइस-बद्ध पंजीकरण निष्क्रिय न करें।
ऑफ़लाइन उपयोग तभी उपलब्ध है जब नीति अनुमति देती हो और हस्ताक्षरित अनुमति मान्य हो। समाप्त अनुमति या अस्वीकृत फ़ीचर बंद रहना चाहिए। गणना ऑपरेशन के लिए नेटवर्क आवश्यक है।
परिवर्तनीय Client को ऐप की मालिक स्थिति में रखें। यह Send है लेकिन Sync नहीं; समानांतर कॉल से साझा करने के बजाय एक worker को सौंपें। Drop पृष्ठभूमि कार्य रोककर फ़्लोटिंग सीट लौटाता है। Close क्लाइंट का स्वामित्व समाप्त करता है; सामान्य निकास पर डिवाइस बाइंडिंग बनी रहती है।
5. चलाएँ और परिणाम जाँचें
कंसोल > उत्पाद से उत्पाद ID कॉपी करें। उसी उत्पाद की हस्ताक्षर सार्वजनिक कुंजियाँ खोलें और हर कुंजी ID/सार्वजनिक कुंजी जोड़ी को आरंभिक कोड में डालें; YOUR_PRODUCT_ID, YOUR_KEY_ID और YOUR_PUBLIC_KEY बदलें। त्वरित एकीकरण यह कोड भी बना सकता है। उत्पाद कॉन्फ़िगरेशन फ़ाइल नहीं चाहिए; SDK डिफ़ॉल्ट रूप से https://www.licentivo.com से जुड़ता है।
- मान्य export अधिकार वाले लाइसेंस से licensed-report.txt बनने की पुष्टि करें।
- LICENTIVO_LICENSE_KEY खाली करके उसी उपयोगकर्ता से फिर चलाएँ; सहेजा क्रेडेंशियल बहाल होना चाहिए।
- LICENTIVO_FEATURE में अनुपस्थित फ़ीचर और LICENTIVO_OUTPUT में नया फ़ाइल नाम दें। प्रोग्राम अस्वीकृति बताए और वह फ़ाइल न बनाए।
- ऑफ़लाइन पुनः शुरुआत केवल नीति की अनुमति और अभी मान्य हस्ताक्षरित अनुमति से जाँचें। पृष्ठभूमि अपडेट त्रुटि के बाद असफल फ़ीचर जाँच को दरकिनार न करें।
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
cargo +stable-x86_64-pc-windows-gnu runLICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY cargo runसामान्य एकीकरण समस्याएँ
उत्पाद ID, हर कुंजी ID/सार्वजनिक कुंजी जोड़ी और ग्राहक लाइसेंस जाँचें। सार्वजनिक कुंजियाँ उत्पाद की हैं; लाइसेंस और डिवाइस प्रमाण अलग हैं। परीक्षण कुंजियाँ या प्रबंधन API Key वितरित न करें।
फ़ीचर अस्वीकृत, डिवाइस सीमा पूरी या लाइसेंस समाप्त हो तो कंसोल में लाइसेंस और नीति जाँचें। ग्राहक को SDK त्रुटि दिखाएँ। असफल अनुमति पर निर्यात फ़ंक्शन न चलाएँ।
run_feature फ़ीचर अधिकार जाँचता है; गणना वाला विकल्प निर्धारित उपयोग आरक्षित करके हिसाब पूरा करता है। हर वास्तविक काम की स्थिर ऑपरेशन ID रखें और बाधित काम बहाल करने से पहले स्थायी परिणाम जाँचें।
नेटिव बिल्ड त्रुटियों का सामान्य कारण C11 या libcurl headers का न मिलना, अलग आर्किटेक्चर या गलत Windows target है। वर्तमान Windows नेटिव कोर को GNU/MinGW चाहिए; MSVC का सत्यापन अभी लंबित है।