Using LexActivator with VB.NET

Adding licensing to your app

After you've added a product for your app in the dashboard, go to the product page of the product you will be adding licensing to. You will need to do three things:
  • Note the product id for the product.
  • Download the Product.dat for the product.
  • Download the example project from Github
Product.dat contains product data that is used by LexActivator. The product id is the identifier of your product that is to be used in the code.

Adding the library to your app

LexActivator wrapper for VB.NET can be easily installed through nuget:
1
Install-Package Cryptlex.LexActivator
Copied!
LexActivator has a dependency on VS2015 runtime on Windows. On the target machines where you will deploy your app, you can install the VS2015 runtime, if not present, using the link: https://www.microsoft.com/en-in/download/details.aspx?id=48145

Setting product.dat file and product Id

The first thing you need to do is either embed the Product.dat file in your app using SetProductData() function or set the absolute path of the file using SetProductFile() function.
The next thing you need to do is to set the product id of your application in your code using SetProductId() function. It sets the id of the product you will be adding licensing to.
1
LexActivator.SetProductData("PASTE_CONTENT_OF_PRODUCT.DAT_FILE");
2
LexActivator.SetProductId("PASTE_PRODUCT_ID", LexActivator.PermissionFlags.LA_USER);
Copied!
If your app requires admin (root) privileges to run (e.g. services, daemons etc.), instead of passing LexActivator.PermissionFlags.LA_USER flag, you need to pass LexActivator.PermissionFlags.LA_SYSTEM flag.
In case your app doesn't have write access to the disk, you can use LexActivator.PermissionFlags.LA_IN_MEMORY flag instead, which causes all the data to be stored in the memory. But this would require you to activate the license every time you restart the app.

License activation

To activate the license in your app using the license key, you will use ActivateLicense() LexActivator API function. It invokes the /v3/activations Cryptlex Web API endpoint, verifies the encrypted and digitally signed response to validate the license.
1
Private Sub activateLicenseBtn_Click(ByVal sender As Object, ByVal e As EventArgs)
2
Try
3
Dim status As Integer
4
LexActivator.SetLicenseKey(productKeyBox.Text)
5
LexActivator.SetActivationMetadata("key1", "value1")
6
status = LexActivator.ActivateLicense()
7
If status = LexStatusCodes.LA_OK OrElse status = LexStatusCodes.LA_EXPIRED OrElse status = LexStatusCodes.LA_SUSPENDED Then
8
Me.statusLabel.Text = "Activation Successful :" & status.ToString()
9
Me.activateBtn.Text = "Deactivate"
10
Me.activateTrialBtn.Enabled = False
11
Else
12
Me.statusLabel.Text = "Error activating the license: " & status.ToString()
13
End If
14
Catch ex As LexActivatorException
15
Me.statusLabel.Text = "Error code: " & ex.Code.ToString() & " Error message: " + ex.Message
16
End Try
17
End Sub
Copied!
The above code should be executed at the time of license activation.

Verifying license activation

Each time, your app starts, you need to verify whether your license is already activated or not. This verification should occur locally by verifying the cryptographic digital signature of activation. Ideally, it should also asynchronously contact Cryptlex servers to validate and sync the license activation periodically. For this, you need to use IsLicenseGenuine() LexActivator API function.
1
Public Sub New()
2
InitializeComponent()
3
Try
4
LexActivator.SetProductData("PASTE_CONTENT_OF_PRODUCT.DAT_FILE")
5
LexActivator.SetProductId("PASTE_PRODUCT_ID", LexActivator.PermissionFlags.LA_USER)
6
Dim status As Integer = LexActivator.IsLicenseGenuine()
7
If status = LexStatusCodes.LA_OK OrElse status = LexStatusCodes.LA_EXPIRED OrElse status = LexStatusCodes.LA_SUSPENDED OrElse status = LexStatusCodes.LA_GRACE_PERIOD_OVER Then
8
Me.statusLabel.Text = "License genuinely activated! Activation Status: " & status.ToString()
9
Else
10
Me.statusLabel.Text = "License is not activated: " & status.ToString()
11
End If
12
Catch ex As LexActivatorException
13
Me.statusLabel.Text = "Error code: " & ex.Code.ToString() & " Error message: " + ex.Message
14
End Try
15
End Sub
Copied!
The above code should be executed every time user starts the app. After verifying locally, it schedules a periodic server check in a separate thread.

Need more help

In case you need more help with adding LexActivator to your app, we'll be glad to help you make the integration. You can either post your questions on our support forum or can contact us through email.