private void Generate_Click(object sender, RoutedEventArgs e)
        {
            statusText.Text = "Generating license...";

            if (string.IsNullOrEmpty(machineIdTextBox.Text))
            {
                statusText.Text = "Machine ID is required";
                return;
            }

            if (string.IsNullOrEmpty(privateKeyTextBox.Text))
            {
                statusText.Text = "Private key is required";
                return;
            }

            string errorMessage;
            var    licenseData = AppLicenseManager.GenerateLicenseData(
                machineIdTextBox.Text, privateKeyTextBox.Text, out errorMessage);

            if (null != errorMessage)
            {
                statusText.Text = $"Error while generating signature:{Environment.NewLine}{errorMessage}";
                return;
            }

            // The license data is generated. Save it
            statusText.Text = $"License data generated. Saving to file...";
            promptSave(licenseData);
        }
        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            var licensePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "license.json");

            // Generate license
            string      privateKeyXmlString = "";
            var         machineId           = AppLicenseManager.GetMachineId();
            string      errorMessage;
            LicenseData licenseData = AppLicenseManager.GenerateLicenseData(machineId, privateKeyXmlString, out errorMessage);

            // Write the license to a file
            string licenseJsonString = JsonSerializer.Serialize(licenseData);

            File.WriteAllText(licensePath, licenseJsonString);

            // Verify license
            string invalidReason;
            var    isLicenseValid = AppLicenseManager.IsLicenseValid(licensePath, out invalidReason);
        }