文章目录

  • 感谢
  • 1 下载安装包
  • 2 安装
  • 3 破解
  • 3.1 安装node.js
  • 3.2 反编译StarUML
  • 3.2.1 安装asar
  • 3.2.2 反编译
  • 4 修改源码
  • 4.1 解决验证许可
  • 4.2 禁用版本自动更新
  • 4.3 重新打包源码
  • 5 汉化

注意:官网下载慢,并且不稳定,时常断掉连接。有需要可以留言,可以百度分享安装包。

staruml导入java文件生成 staruml如何导出_uml

2 安装

双击下载安装包就可以安装了。
注意:安装不会提示【自定义路径】,默认安装在以下路径下

C:\Program Files\StarUML\

安装完成后会出现小窗口,提示需要注册,点击右下角不注册即可,关闭【StarUML】。

3 破解

3.1 安装node.js

破解需要先安装node.js环境。此非本文重点,也比较简单,自行安装。

3.2 反编译StarUML

3.2.1 安装asar

编译之前需要安装编译工具【asar】

npm install -g asar

查看版本号

asar -v
# 安装时使用 -v 参数是有效的,但是之后再测试,发现报错“error: unknown option '-v'”
# 可以使用 --version 参数
asar --version

如果显示出现版本号,就说明安装成功。
个人遇到的问题
因为我是使用的【Windows PowerShell】工具,所以出现以下报错

无法加载文件 C:\Users\walker\AppData\Roaming\npm\asar.ps1,因为在此系统上禁止

解决

  1. 在系统中搜索框 输入 【Windos PowerShell】,点击【管理员身份运行】
  2. 在终端界面直接输入【set-ExecutionPolicy RemoteSigned】回车运行
  3. 根据提示,同意执行策略修改;输入【Y】或者【A】,回车
  4. 再次执行【asar -v]测试。
3.2.2 反编译

安装好了反编译工具,就可以继续反编译操作了。
进入安装目录(上面有提到),找到文件夹【resources】
完整路径:

C:\Program Files\StarUML\resources

staruml导入java文件生成 staruml如何导出_staruml导入java文件生成_02

在这个目录,打开终端工具,使用【asar】进行反编译。

asar extract app.asar app

个人遇到的问题
报错权限问题,这是因为要统计的是C盘即系统盘的信息,所以需要管理员权限才能调用。

internal/fs/utils.js:307 throw err; ^ Error: EPERM: operation not permitted,

解决

以管理员身份打开终端工具。【CMD】或者【Windows PowerShell】

反编译完以后,可以看到这里多了一个叫app的文件夹,这里就是这个软件的源代码。

staruml导入java文件生成 staruml如何导出_staruml导入java文件生成_03

4 修改源码

4.1 解决验证许可

打开 【app\src\engine\license-manager.js】 文件。在183行,进行两处修改。

  1. 注释一行
  2. 修改一行
// 修改验证许可的方法,使其验证成功,不提示
checkLicenseValidity () {
  if (packageJSON.config.setappBuild) {
    setStatus(this, true)
  } else {
    this.validate().then(() => {
      setStatus(this, true)
    }, () => {
      setStatus(this,true)               // 原本是false,改成true
      // UnregisteredDialog.showDialog() // 注释掉
    })
  }
}

4.2 禁用版本自动更新

修改 【app/src/app-context.js】中的【appReady】方法,注释部分代码。代码在713行。

if (!this.config.setappBuild) {
	/* 禁用自动更新,注释掉此处if语句块
      if (this.preferences.get('checkUpdate.checkUpdateOnStart')) {
        ipcRenderer.send('check-update')
      }
	*/
 }

4.3 重新打包源码

修改了源码,需要重新打包源码。生效修改的部分。运行以下命令:

asar pack app app.asar

重新打开 StarUML,【不提示需要注册和没有 Unregistered 标识】则表示破解成功。

5 汉化

汉化非程序员必须,建议还是使用英文界面

网上没有找到StarUML 5.0.2版本的汉化包,所以只能自己手动汉化了,汉化不是一个技术活,而是苦力活,只是将对应文件里的英文换成中文而已!
关闭StarUML,还是来到上面的app文件夹里面

  • 常量字符串,主要在src/strings.js中。(这些会作为常量主要在src中的各个模块使用)
  • 菜单,主要在resources/default/menus/*.json中。(扩展和插件目录的menus应该也会被识别为菜单项)
  • 首选项,主要在resources/default/preferences/default.json中。(扩展和插件目录的preferences应该也会被识别为首选项)
  • 规则验证提醒消息,主要在resources/default/rules.js中的message:提醒消息中。(扩展和插件目录的rules.js应该也会被识别为规则)
  • 窗口页面,主要在src\static\html-contents。(StarUML应该是Electron这个js框架编写,其窗口是用HTML编写的)
  • 其他文件,包括Dialog, toast(这两个直接用vscode搜索Dialog, toast就可以),以及一些js文件中的英文等等
    以【resources/default/menus/win32.json】为例

    文本编辑器打开修改
    【英文版】
{
  "menu": [
    {
      "label": "File",
      "id": "file",
      "submenu": [
        { "label": "New", "id": "file.new", "command": "application:new" },
        { "label": "New From Template", "id": "file.new-from-template", "command": "application:new-from-template" },
        { "label": "Open...", "id": "file.open", "command": "project:open" },
        { "label": "Open Recent", "id": "file.open-recent", "submenu": [] },
        { "label": "Save", "id": "file.save", "command": "project:save" },
        { "label": "Save As...", "id": "file.save-as", "command": "project:save-as" },
        { "label": "Close", "id": "file.close", "command": "project:close" },
        { "type": "separator" },
        {
          "label": "Import",
          "id": "file.import",
          "submenu": [
            { "label": "Fragment...", "id": "file.import.fragment", "command": "project:import-fragment" }
          ]
        },
        {
          "label": "Export",
          "id": "file.export",
          "submenu": [
            { "label": "Fragment...", "id": "file.export.fragment", "command": "project:export-fragment" }
          ]
        },
        ...
     }
  ]
}

【中文版】修改

将label后面的英文改为中文即可

{
  "menu": [
    {
      "label": "文件",
      "id": "file",
      "submenu": [
        { "label": "新建", "id": "file.new", "command": "application:new" },
        { "label": "模板中新建", "id": "file.new-from-template", "command": "application:new-from-template" },
        { "label": "打开...", "id": "file.open", "command": "project:open" },
        { "label": "打开最近", "id": "file.open-recent", "submenu": [] },
        { "label": "保存", "id": "file.save", "command": "project:save" },
        { "label": "另存为...", "id": "file.save-as", "command": "project:save-as" },
        { "label": "关闭", "id": "file.close", "command": "project:close" },
        { "type": "separator" },
        {
          "label": "导入",
          "id": "file.import",
          "submenu": [
            { "label": "Fragment...", "id": "file.import.fragment", "command": "project:import-fragment" }
          ]
        },
        {
          "label": "导出",
          "id": "file.export",
          "submenu": [
            { "label": "Fragment...", "id": "file.export.fragment", "command": "project:export-fragment" }
          ]
        },
        ...
     }
  ]
}

重新打包

运行打包命令

asar pack app app.asar

staruml导入java文件生成 staruml如何导出_PowerShell_04