前言:由于typora在1.0版本正式推出后以前的beta版本都会弹出错误提示“This beta version of Typora is expired, please download and install a newer version.”导致必须升级正式版本付费使用,本次内容教大家如何跳过beta版本的提示信息继续使用typora
1、下载beta版本typroa并安装
地址:https://github.com/Light-of-Fireworks/typroa_bata_0.11
2、下载typoraCracker解包/打包工具
注意:typoraCracker使用python语言编写,请提前安装好python3环境
地址:https://github.com/Light-of-Fireworks/typoraCracker
3、解压typoraCracker,并在typoraCracker根目录下打开cmd
4、解压typora资源
python typora.py C:/Users/Administrator/AppData/Local/Programs/Typora/resources/app.asar ./out
注:C:/Users/Administrator/AppData/Local/Programs/Typora代表的是你安装typora的路径,不清楚的可以右键typora图标选择打开文件所在位置即可 ./out意思是解压至当前目录的out目录下,即会在当前目录下创建一个名为out的目录并解码app.asar文件
注意!!! app.asar的位置必须是你typroa安装位置,不可以将app.asar复制到其他地方进行解码,必须解码typroa安装位置的app.asar,因为需要解码的不止是app.asar,还有其他拓展文件
5、修改License.js
打开刚刚生成的out\dec_app目录,可以看到一个License.js文件,使用文本编辑器进行编辑,可以使用idea等工具进行格式化后查看源代码。
其中可以使用Ctrl+F搜索”This beta version of Typora is expired, please download and install a newer version.”就可以看到如下代码
const firstValidateLicense = e => {
licenseInitialed = !0;
const t = readLicenseInfo(), {license: n, email: i} = t || {};
n && i ? (fillLicense(i, n), renewLicense(t, e)) : unfillLicense()
}, showDialog = (e, t) => electron.dialog.showMessageBox(null, {
type: "error",
buttons: ["OK"],
defaultId: 0,
cancelId: 0,
title: e,
message: t
}), endDevTest = function () {
app.expired = !0, showDialog(Dict.getPanelString("Error"), Dict.getPanelString("This beta version of Typora is expired, please download and install a newer version.")).then(() => {
shell.openExternal("https://typora.io/#download"), setTimeout(() => {
process.exit(1)
}, 1e3)
})
}, validateDevTest = function () {
if (!hasLicense && !isLinux && global.devVersion && global.PRODUCTION_MODE) {
var e = getInstallDate(), t = new Date;
console.log("buildTime is 1637125121389"), (isNaN(1637125121389) || t - 1637125121389 > 20736e6) && endDevTest(), e -= 0, console.log("verInitTime is " + e), !isNaN(e) && t - e > 1728e7 && endDevTest()
}
}, showLicensePanelIfNeeded = function () {
shouldShowNoLicenseHint(!0) && !app.setting.inFirstShow && (isLinux && Math.random() < .95 || (!lastShown || new Date - lastShown > 18e6 || getTrailRemains(!0, 30) <= 0) && showLicensePanel())
};
其中validateDevTest方法会验证版本是否过期
5.1函数释义:
endDevTest 函数用于显示一个对话框,提示用户下载并安装更新版本。然后,它会打开 Typora 的下载页面,并在 1 秒后退出程序。
validateDevTest 函数用于检查开发版本的有效性。如果没有许可证且不是 Linux 系统,则会检查安装日期和构建时间。如果超过了指定时间,则调用 endDevTest 函数。
5.2代码释义(validateDevTest ):
console.log(“buildTime is 1637125121389”):打印typora构建日期
(isNaN(1637125121389) || t - 1637125121389 > 20736e6) && endDevTest():查构建时间是否为数字(使用 isNaN 函数),并检查当前时间与构建时间之差是否大于 20736e6 毫秒(约 240 天)。如果满足这些条件之一,则调用 endDevTest 函数。
20736e6 是科学计数法的表示方法,它等于 20736 * 10^6,也就是 20736000000约 240 天。
console.log(“verInitTime is “ + e), !isNaN(e) && t - e > 1728e7 && endDevTest():使用 console.log 函数打印安装日期 e,然后检查安装日期是否为数字(使用 isNaN 函数),并检查当前时间 t 与安装日期之差是否大于 1728e7 毫秒(约 200 天)。如果满足这些条件,则调用 endDevTest 函数。
1728e7 是科学计数法的表示方法,它等于 1728 * 10^7,也就是 17280000000约 200 天。
根据如上代码我们仅需要修改一处地方即可,即将validateDevTest函数返回true即可,这样endDevTest函数就不会被调用也就不会有提示框了。
修改代码如下:
validateDevTest = function () {
return true;
}
6、回编译
将我们修改好的dec_app目录重新打包为app.asar,命令如下(在typoraCracker根目录执行):
python typora.py -u ./out/dec_app .
注意最后面有一个小数点不要漏了,代表将dec_app回编译后的文件放置typoraCracker根目录
7、替换app.asar
将编译好的typoraCracker/app.asar替换C:/Users/Administrator/AppData/Local/Programs/Typora/resources/app.asar后重新打开typora即可使用