Home Telegram Scroll Top

Jetbrains系列产品重置试用方法[归档]

本站惯例:本文假定你知道Jetbrains家的产品。不知道可以问问搜索引擎。

没错,jetbrains-agent这个项目停止了。市面上漫天飞的各种最新都是其他大神的魔改版本。[/斜眼]
我不是要专门写个博文来说明jetbrains-agent项目已经停止,然后缅怀感叹一番。这篇文章是想和大家聊聊另一种思路

本项目已过时,自2021.2.3开始不再推荐使用。请支持正版!

0x0. 项目背景

Jetbrains家的产品有一个很良心的地方,他会允许你试用30天(这个数字写死在代码里了)以评估是否你真的需要为它而付费。
但很多时候会出现一种情况:IDE并不能按照我们实际的试用时间来计算。
我举个例子:如果我们开始了试用,然后媳妇生孩子要你回去陪产!陪产时我们并无空闲对IDE试用评估,它依旧算试用时间。(只是举个例子,或许你并没有女朋友)
发现了吗?你未能真的有30天来对它进行全面的试用评估,你甚至无法作出是否付费的决定。此时你会想要延长试用时间,然而Jetbrains并未提供相关功能,该怎么办?

事实上有一款插件可以实现这个功能,你或许可以用它来重置一下试用时间。但切记不要无休止的一直试用,这并不是这个插件的本意!

0x1. 如何安装

1). 插件市场安装:

  • Settings/Preferences... -> Plugins 内手动添加第三方插件仓库地址:https://plugins.zhile.io
  • 搜索:IDE Eval Reset插件进行安装。如果搜索不到请注意是否做好了上一步?网络是否通畅?
  • 插件会提示安装成功。

2). 下载安装:

  • 点击这个链接(v2.3.5)下载插件的zip包(macOS可能会自动解压,然后把zip包丢进回收站)
  • 通常可以直接把zip包拖进IDE的窗口来进行插件的安装。如果无法拖动安装,你可以在Settings/Preferences... -> Plugins 里手动安装插件(Install Plugin From Disk...
  • 插件会提示安装成功。

0x2. 如何使用

  • 一般来说,在IDE窗口切出去或切回来时(窗口失去/得到焦点)会触发事件,检测是否长时间(25天)没有重置,给通知让你选择。(初次安装因为无法获取上次重置时间,会直接给予提示)
  • 也可以手动唤出插件的主界面:
    • 如果IDE没有打开项目,在Welcome界面点击菜单:Get Help -> Eval Reset
    • 如果IDE打开了项目,点击菜单:Help -> Eval Reset
  • 唤出的插件主界面中包含了一些显示信息,2个按钮,1个勾选项:
    • 按钮:Reload 用来刷新界面上的显示信息。
    • 按钮:Reset 点击会询问是否重置试用信息并重启IDE。选择Yes则执行重置操作并重启IDE生效,选择No则什么也不做。(此为手动重置方式)
    • 勾选项:Auto reset before per restart 如果勾选了,则自勾选后每次重启/退出IDE时会自动重置试用信息,你无需做额外的事情。(此为自动重置方式)
  • 如果你的IDE已经过了试用打不开,可以运行这个临时重置脚本(注意选择对应系统版本),它可以让你暂时进入IDE进行上述操作。(登录试用版本不适用,见下文)

0x3. 如何更新

1). 插件更新机制(推荐):

  • IDE会自行检测其自身和所安装插件的更新并给予提示。如果本插件有更新,你会收到提示看到更新日志,自行选择是否更新。
  • 点击IDE的Check for Updates... 菜单手动检测IDE和所安装插件的更新。如果本插件有更新,你会收到提示看到更新日志,自行选择是否更新。
  • 插件更新可能会需要重启IDE

2). 手动更新:

  • 从本页面下载最新的插件zip包安装更新。参考本文:下载安装小节。
  • 插件更新需要重启IDE

