文章目录
- 感谢
- 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 汉化
注意:官网下载慢,并且不稳定,时常断掉连接。有需要可以留言,可以百度分享安装包。
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,因为在此系统上禁止
解决
- 在系统中搜索框 输入 【Windos PowerShell】,点击【管理员身份运行】
- 在终端界面直接输入【set-ExecutionPolicy RemoteSigned】回车运行
- 根据提示,同意执行策略修改;输入【Y】或者【A】,回车
- 再次执行【asar -v]测试。
3.2.2 反编译
安装好了反编译工具,就可以继续反编译操作了。
进入安装目录(上面有提到),找到文件夹【resources】
完整路径:
C:\Program Files\StarUML\resources
在这个目录,打开终端工具,使用【asar】进行反编译。
asar extract app.asar app
个人遇到的问题
报错权限问题,这是因为要统计的是C盘即系统盘的信息,所以需要管理员权限才能调用。
internal/fs/utils.js:307 throw err; ^ Error: EPERM: operation not permitted,
解决
以管理员身份打开终端工具。【CMD】或者【Windows PowerShell】
反编译完以后,可以看到这里多了一个叫app的文件夹,这里就是这个软件的源代码。
4 修改源码
4.1 解决验证许可
打开 【app\src\engine\license-manager.js】 文件。在183行,进行两处修改。
- 注释一行
- 修改一行
// 修改验证许可的方法,使其验证成功,不提示
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