WebExeBuilder Documentation

Setting Up the Built-in Licensing System - WebExeBuilder Type

This guide walks you through configuring the built-in license key system for your WebExeBuilder project. This system generates and validates license keys locally — no internet or third-party service required.


What You Need

  • Your app project open in WebExeBuilder Builder
  • A plan for how you want to distribute license keys to customers

Step 1: Enable Restricted Mode

On the Security tab, check "Create a restricted application". Without this, your app runs freely with no licensing.

Step 2: Select Built-in License System

Under License Provider, select Built-in License System (this is the default).

Step 3: Configure the Default Package

Every project starts with two packages: Default Package and Restricted Package. The Default Package controls what happens before a user registers and cannot be renamed or removed. The Restricted package can be renamed if you wish.

Select the Default Package and configure:

Setting What It Does
Expire Enable to limit trial usage by days or runs
Expire After Number of days or runs before the trial ends
Expire Type Choose "Days" (calendar time) or "Runs" (launch count)
Nag Screen When to show the nag/registration screen: Always, On Expire, or Never
Nag Delay Seconds the user must wait before they can click Continue
Increase delay by usage Enable to progressively increase delay, the Nag Delay becomes final/maximum delay
No Trial Access If checked, users cannot continue without registering — the app requires a valid key
Rollback If checked, expired registered packages fall back to the Default Package trial
Expire Message Custom message shown when the trial expires (leave blank for default)
Purchase URL Link to your purchase page, shown on the nag screen

Step 4: Create Additional Packages (Optional)

Packages let you offer different license tiers. Click Add Package to create one.

Each package gets its own Package Key (auto-generated). This key is used during license key generation to tie a key to a specific package.

Example setup:

Package Expire Days/Runs Nag Rollback Use Case
Default Package Yes 30 days Always Free trial
Personal No Never Yes Paid personal license
Business No Never Yes Paid business license
Subscription Yes 365 days On Expire Yes Annual subscription

Step 5: Generate License Keys

Click the License Key Generator button (or use the Tools menu) to open the key generation form.

For each customer, fill in:

Field What to Enter
User Name The customer's name (must match exactly when they register)
Package Select which package/tier this key unlocks
License Type Free, Trial, Paid, Business, Donation, etc.
Expiry Days Set to 0 for no expiry, or a number for time-limited keys
System ID Leave blank for a floating key (works on any machine), or paste a System ID for hardware-locked keys

Click Generate to create the key. Copy it and send it to your customer.

Generate Key

Floating vs. Hardware-Locked Keys

  • Floating keys (System ID left blank): Work on any computer. The customer can use the same key on different machines.
  • Hardware-locked keys (System ID filled in): Only work on the specific machine that generated that System ID. The customer needs to provide their System ID from the nag screen, and you paste it into the generator.

To show the System ID on the nag screen, check "Use System ID (hardware locked keys)" in the Security settings.


How It Works at Runtime

App starts
  │
  ├─ Is the app restricted?
  │   └─ No → App runs freely
  │
  ├─ Load saved registration data (if any)
  │
  ├─ Is the user registered?
  │   ├─ Yes → Validate stored key against package
  │   │         ├─ Valid → Check if package is expired
  │   │         │           ├─ Not expired → Run normally
  │   │         │           └─ Expired → Rollback or show expire message
  │   │         └─ Invalid → Clear registration, show nag
  │   │
  │   └─ No → Check Default Package settings
  │             ├─ No Trial Access? → Must register to continue
  │             └─ Trial allowed → Show nag based on Nag setting
  │
  └─ User enters Name + License Key
      └─ Key validated against all project packages
          ├─ Match found → Activate that package, save registration
          └─ No match → Show error

Trial Expiration

When a trial expires (days elapsed or runs exhausted):

  • The Expire Message is shown on the nag screen
  • If Rollback is enabled on the registered package, the user falls back to the Default Package
  • If No Trial Access is enabled on the Default Package, the user cannot continue without a valid key
  • The Purchase URL is displayed so the user can buy a license

Nag Screen Behavior

Nag Setting When Nag Screen Appears
Always (0) Every time the app launches
On Expire (1) Only after the trial has expired
Never (2) Never shown (user must access registration from the menu)

The nag screen shows:

  • App title and branding
  • Trial status (days/runs remaining, or expired)
  • System ID (if hardware locking is enabled)
  • Register button to enter a license key
  • Continue button (with countdown delay) or Exit button if expired

Key Reuse Protection

The built-in system tracks used keys per machine. If a customer tries to re-register with a key that was already used and exhausted on the same machine, it will be rejected. This prevents reusing expired run-limited keys.


Quick Checklist

  • Restricted mode enabled
  • Built-in License System selected
  • Default Package configured (expire type, days/runs, nag behavior)
  • Additional packages created for your license tiers (if needed)
  • Package Keys generated for each package (auto-generated)
  • License keys generated for customers using the Key Generator
  • Hardware locking configured (if desired)
  • Purchase URL set on packages for the nag screen
  • Expire messages customized (or left as default)