0x4. 一些说明

  • 本插件默认不会显示其主界面,如果你需要,参考本文:如何使用小节。
  • 市场付费插件的试用信息也会一并重置
  • MyBatisCodeHelperPro插件有两个版本如下,功能完全相同,安装时须看清楚!
  • 对于某些付费插件(如: Iedis 2, MinBatis)来说,你可能需要去取掉javaagent配置(如果有)后重启IDE:
    • 如果IDE没有打开项目,在Welcome界面点击菜单:Configure -> Edit Custom VM Options... -> 移除 -javaagent: 开头的行。
    • 如果IDE打开了项目,点击菜单:Help -> Edit Custom VM Options... -> 移除 -javaagent: 开头的行。
  • 重置需要重启IDE生效
  • 重置后并不弹出Licenses对话框让你选择输入License或试用,这和之前的重置脚本/插件不同(省去这烦人的一步)。
  • 如果长达25天不曾有任何重置动作,IDE会有通知询问你是否进行重置。
  • 如果勾选:Auto reset before per restart ,重置是静默无感知的。
  • 简单来说:勾选了Auto reset before per restart则无需再管,一劳永逸。

0x5. 新试用机制

  • 最新的IDE试用需要登录,我们可以任选以下方式中的一种来继续使用重置插件:
    1. 使用网络上热心大佬收集总结的key,进入IDE后使用重置插件。
    2. 登录账号试用IDE,安装设置好本插件,退出登录账号重启IDE即可。
    3. 先安装旧版本IDE,安装设置好本插件,升级IDE到最新版本即可。
  • 不管哪种方法原理都是为了让你进入IDE,以便重置插件接管试用。
  • 2021.3已经彻底不支持离线试用,本重置插件已失效。可以考虑暂缓升级至2021.3!

0x6. 开源信息

  • 插件是学习研究项目,源代码是开放的。源码仓库地址:Gitee
  • 如果你有更好的想法,欢迎给我提Pull Request来共同研究完善。
  • 插件源码使用:GPL-2.0开源协议发布。
  • 插件使用PHP编写,毕竟PHP是世界上最好的编程语言!

0x7. 支持的产品

  • IntelliJ IDEA
  • AppCode
  • CLion
  • DataGrip
  • GoLand
  • PhpStorm
  • PyCharm
  • Rider
  • RubyMine
  • WebStorm

下面是国际惯例:

本项目只做个人学习研究之用,不得用于商业用途!
若资金允许,请点击链接购买正版,谢谢合作!
学生凭学生证可免费申请正版授权!
创业公司可5折购买正版授权!

分享本文到:

45 评论

