1. Pilih kebijakan offline
Untuk perangkat lunak C++ pada komputer yang terisolasi dari jaringan, ekspor permintaan aktivasi yang terikat ke perangkat, setujui melalui komputer yang terhubung ke Internet, lalu impor respons bertanda tangan ke komputer asal. Pertukaran berkas ini memerlukan lisensi yang terikat ke perangkat dengan kebijakan yang mengizinkan aktivasi offline. Lisensi floating tetap memerlukan sesi online.
Kuota menghitung aktivasi saat ini dan kembali setelah dilepas. Lisensi biasa tetap dihitung saat luring; lisensi mengambang juga mengembalikan kuota ketika sewanya berakhir.
- Salin ID produk dari Konsol > Produk. Buka kunci publik penandatanganan produk yang sama, lalu masukkan semua pasangan ID kunci/kunci publik ke kode inisialisasi untuk mengganti YOUR_PRODUCT_ID, YOUR_KEY_ID, dan YOUR_PUBLIC_KEY. Integrasi cepat juga dapat menghasilkan kode ini. Tidak perlu berkas konfigurasi; SDK memakai https://www.licentivo.com secara bawaan.
2. Instal yang asli SDK
Instal CMake 3.18 atau lebih baru. Di Windows x64, gunakan Visual Studio 2022 C++ Build Tools dan paket SDK MSVC yang sesuai, dengan -G "Visual Studio 17 2022" -A x64. Di Linux x64, gunakan kompiler C11/C++17. Ganti SDK_PREFIX dengan prefiks CMake yang ditampilkan oleh penginstal. Simpan contoh sebagai offline.cpp dan CMakeLists.txt di bawah dalam direktori yang sama. Selesaikan pemasangan dan kompilasi pada komputer yang terhubung, lalu salin program hasil kompilasi beserta dependensi runtime-nya ke komputer offline.
Instal paket pengembangan libcurl bersama yang sesuai dengan compiler dan arsitektur. Pada Windows MSVC x64, ganti CURL_DIR dengan direktori yang berisi CURLConfig.cmake, tambahkan direktori bin curl ke PATH untuk pengujian lokal, dan sertakan DLL yang diperlukan saat mendistribusikan aplikasi; pada Linux, instal paket pengembangan libcurl bersama dari distribusi Anda.
& ([scriptblock]::Create((Invoke-WebRequest 'https://www.licentivo.com/assets/sdk/releases/v0.11.6/install.ps1').Content)) -Language cpp -Toolchain msvccurl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' 'https://www.licentivo.com/assets/sdk/releases/v0.11.6/install.sh' | bash -s -- cppcmake_minimum_required(VERSION 3.18)
project(offline_activation LANGUAGES C CXX)
find_package(Licentivo 0.11.6 REQUIRED)
add_executable(offline offline.cpp)
target_link_libraries(offline PRIVATE Licentivo::CPP)
set_target_properties(offline PROPERTIES CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON)cmake -S . -B build -G "Visual Studio 17 2022" -A x64 -DCMAKE_PREFIX_PATH="SDK_PREFIX" -DCURL_DIR="CURL_DIR"
if ($LASTEXITCODE -ne 0) { throw 'CMake configure failed. Check the SDK prefix and matching libcurl development package.' }
cmake --build build --config Release --target offline
if ($LASTEXITCODE -ne 0) { throw 'Build failed.' }set -e
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="SDK_PREFIX"
cmake --build build --target offline3. Ekspor dan impor menggunakan SDK
Simpan contoh sebagai offline.cpp dan tambahkan ke proyek CMake Anda yang mendukung SDK. Jalankan permintaan offline YOUR_LICENSE_KEY di komputer offline. Ini menghasilkan aktivasi.request.json tanpa membuka klien online.
Pindahkan permintaan itu ke komputer yang terhubung. Di konsol vendor atau portal pelanggan terkait, unggah permintaan dan unduh respons yang disetujui. Simpan sebagai aktivasi.response.json, lalu kembalikan kedua file ke komputer asli dan jalankan impor offline YOUR_LICENSE_KEY.
#include "licentivo.hpp"
#include <fstream>
#include <iostream>
#include <iterator>
#include <stdexcept>
#include <string>
// BEGIN LICENTIVO PRODUCT
// Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
static const std::string PRODUCT_ID = "YOUR_PRODUCT_ID";
static const std::string TRUSTED_KEYS_JSON = R"({"YOUR_KEY_ID":"YOUR_PUBLIC_KEY"})";
// END LICENTIVO PRODUCT
std::string readText(const char* path) {
std::ifstream file(path);
if (!file) throw std::runtime_error("Cannot read file");
return {std::istreambuf_iterator<char>(file), {}};
}
int main(int argc, char** argv) {
try {
// Product settings are in code; the key is entered by the customer.
if (argc < 3) throw std::runtime_error("Usage: offline request|import LICENSE_KEY");
auto client = licentivo::Client::ForProduct(PRODUCT_ID, TRUSTED_KEYS_JSON, argv[2]);
if (std::string(argv[1]) == "request") {
std::ofstream file("activation.request.json");
file << client.OfflineRequest();
if (!file) throw std::runtime_error("Cannot save request");
std::cout << "Created activation.request.json\n";
} else if (std::string(argv[1]) == "import") {
client.ImportOffline(readText("activation.request.json"),
readText("activation.response.json"));
client.RunFeature("export", [] {
std::ofstream file("licensed-report.txt");
file << "Licensed offline export\n";
if (!file) throw std::runtime_error("Cannot save report");
});
std::cout << "Created licensed-report.txt\n";
} else {
throw std::runtime_error("Unknown operation");
}
} catch (const std::exception& error) {
std::cerr << error.what() << '\n';
return 1;
}
}./build/Release/offline.exe request YOUR_LICENSE_KEY./build/Release/offline.exe import YOUR_LICENSE_KEY./build/offline request YOUR_LICENSE_KEY./build/offline import YOUR_LICENSE_KEY4. Periksa hasilnya
- Konfirmasikan impor berhasil dan licensed-report.txt dibuat.
- Mulai ulang menggunakan kredensial perangkat yang disimpan dan lokasi cache yang sama. Sewa offline yang masih valid harus mengizinkan fitur yang berhak.
- Coba impor di komputer biasa lainnya: validasi perangkat akan menolak respons tersebut.
- Periksa masa berlaku otorisasi dan durasi offline. Impor file tidak memperpanjang lisensi asli atau izin penggunaan melebihi batas yang ditandatangani.
Menggunakan antarmuka C
Untuk C, buat klien yang belum dijalankan dengan ln_init_product menggunakan ID produk, kunci publik tepercaya, dan kunci lisensi pelanggan. Buat permintaan dengan ln_offline_request, lalu verifikasi dan impor permintaan beserta respons dengan ln_import_offline. Bebaskan string yang dikembalikan dengan ln_free_string dan klien dengan ln_destroy.
Untuk aktivasi pertama yang sepenuhnya offline, jangan panggil ln_start atau ln_open karena keduanya mencoba memulai secara online. Gunakan alur permintaan dan impor di atas, lalu biarkan SDK memverifikasi respons bertanda tangan; jangan menguraikan tanda tangan sendiri dalam kode bisnis.
Kegagalan umum dan batasan operasional
Periksa ID produk, semua pasangan ID kunci/kunci publik, dan lisensi pelanggan. Kunci publik milik produk; lisensi dan kredensial perangkat bersifat terpisah. Jangan bagikan kunci uji atau API Key pengelolaan.
Respons yang tidak valid dapat berarti permintaan asli, produk, perangkat, kunci penandatanganan, atau versi aplikasi tidak cocok. Membawa respons yang ditandatangani kembali ke komputer yang menghasilkan permintaannya. Jangan edit muatan JSON atau nonaktifkan verifikasi.
Permintaan yang sudah habis masa berlakunya memerlukan permintaan dan persetujuan baru. Sewa yang sudah habis masa berlakunya memerlukan pembaruan atau pertukaran file lain yang disetujui sesuai kebijakan. Operasi cadangan/komit yang diukur secara online tidak tersedia saat offline sepenuhnya.
Pelepasan atau pencabutan jarak jauh akan diketahui pada pemeriksaan online berikutnya pada perangkat lama. Perangkat yang offline secara permanen tidak dapat langsung mempelajari perubahan sisi server. Pilih durasi offline dengan mempertimbangkan batasan tersebut.