1. Siapkan Python dan fitur berlisensi
Tambahkan kunci lisensi pelanggan ke aplikasi komersial Python berbasis baris perintah atau desktop, lalu periksa izin sebelum menjalankan fitur yang dilindungi. Pemeriksaan ini mengatur akses ke aplikasi Anda tanpa mengubah lisensi sumber terbuka interpreter Python. Aplikasi menyediakan masukan aktivasi dan callback operasi.
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.
- Instal Python 3.10 atau lebih baru dan buat direktori proyek.
- Dalam integrasi Licentivo Quick, buat atau pilih produk dengan fitur ekspor tidak terukur yang diizinkan oleh kebijakan dan lisensinya.
2. Instal di lingkungan virtual
Instal SDK 0.11.6 dengan perintah berikut di proyek aplikasi Anda atau tambahkan dependensi build. Pengelola paket mengambil SDK; tidak perlu mengunduh dan mengekstrak kode sumber atau mengatur jalur lokal.
python -m venv .venv
./.venv/Scripts/python.exe -m pip install "licentivo-sdk==0.11.6"python3 -m venv .venv
./.venv/bin/python -m pip install "licentivo-sdk==0.11.6"3. Validasi lisensi sebelum mengekspor
Inisialisasikan SDK saat aplikasi dimulai atau diaktifkan. Baca kunci pelanggan dari formulir aktivasi, lalu berikan ID produk dan kunci tepercaya. Pertahankan klien sampai aplikasi ditutup. Letakkan run_feature pada operasi bisnis nyata dan ganti ekspor dengan fungsi Anda.
"""A protected operation to move into your own application's business handler."""
import os
import sys
from pathlib import Path
from licentivo import Client
# BEGIN LICENTIVO PRODUCT
# Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
PRODUCT_ID = 'YOUR_PRODUCT_ID'
TRUSTED_KEYS = {'YOUR_KEY_ID': 'YOUR_PUBLIC_KEY'}
# END LICENTIVO PRODUCT
def export_report(path):
# Replace this write with your existing, non-metered export operation.
Path(path).write_text('A report generated by the licensed application.\n', encoding='utf-8')
def main():
# In a GUI, read the activation input; later starts pass an empty key.
with Client.open_product(
PRODUCT_ID, TRUSTED_KEYS,
os.getenv('LICENTIVO_LICENSE_KEY', ''),
on_error=lambda error: print(f'Background verification: {error}', file=sys.stderr),
) as client:
feature = os.getenv('LICENTIVO_FEATURE', 'export')
path = os.getenv('LICENTIVO_OUTPUT', 'licensed-report.txt')
action = lambda: export_report(path)
if os.getenv('LICENTIVO_METERED') == '1':
client.run_metered_feature(feature, 1, os.getenv('LICENTIVO_OPERATION_ID', ''), action)
else:
client.run_feature(feature, action)
print(f'License OK: {feature} is available\nExport completed: {path}')
# Keep this context open until your real app exits. No Deactivate on normal exit.
if __name__ == '__main__':
try:
main()
except Exception as error:
print(str(error), file=sys.stderr)
sys.exit(2)
$env:LICENTIVO_LICENSE_KEY = 'YOUR_TEST_LICENSE_KEY'
./.venv/Scripts/python.exe app.py
# On later starts, restore the saved device credential:
Remove-Item Env:LICENTIVO_LICENSE_KEY
./.venv/Scripts/python.exe app.pyexport LICENTIVO_LICENSE_KEY='YOUR_TEST_LICENSE_KEY'
./.venv/bin/python app.py
# On later starts, restore the saved device credential:
unset LICENTIVO_LICENSE_KEY
./.venv/bin/python app.py4. Jaga agar klien tetap hidup dalam aplikasi desktop
Untuk ekspor baris perintah, blok with dapat mencakup seluruh operasi. Untuk aplikasi desktop, buka klien selama aktivasi dan simpan hingga jendela ditutup; jangan membuat dan menutup klien untuk setiap klik tombol.
Jalankan aktivasi online dan operasi jaringan lain di luar thread GUI, lalu kirim hasilnya kembali ke thread antarmuka. Contoh desktop Tkinter tersedia secara terpisah melalui tautan dokumentasi di bawah; pemasangan paket pip tidak memasang kode sumber contoh tersebut.
Setiap tombol ekspor, pintasan atau perintah harus memanggil client.run_feature("export", lambda: export_report(path)). Saat mematikan panggilan tutup; itu mempertahankan pendaftaran yang terikat perangkat dan mencoba mengembalikan kursi mengambang.
Nanti mulai meneruskan kunci lisensi kosong dengan produk, pengguna, dan jalur cache yang sama untuk memulihkan kredensial perangkat yang disimpan. Startup offline masih bergantung pada izin yang ditandatangani dan kebijakan lisensi; startup mengambang dan hanya online memerlukan konfirmasi server.
5. Verifikasi jalur yang diizinkan dan ditolak
- Aktifkan menggunakan kunci pengujian Anda dan periksa laporan yang dihasilkan.
- Hapus setelan LICENTIVO_LICENSE_KEY dan mulai ulang dengan lingkungan virtual dan pengguna sistem operasi yang sama. Konfirmasikan pemulihan kredensial perangkat yang disimpan.
- Setel LICENTIVO_FEATURE ke fitur yang tidak ada dalam lisensi dan LICENTIVO_OUTPUT ke nama file baru. Harapkan kode keluar bukan nol dan tidak ada ekspor baru.
- Jika Anda mengaktifkan pengukuran, konfigurasikan aturan penggunaan terlebih dahulu, atur LICENTIVO_METERED=1 dan berikan LICENTIVO_OPERATION_ID untuk tugas bisnis yang tahan lama. Verifikasi pekerjaan yang berhasil mengurangi penghitungnya satu kali.
Batasi ekspor perangkat lunak dengan penghitung penggunaan bulanan
Memecahkan masalah instalasi dan otorisasi
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.
ModuleNotFoundError biasanya berarti pip dan aplikasi menggunakan penerjemah Python yang berbeda. Gunakan lingkungan virtual yang sama yang dapat dieksekusi untuk kedua perintah.
Lisensi yang sudah habis masa berlakunya atau fitur yang ditolak harus menghentikan pengoperasiannya. Tampilkan kesalahan SDK dan minta ID bila tersedia; jangan jalankan panggilan balik ekspor setelah pemeriksaan gagal.
Operasi terukur memerlukan akses jaringan. Simpan ID tugas yang stabil dan hasil yang tahan lama sehingga konfirmasi yang tertunda dapat dipulihkan tanpa mengulangi pekerjaan. Jangan mendistribusikan izin yang disimpan dalam cache, kredensial perangkat, kunci pengujian, atau kunci manajemen vendor.