回复 虾饺取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注


  1. 一群人都不仔细看博客,却知道用评论?无需登录帐号就能直接试用 30 天的最后版本:

    CLion v2021.2.2: https://download.jetbrains.com/cpp/CLion-2021.2.2.tar.gz
    DataGrip v2021.2.2: https://download.jetbrains.com/datagrip/datagrip-2021.2.2.tar.gz
    GoLand v2021.2.3: https://download.jetbrains.com/go/goland-2021.2.3.tar.gz
    IntelliJ v2021.2.2: https://download.jetbrains.com/idea/ideaIU-2021.2.2.tar.gz
    PhpStorm v2021.2.2: https://download.jetbrains.com/webide/PhpStorm-2021.2.2.tar.gz
    PyCharm v2021.2.2: https://download.jetbrains.com/python/pycharm-professional-2021.2.2.tar.gz
    Rider v2021.2.2: https://download.jetbrains.com/rider/JetBrains.Rider-2021.2.2.tar.gz
    RubyMine v2021.2.2: https://download.jetbrains.com/ruby/RubyMine-2021.2.2.tar.gz
    WebStorm v2021.2.2: https://download.jetbrains.com/webstorm/WebStorm-2021.2.2.tar.gz

  2. 我现在主要是用来学习,学会了我肯定会使用正版,必经做一个项目最不希望看到出问题.一个月事件对我来说太短.自从我用了这个文件,不用他.我的idea都打不开,用了,在测试中一值有问题,又不知哪里有 问题.

  3. 其实大家平时都没时间评估,都想延长一下下试用时间方便我们以后付费试用,楼主大概就是这个初衷吧,感谢~

  4. PyCharm 2022.2.3 (Professional Edition)
    Build #PY-222.4345.23, built on October 10, 2022
    Licensed to Heng Da
    订阅有效期至 2022年11月24日。
    Evaluation purpose only.
    Runtime version: 17.0.4.1+7-b469.62 x86_64
    VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
    macOS 10.15.7
    GC: G1 Young Generation, G1 Old Generation
    Memory: 2048M
    Cores: 8
    Metal Rendering is ON
    Non-Bundled Plugins:
    io.zhile.research.ide-eval-resetter (2.3.5)
    com.intellij.zh (222.202)
    重置时报错java.lang.NoClassDefFoundError: com/intellij/ide/util/PropertiesComponentImpl
    at io.zhile.research.intellij.ier.common.Resetter.getEvalRecords(Resetter.java:72)
    at io.zhile.research.intellij.ier.ui.form.MainForm.reloadRecordItems(MainForm.java:134)
    at io.zhile.research.intellij.ier.ui.form.MainForm.getContent(MainForm.java:99)
    at io.zhile.research.intellij.ier.tw.MainToolWindowFactory.createToolWindowContent(MainToolWindowFactory.java:23)
    at com.intellij.openapi.wm.impl.ToolWindowImpl.createContentIfNeededintellij_platform_ide_impl(ToolWindowImpl.kt:533)
    at com.intellij.openapi.wm.impl.ToolWindowImpl.scheduleContentInitializationIfNeeded
    intellij_platform_ide_impl(ToolWindowImpl.kt:512)
    at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.doShowWindow(ToolWindowManagerImpl.kt:923)
    at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.showToolWindowImpl(ToolWindowManagerImpl.kt:863)
    at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.showToolWindowImpldefault(ToolWindowManagerImpl.kt:852)
    at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.registerToolWindow
    intellij_platform_ide_impl(ToolWindowManagerImpl.kt:1026)
    at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.initToolWindowintellij_platform_ide_impl(ToolWindowManagerImpl.kt:481)
    at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.initToolWindow(ToolWindowManagerImpl.kt:462)
    at io.zhile.research.intellij.ier.action.ResetAction.actionPerformed(ResetAction.java:56)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.doPerformActionOrShowPopup(ActionUtil.java:315)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.lambda
    performActionDumbAwareWithCallbacks4(ActionUtil.java:294)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:337)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(ActionUtil.java:294)
    at com.intellij.openapi.fileEditor.impl.IdeUiServiceImpl.performActionDumbAwareWithCallbacks(IdeUiServiceImpl.java:109)
    at com.intellij.notification.Notification.fire(Notification.java:288)
    at com.intellij.notification.impl.NotificationsManagerImpl.lambda
    createAction11(NotificationsManagerImpl.java:841)
    at com.intellij.ui.components.labels.LinkLabel.doClick(LinkLabel.java:174)
    at com.intellij.ui.components.labels.LinkLabel.doClick(LinkLabel.java:388)
    at com.intellij.ui.components.labels.LinkLabel
    MyMouseHandler.mouseReleased(LinkLabel.java:361)
    at java.desktop/java.awt.Component.processMouseEvent(Component.java:6648)
    at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3392)
    at java.desktop/java.awt.Component.processEvent(Component.java:6413)
    at java.desktop/java.awt.Container.processEvent(Container.java:2266)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5022)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2802)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:781)
    at java.desktop/java.awt.EventQueue4.run(EventQueue.java:730)
    at java.desktop/java.awt.EventQueue
    4.run(EventQueue.java:724)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomainJavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.base/java.security.ProtectionDomain
    JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
    at java.desktop/java.awt.EventQueue5.run(EventQueue.java:754)
    at java.desktop/java.awt.EventQueue
    5.run(EventQueue.java:752)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomainJavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:751)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:918)
    at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:840)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:763)
    at com.intellij.ide.IdeEventQueue.lambda
    dispatchEvent6(IdeEventQueue.java:450)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:791)
    at com.intellij.ide.IdeEventQueue.lambda
    dispatchEvent7(IdeEventQueue.java:449)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113)
    at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:624)
    at com.intellij.ide.IdeEventQueue.lambda
    dispatchEvent$8(IdeEventQueue.java:447)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:881)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:493)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
    Caused by: java.lang.ClassNotFoundException: com.intellij.ide.util.PropertiesComponentImpl PluginClassLoader(plugin=PluginDescriptor(name=IDE Eval Reset, id=io.zhile.research.ide-eval-resetter, descriptorPath=plugin.xml, path=~/Library/Application Support/JetBrains/PyCharm2022.2/plugins/ide-eval-resetter, version=2.3.5, package=null, isBundled=false), packagePrefix=null, instanceId=16, state=active)
    at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:214)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    … 64 more