### Example MinGW-w64 Installation Path Source: https://wyday.com/limelm/help/using-turboactivate-with-go This is an example path for a MinGW-w64 installation on Windows. Ensure this path is correctly set in your system's PATH environment variable. ```text C:\Program Files\mingw-w64\x86_64-7.2.0-win32-seh-rt_v5-rev0\mingw64 ``` -------------------------------- ### Install macOS Command Line Tools Source: https://wyday.com/limelm/help/using-turboactivate-with-go Installs the necessary development tools required for Go without installing the full Xcode environment. ```bash xcode-select --install ``` -------------------------------- ### Install TurboFloat Server Source: https://wyday.com/limelm/help/turbofloat-server Install the server as a background service or daemon using the -i switch. Requires elevated privileges. ```bash TurboFloatServer.exe -i ``` ```bash sudo ./TurboFloatServer -i ``` ```bash TurboFloatServer.exe -i -pdets="YourTurboActivate.dat" -config="Config.xml" ``` ```bash TurboFloatServer.exe -i -delaystart ``` -------------------------------- ### Initialize TurboFloat Instance Source: https://wyday.com/limelm/help/using-turbofloat-with-electron-nodejs Create a TurboFloat instance in your main form. Replace 'Paste GUID Here' with the actual GUID from LimeLM. ```javascript var TurboFloat = require('./turbofloat.js'); //TODO: goto the version page at LimeLM and paste this GUID here var tf = new TurboFloat("Paste GUID Here", TFLeaseChange); ``` -------------------------------- ### Build Example C App with Makefile Source: https://wyday.com/limelm/help/using-turboactivate-on-linux Compile the example C application for x86 architecture using the provided makefile. This will generate an executable in the same directory as the library. ```bash make -f makefile-x86 ``` -------------------------------- ### Start Verified Trial from File (C/C++) Source: https://wyday.com/limelm/help/trials Use TA_UseTrialVerifiedFromFile to start a verified trial using a response file. Trial flags like TA_VERIFIED_TRIAL and TA_SYSTEM can be set. ```cpp // Set the trial flags you want to use. Here we've selected that the // trial data should be stored system-wide (TA_SYSTEM) and that we should // use un-resetable verified trials (TA_VERIFIED_TRIAL). uint32_t trialFlags = TA_VERIFIED_TRIAL | TA_SYSTEM; HRESULT hr = TA_UseTrialVerifiedFromFile(taHandle, filename, trialFlags); if (hr == TA_OK) printf("The verified trial started successfully!"); else printf("TA_UseTrialVerifiedFromFile failed: hr = 0x%x\n", hr); ``` -------------------------------- ### Start Unverified Trial Source: https://wyday.com/limelm/help/turboactivate-wizard To start an unverified trial instead of the default verified trial on the first run, use the --unverified command-line switch. ```bash TurboActivate.exe --unverified ``` -------------------------------- ### Start Verified Trial from File (C#) Source: https://wyday.com/limelm/help/trials Use the TurboActivate.UseTrialVerifiedFromFile method to start a verified trial using a response file. Trial flags like TA_Flags.TA_VERIFIED_TRIAL and TA_Flags.TA_SYSTEM can be specified. ```csharp // Set the trial flags you want to use. Here we've selected that the // trial data should be stored system-wide (TA_SYSTEM) and that we should // use un-resetable verified trials (TA_VERIFIED_TRIAL). TA_Flags trialFlags = TA_Flags.TA_SYSTEM | TA_Flags.TA_VERIFIED_TRIAL; try { ta.UseTrialVerifiedFromFile(filename, trialFlags); } catch (Exception ex) { MessageBox.Show(ex.Message, "UseTrialVerifiedFromFile failed.", MessageBoxButtons.OK, MessageBoxIcon.Error); } ``` -------------------------------- ### Initialize TurboFloat Instance Source: https://wyday.com/limelm/help/using-turbofloat-with-python Initialize the TurboFloat instance with your product's Version GUID and a lease callback function. Replace 'PASTE-VERSION-GUID-HERE' with your actual GUID. ```python try: # TODO: go to the version page at LimeLM and # paste this GUID here tf = TurboFloat("PASTE-VERSION-GUID-HERE", leasecallback) ``` -------------------------------- ### Create TurboActivate Instance Source: https://wyday.com/limelm/help/using-turboactivate-with-python Instantiate the TurboActivate object with your Version GUID and activation type (user or system). Replace 'Paste GUID Here' with your actual GUID. ```python ta = TurboActivate("Paste GUID Here", TA_USER) ``` -------------------------------- ### Initialize TurboActivate Instance Source: https://wyday.com/limelm/help/using-turboactivate-with-csharp Create a TurboActivate object in your application's constructor. Replace 'Paste GUID Here' with your actual Version GUID from LimeLM. Ensure the TurboActivate.dat file is accessible. ```csharp public partial class Form1 : Form { readonly TurboActivate ta; public Form1() { InitializeComponent(); try { //TODO: goto the version page at LimeLM and // paste this GUID here ta = new TurboActivate("Paste GUID Here"); // ... } catch (Exception ex) { // Handle exceptions during TurboActivate initialization MessageBox.Show($"Error initializing TurboActivate: {ex.Message}"); } } // ... } ``` -------------------------------- ### Initialize TurboFloat and Request Lease Source: https://wyday.com/limelm/help/using-turbofloat-with-vb-dot-net Initialize the TurboFloat library with your application's version GUID and set up an event handler for lease changes before requesting a lease. Replace 'PASTE-VERSION-GUID-HERE' with your actual GUID. ```vb Try 'TODO: goto the version page at LimeLM and paste this GUID here tf = New TurboFloat("PASTE-VERSION-GUID-HERE") AddHandler tf.LeaseChange, AddressOf TurboFloat_LeaseChange tf.RequestLease() ``` -------------------------------- ### Proxy URI Format Examples Source: https://wyday.com/limelm/help/proxies-in-turboactivate Examples of valid proxy string formats for TurboActivate. ```text http://127.0.0.1/ ``` ```text http://127.0.0.1:8080/ ``` ```text http://user:pass@127.0.0.1:8080/ ``` -------------------------------- ### Handle Next Button Click in Installer Source: https://wyday.com/limelm/help/using-turboactivate-with-inno-setup This function handles the 'Next' button click event in the installer. It retrieves the TurboActivate handle, checks activation status, validates and saves the product key, and attempts activation. The user can proceed even if activation fails. ```Pascal function NextButtonClick(CurPage: Integer): Boolean; var ret: LongInt; begin if CurPage = wpWelcome then begin // get the handle for your version GUID taHandle := TA_GetHandle(VERSION_GUID); // error handling code if taHandle = 0 then begin MsgBox('Failed to get the TurboActivate handle. Make sure the TurboActivate.dat file is included with your installer and you''re using the correct VersionGUID.', mbError, MB_OK); Result := False; exit; end; // after the welcome page, check if we're activated ret := TA_IsActivated(taHandle); if ret = TA_OK then begin activated := true; end; end else if CurPage = PkeyPage.ID then begin // check if the product key is valid ret := TA_CheckAndSavePKey(taHandle, PkeyPage.Values[0], TA_SYSTEM); if ret = TA_OK then begin // try to activate, show a specific error if it fails ret := TA_Activate(taHandle, 0); if ret = 0 then begin activated := true; end; end; end; // let the user continue whether they're activated or not Result := True; end; ``` -------------------------------- ### Create TurboActivate Instance in Go Source: https://wyday.com/limelm/help/using-turboactivate-with-go Instantiate the TurboActivate object with your Version GUID. Ensure you replace the placeholder with your actual GUID. Handle potential errors during instantiation. ```go import "golang.wyday.com/turboactivate" func main() { //TODO: goto the version page at LimeLM and paste this GUID here ta, err := turboactivate.NewTurboActivate("Paste GUID Here", "") if err != nil { // failed to construct the TurboActivate object // bail out now. panic(err) } // ... } ``` -------------------------------- ### Initialize TurboFloat and Request Lease Source: https://wyday.com/limelm/help/using-turbofloat-with-csharp Initializes the TurboFloat library with a version GUID and requests a license lease. Ensure you replace 'PASTE-VERSION-GUID-HERE' with your actual GUID. This code should be placed before setting up event handlers. ```csharp try { //TODO: goto the version page at LimeLM and paste this GUID here tf = new TurboFloat("PASTE-VERSION-GUID-HERE"); tf.LeaseChange += TurboFloat_LeaseChange; tf.RequestLease(); } ``` -------------------------------- ### Initialize TurboFloat Instance Source: https://wyday.com/limelm/help/using-turbofloat-with-vba Initializes the TurboFloat object and requests a license lease. Ensure the Version GUID is replaced with your specific product GUID. ```VBA ' Only call this function once. If you call it many times unexpected behavior will happen. Public Function InitializeTurboFloat(ByVal showPrompt As Boolean) As Boolean ' create the new TurboFloat instance Set globalTfInstance = New TurboFloat ' tell your app to handle errors in the section ' at the end of the sub If showPrompt Then On Error GoTo TFProcError Else On Error GoTo FailCleanup End If 'TODO: goto the version page at LimeLM and paste this GUID here Call globalTfInstance.Init("18324776654b3946fc44a5f3.49025204", vbNullString, Not showPrompt) ' if we're not showing the prompt then it's presumed ' that we're not trying to request a license lease, so, just skip it If Not showPrompt Then GoTo ProcExit End If ' request the lease Call globalTfInstance.RequestLease AfterRequest: ' If you've reached this point then your app has ' successfully acquired a license lease. If you ' have custom license field values that you want ' to use, you can get them now. ' See: https://wyday.com/limelm/help/license-features/ 'Dim fieldValue As String 'fieldValue = globalTfInstance.GetFeatureValue("your field name", "default value") 'TODO: do something with the fieldValue ProcExit: InitializeTurboFloat = True Exit Function TFProcError: If Err.Number = TF_E_INET Or _ Err.Number = TF_E_INET_TIMEOUT Or _ Err.Number = TF_E_WRONG_SERVER_PRODUCT Or _ Err.Number = TF_E_SERVER_UUID_MISMATCH Or _ Err.Number = TF_E_USERNAME_NOT_ALLOWED Then ' Give the user an option to try another server if they ' couldn't connect to the first one, or if the first one ' is for a different product. Dim inetErr As frmFloatInternetErr Set inetErr = New frmFloatInternetErr If inetErr.ShowDialog(globalTfInstance) = vbOK Then Resume AfterRequest Else ' Return false and cleanup memory Resume FailCleanup End If ElseIf Err.Number = TF_E_SERVER Then ' if it's a server error, then prompt for the server Dim srvConf As ServerConfig Set srvConf = New ServerConfig If srvConf.ShowDialog(globalTfInstance) = vbOK Then Resume AfterRequest Else ' Return false and cleanup memory Resume FailCleanup End If End If MsgBox "Failed to get a lease from the floating license server: " & Err.Description FailCleanup: Set globalTfInstance = Nothing ' Tell the customer that it failed InitializeTurboFloat = False End Function ``` -------------------------------- ### GET /pkey/find Source: https://wyday.com/limelm/help/api/misc.encoding Finds a product key by its key string. ```APIDOC ## GET /pkey/find ### Description Finds a product key by its key string. ### Method GET ### Endpoint /pkey/find ### Query Parameters - **key** (string) - Required - The product key string to find. ### Response #### Success Response (200) - **productKey** (object) - The product key details. - **id** (integer) - The product key ID. - **key** (string) - The product key. - **status** (string) - The status of the product key. - **expirationDate** (string) - The expiration date of the product key. #### Response Example ```json { "productKey": { "id": 501, "key": "ABCD-EFGH-IJKL-MNOP", "status": "active", "expirationDate": "2024-12-31" } } ``` ``` -------------------------------- ### GET /pkey/activity Source: https://wyday.com/limelm/help/api/misc.encoding Retrieves activity logs for product keys. ```APIDOC ## GET /pkey/activity ### Description Retrieves activity logs for product keys. ### Method GET ### Endpoint /pkey/activity ### Query Parameters - **productId** (integer) - Optional - Filter activity by product ID. - **licenseId** (integer) - Optional - Filter activity by license ID. - **startDate** (string) - Optional - Filter activity from a specific start date (YYYY-MM-DD). - **endDate** (string) - Optional - Filter activity up to a specific end date (YYYY-MM-DD). ### Response #### Success Response (200) - **activityLogs** (array) - A list of activity log entries. - **timestamp** (string) - The time of the activity. - **type** (string) - The type of activity (e.g., activation, deactivation). - **details** (string) - Details about the activity. #### Response Example ```json { "activityLogs": [ { "timestamp": "2023-10-27T10:00:00Z", "type": "activation", "details": "Product key activated on machine XYZ." } ] } ``` ``` -------------------------------- ### Initialize the product key wizard page Source: https://wyday.com/limelm/help/using-turboactivate-with-inno-setup Create the input page for the product key within the InitializeWizard procedure. ```Pascal procedure InitializeWizard; begin // create the product key page PkeyPage := CreateInputQueryPage(wpWelcome, 'Type your product key', '', 'You can find the {#SetupSetting("AppName")} product key in the email we sent you. Activation will register the product key to this computer.'); PkeyPage.Add('Product Key:', False); end; ``` -------------------------------- ### Include TurboActivate files in Inno Setup Source: https://wyday.com/limelm/help/using-turboactivate-with-inno-setup Add the TurboActivate DLL and DAT files to the [Files] section of your Inno Setup script to ensure they are available during installation and uninstallation. ```inno [Files] ; Install TurboActivate to {app} so we can access it at uninstall time ; Also, notice we're putting the TurboActivate files at the top of the file ; list. This is so that if you're using "SolidCompression=yes" your installer ; can still start relatively quickly. Source: "TurboActivate.dll"; DestDir: "{app}" Source: "TurboActivate.dat"; DestDir: "{app}" ; all other files can go below... ``` -------------------------------- ### Example otool Output Source: https://wyday.com/limelm/help/using-turboactivate-on-mac-os-x Sample output showing the compatibility and current version of the library. ```text libTurboActivate.dylib: @rpath/libTurboActivate.dylib (compatibility version 1.0.0, **current version 4.0.5**) ... ``` -------------------------------- ### Start Verified Trial and Get Remaining Days Source: https://wyday.com/limelm/help/using-turboactivate-with-electron-nodejs Initiates a verified trial and retrieves the number of remaining trial days. Handles trial expiration by calling `TrialExpired()` and proceeds to start the application if trial days are available. ```javascript ta.UseTrial(TATrialChange, trialFlags) .then((retObj) => { // result from UseTrial() // if null, fall through if (retObj === null) return null; if (retObj === TA_OK) return ta.TrialDaysRemaining(trialFlags); else if (retObj === TA_E_TRIAL_EXPIRED) { TrialExpired(); return null; } else HardFailure("Failed to start the trial", retObj); }) .then((retObj) => { // result from TrialDaysRemaining() // if null, fall through if (retObj === null) return null; if (retObj[0] === TA_OK) { // if the customer is in a trial, being your app if (retObj[1] > 0) BeginYourApp(true, retObj[1]); else // no more trial days remaining { TrialExpired(); return null; } } else { HardFailure("Failed to get the trial days remaining", retObj[0]); } }) .catch((retObj) => { // an error somewhere in the processing HardFailure("Something failed! " + retObj, 1); }); ``` -------------------------------- ### Define Version GUID in Inno Setup Source: https://wyday.com/limelm/help/using-turboactivate-with-inno-setup Set the VERSION_GUID constant in the [Code] section of your script using the value provided by your LimeLM version page. ```inno [Code] //TODO: goto the version page at LimeLM and paste this GUID here const VERSION_GUID = 'Paste GUID Here'; ``` -------------------------------- ### Install turbofloat Python Package Source: https://wyday.com/limelm/help/using-turbofloat-with-python Install the turbofloat Python package using pip. This command installs the package for global use. ```bash pip install turbofloat ``` -------------------------------- ### Prompt for Product Key and Activate Source: https://wyday.com/limelm/help/using-turboactivate-with-python This snippet demonstrates how to prompt the user for a product key, check and save it, and then attempt to activate the product. It includes error handling for invalid keys and activation failures. Use this when direct user input for activation is required. ```python # Whether to prompt for the product key prompt_for_key = False if not isGenuine: # ask the user if they want to enter their pkey print('Would you like to enter your pkey (y/n) [n]: ') prompt_res = sys.stdin.read(1) if prompt_res != "" and prompt_res == "y": prompt_for_key = True else: prompt_for_key = False # Now actually prompt for the product key and try to activate if prompt_for_key: try: # prompt the user for a product key pkey = input('Enter your product key to activate: ') if ta.check_and_save_pkey(pkey): print("Product key saved successfully.") else: sys.exit("Product key was not valid for this product version") except TurboActivateError as e: sys.exit("Failed to check or save product key: " + str(e)) # try to activate the product key try: ta.activate() isGenuine = True print("Activated successfully!") except TurboActivateError as e: sys.exit("Failed to activate online: " + str(e)) ``` -------------------------------- ### Install TurboActivate Python Package Source: https://wyday.com/limelm/help/using-turboactivate-with-python Install the TurboActivate Python class to be used globally. Use the --upgrade flag to update an existing installation. ```bash pip install turboactivate ``` ```bash pip install --upgrade turboactivate ``` -------------------------------- ### Define Application Start Function Source: https://wyday.com/limelm/help/using-turboactivate-with-electron-nodejs This function serves as the entry point for your application's main logic. It can optionally be called with parameters indicating an active trial. ```javascript function BeginYourApp(inTrial = false, trialDays = 0) { console.log("Hello world! Here's where your app code would begin."); } ``` -------------------------------- ### Install or Update PyInstaller Source: https://wyday.com/limelm/help/using-turboactivate-with-python Commands to install or upgrade the PyInstaller package via pip. ```bash pip install pyinstaller ``` ```bash pip install --upgrade pyinstaller ``` -------------------------------- ### Install GCC on CentOS/Red Hat Source: https://wyday.com/limelm/help/using-turboactivate-with-go Installs the GCC compiler package on RHEL-based systems. ```bash sudo yum install gcc ``` ```bash sudo yum install gcc.x86_64 ``` -------------------------------- ### Extract TurboActivate to installation directory Source: https://wyday.com/limelm/help/using-turboactivate-with-nsis Copy the required TurboActivate files into the target installation folder. ```NSIS SetOutPath "$INSTDIR" File "TurboActivate.dll" File "TurboActivate.dat" ``` -------------------------------- ### Initialize TurboActivate in .onInit Source: https://wyday.com/limelm/help/using-turboactivate-with-nsis Extract TurboActivate files to the plugins directory during the installer initialization phase. ```NSIS Function .onInit ; ... Your other lines ; TurboActivate requires at least Windows XP ${IfNot} ${AtLeastWinXP} MessageBox MB_OK "Windows XP (or newer) is required to run $(^NameDA)." Quit ${EndIf} ; create the plugins folder InitPluginsDir ; extract the TurboActivate files to the plugns folder File /oname=$PLUGINSDIR\TurboActivate.dll "TurboActivate.dll" File /oname=$PLUGINSDIR\TurboActivate.dat "TurboActivate.dat" FunctionEnd ``` -------------------------------- ### Installing the TurboFloat Server (Linux) Source: https://wyday.com/limelm/help/turbofloat-server Instructions for running the TurboFloat Server on Linux, including command-line arguments for silent operation. ```APIDOC ## Installing the TurboFloat Server (Linux) Since Linux installations vary wildly in how they run "daemons" or "startup services" we don't offer the "-i" commandline switch for Linux. However, you can build the init script yourself (for systemd, System V init, upstart, or any other init system) to launch the TurboFloat Server instance upon the computer's start. When you're running the TurboFloat Server instance from your init script there are 2 commandline options you'll want to use: ``` /path/to/turbofloatserver **-x -silent** ``` That will tell the TurboFloat Server instance to run and to run silently (not outputting to "stderr"). ``` -------------------------------- ### Install GCC on Ubuntu/Debian Source: https://wyday.com/limelm/help/using-turboactivate-with-go Updates package lists and installs the build-essential package containing GCC. ```bash sudo apt-get update sudo apt-get install build-essential ``` -------------------------------- ### Configure NSIS Installer Page Order Source: https://wyday.com/limelm/help/using-turboactivate-with-nsis Insert the custom product key page into the installer's page sequence. ```NSIS !insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt" **Page custom PagePKey PagePKeyLeave** !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES ``` -------------------------------- ### Prompt and Activate Product Key Source: https://wyday.com/limelm/help/using-turboactivate-with-go Use this pattern to collect a product key from the user, validate it, and perform the activation process. ```go var userEnteredPkey string //TODO: prompt the user for the product key // validate and save the product key if it's valid validKey, err := ta.CheckAndSavePKey(userEnteredPkey, turboactivate.TAUser) if err != nil { // a critical error happened -- likely // a failure to save the key panic(err) } if !validKey { fmt.Println("The product key entered is not valid.") } else { err = ta.Activate("") if err != nil { fmt.Println("Failed to activate: " + err.Error()) //TODO: ask the user for their product key again } } ``` -------------------------------- ### Echo API Method Example Response Source: https://wyday.com/limelm/help/api/limelm.test.echo This is an example of the XML response from the limelm.test.echo method, showing how parameters are echoed back. ```xml echo bar ``` -------------------------------- ### Verify GCC Installation Source: https://wyday.com/limelm/help/using-turboactivate-with-go Command to verify the GCC compiler installation on Windows. Successful execution indicates that MinGW-w64 and its PATH configuration are correct. ```bash gcc --version ``` -------------------------------- ### Initialize TurboActivate Instance in VB6 Source: https://wyday.com/limelm/help/using-turboactivate-with-vb6 This code snippet demonstrates how to create a new TurboActivate object and initialize it with your product's Version GUID. Ensure you replace 'Paste GUID Here' with the actual GUID obtained from your LimeLM version page. Error handling is set up to direct to the TAProcError label. ```vb Public ta As TurboActivate Private Sub Form_Load() ' create the new TurboFloat instance Set ta = New TurboActivate ' tell your app to handle errors in the section ' at the end of the sub On Error GoTo TAProcError 'TODO: goto the version page at LimeLM and paste this GUID here Call ta.Init("Paste GUID Here") ' ... ``` -------------------------------- ### Implement activation logic in NextButtonClick Source: https://wyday.com/limelm/help/using-turboactivate-with-inno-setup Handle product key verification and activation during the wizard navigation process. ```Pascal function NextButtonClick(CurPage: Integer): Boolean; var ret: LongInt; begin if CurPage = wpWelcome then begin // get the handle for your version GUID taHandle := TA_GetHandle(VERSION_GUID); // error handling code if taHandle = 0 then begin MsgBox('Failed to get the TurboActivate handle. Make sure the TurboActivate.dat file is included with your installer and you''re using the correct VersionGUID.', mbError, MB_OK); Result := False; exit; end; // after the welcome page, check if we're activated ret := TA_IsActivated(taHandle); if ret = TA_OK then begin activated := true; end; Result := True; end else if CurPage = PkeyPage.ID then begin // check if the product key is valid ret := TA_CheckAndSavePKey(taHandle, PkeyPage.Values[0], TA_SYSTEM); if ret = TA_OK then begin // try to activate, show a specific error if it fails ret := TA_Activate(taHandle, 0); case ret of TA_E_PKEY: MsgBox('The product key is invalid or there''s no product key.', mbError, MB_OK); TA_E_INET: MsgBox('Connection to the servers failed.', mbError, MB_OK); TA_E_INUSE: MsgBox('The product key has already been activated with the maximum number of computers.', mbError, MB_OK); TA_E_REVOKED: MsgBox('The product key has been revoked.', mbError, MB_OK); TA_E_INVALID_HANDLE: MsgBox('The handle is not valid. You must set the VersionGUID property.', mbError, MB_OK); TA_E_COM: MsgBox('CoInitializeEx failed. Re-enable Windows Management Instrumentation (WMI) service. Contact your system admin for more information.', mbError, MB_OK); TA_E_ENABLE_NETWORK_ADAPTERS: ``` -------------------------------- ### TurboFloat Directory Structure Example Source: https://wyday.com/limelm/help/using-turbofloat-with-java Illustrates the expected directory structure for including TurboFloat native binaries and the TurboActivate.dat file relative to your application's JAR file. ```text YourApp.jar TurboFloat/ TurboActivate.dat win-x86/ TurboFloat.dll win-x64/ TurboFloat.dll win-arm64/ TurboFloat.dll mac/ libTurboFloat.dylib linux-i386/ libTurboFloat.so linux-amd64/ libTurboFloat.so linux-arm/ libTurboFloat.so linux-arm64/ libTurboFloat.so freebsd-i386/ libTurboFloat.so freebsd-amd64/ libTurboFloat.so ... ``` -------------------------------- ### Prompt and Activate Product Key Source: https://wyday.com/limelm/help/using-turboactivate-with-electron-nodejs Demonstrates the workflow for validating a user-provided product key and subsequently activating the application. ```javascript var userEnteredPkey; //TODO: prompt the user for the product key // validate and save the product key if it's valid ta.CheckAndSavePKey(userEnteredPkey, TA_USER) .then((retObj) => { // the product key was valid and saved successfully if (retObj === TA_OK) return ta.Activate(); else // TA_FAIL { HardFailure("Something failed! " + retObj, 1); return null; } }) .then((retObj) => { // result from Activate() // if null, fall through if (retObj === null) return null; if (retObj === TA_OK) { // the customer activated successfully, begin your app BeginYourApp(); } else { HardFailure("Activation failed.", retObj); } }) .catch((retObj) => { // an error somewhere in the processing HardFailure("Something failed! " + retObj, 1); }); ``` -------------------------------- ### Initialize TurboActivate Instance Source: https://wyday.com/limelm/help/using-turboactivate-with-vb-dot-net Instantiate the TurboActivate object in your application's constructor. Ensure you replace the placeholder GUID with your actual Version GUID from LimeLM. ```vb Public Class Form1 Private ta As TurboActivate Public Sub New() InitializeComponent() Try 'TODO: goto the version page at LimeLM and ' paste this GUID here ta = New TurboActivate("Paste GUID Here") ' ... End Try End Sub End Class ``` -------------------------------- ### POST /prod/create Source: https://wyday.com/limelm/help/api/misc.encoding Creates a new product. ```APIDOC ## POST /prod/create ### Description Creates a new product. ### Method POST ### Endpoint /prod/create ### Request Body - **name** (string) - Required - The name of the product. - **version** (string) - Required - The version of the product. ### Request Example ```json { "name": "NewProduct", "version": "1.0" } ``` ### Response #### Success Response (200) - **id** (integer) - The ID of the newly created product. - **message** (string) - A success message. #### Response Example ```json { "id": 103, "message": "Product created successfully." } ``` ``` -------------------------------- ### Define Version GUID and Licensing Flags Source: https://wyday.com/limelm/help/using-turboactivate-with-nsis Set the unique Version GUID obtained from LimeLM and define flags to enable product key and activation requirements. ```nsis !define VersionGUID 'Paste GUID Here' !define REQUIRE_PKEY !define REQUIRE_ACT ```