Note: This is the guide for v 2.x.
For the v3, please follow this url: https://blog.csdn.net/sam_shan/article/details/80585240 Thanks @liy-cn for contributing.
For the v6, please follow the comment below: https://gist.github.com/trandaison/40b1d83618ae8e3d2da59df8c395093a?permalink_comment_id=5079514#gistcomment-5079514
Download: StarUML.io
Source: jorgeancal
After installing StartUML successfully, modify LicenseManagerDomain.js as follow:
/**
* File name: LicenseManagerDomain.js
* Mac OS: /Applications/StarUML.app/Contents/www/license/node/
* Linux: /opt/staruml/www/license/node/
*/
(function () {
"use strict";
var NodeRSA = require('node-rsa');
function validate(PK, name, product, licenseKey) {
return{
name: "sontd",
product: "StarUML",
licenseType: "vip",
quantity: "unlimited",
licenseKey: "no, thanks!"
};
}
function init(domainManager) {
if (!domainManager.hasDomain("LicenseManager")) {
domainManager.registerDomain("LicenseManager", {major: 0, minor: 1});
}
domainManager.registerCommand(
"LicenseManager", // domain name
"validate", // command name
validate, // command handler function
false, // this command is synchronous in Node ("false" means synchronous")
"Validate License",
[
{
name: "PK",
type: "string",
description: "PK"
},
{
name: "name",
type: "string",
description: "name of license owner"
},
{
name: "product",
type: "string",
description: "product name"
},
{
name: "licenseKey",
type: "string",
description: "license key"
}
],
[
{
name: "result", // return values
type: "object",
description: "result"
}
]
);
}
exports.init = init;
}());Now, open it and go to Help > Enter License and you have to write the name and the licence key which you have written on LicenseManagerDomain.js. In this example would be the next:
name: "sontd"
License Key: "no, thanks!"Enjoy it!
Hello, my language is not English, so I will use a translator.
I did the following and it worked for me on Linux (StarUML v6.2.2).
Modify the entire contents of
src/engine/license-manager.js(to find the file I followed the instructions in one of the previous comments)
const { EventEmitter } = require("events"); const fs = require("fs"); const path = require("path"); const UnregisteredDialog = require("../dialogs/unregistered-dialog"); const packageJSON = require("../../package.json"); const PRO_DIAGRAM_TYPES = [ "SysMLRequirementDiagram", "SysMLBlockDefinitionDiagram", "SysMLInternalBlockDiagram", "SysMLParametricDiagram", "BPMNDiagram", "WFWireframeDiagram", "AWSDiagram", "GCPDiagram", ]; var status = true; var licenseInfo = { product: packageJSON.config.product_id, licenseType: "free", quantity: 1, }; /** * @private */ class LicenseManager extends EventEmitter { constructor() { super(); this.projectManager = null; } isProDiagram(diagramType) { return PRO_DIAGRAM_TYPES.includes(diagramType); } /** * Get Registration Status * @return {string} */ getStatus() { return status; } /** * Get License Information * @return {Object} */ getLicenseInfo() { return licenseInfo; } /** */ validate() { return Promise.resolve(licenseInfo); } /** */ async checkLicenseValidity() { setStatus(this, true); } /** * * @param {string} licenseKey */ register(licenseKey) { return Promise.resolve(licenseInfo); } htmlReady() {} appReady() { this.checkLicenseValidity(); } } module.exports = LicenseManager;It worked for me so far, I hope it works for someone else too.