创建IDE检查与版本检查方案

2026-03-26 12:50:57 +08:00
parent b8df841e91
commit fe4f56497c
3 changed files with 67 additions and 1 deletions

@@ -12,4 +12,4 @@ IDE 卡片中,蓝色的框是该 IDE 的可执行路径。对于 `where.exe`
更新完成后Toolbox 会重新完整保存数据,此后工具箱理论上也将恢复正常。 更新完成后Toolbox 会重新完整保存数据,此后工具箱理论上也将恢复正常。
这是 `JBTState.json` 方法的原理所致。 这是 `JBTState.json` 方法的原理所致,详请查看 [IDE 检查与版本检查方案](/Solution-IDECheckAndVersion.md)

@@ -0,0 +1,64 @@
# IDE 检查与版本检查方案
工具箱需要合理、高效的方案来检查有没有安装各 IDE以及已安装 IDE 的版本和最新版本。
## 已安装 IDE 检查方案
### where.exe
Windows 提供 `where` 命令来在系统的环境变量中查找指定名称的可执行文件或脚本。对于 PowerShell命令是 `where.exe`
例如,使用 `where.exe code` 可以查找 VSCode 的可执行路径,继而能够确认已安装 VSCode。如果没有找到该命令会报错即可确认没有安装 VSCode。
该方案需要已将 IDE 的安装目录配置到环境变量。VSCode 安装程序会自动完成配置,但 JetBrains IDEs 的独立安装程序似乎不会,因此该方案对 JetBrains IDEs 的查找能力有限。
### JBTState.json
是我自己起的名字,是 `JetBrains Toolbox state.json` 的简称。
[JetBrains Toolbox](https://www.jetbrains.com.cn/toolbox-app/) 是 JetBrains 推出的 JetBrains IDEs 管理工具如其名。Toolbox 会在你的 Windows 用户数据目录下保存数据,其中名为 `state.json` 的文件中存储了由 Toolbox 管理的 JetBrains IDEs 的数据。
![](/images/JetBrainsToolbox-UpdatingIDE.png)
具体来说,我通过以下代码获取这个文件的存在路径:
```typescript
const JETBRAINS_TOOLBOX_STATE_JSON_PATH = path.join(
os.homedir(),
'AppData/Local/JetBrains/Toolbox/state.json'
)
```
每当 Toolbox 安装、更新、卸载 JetBrains IDE 时,这个文件都会由 Toolbox 更新。因此,从此文件可以准确地检查已安装的 JetBrains IDEs。
### JetBrains 小品一则
在安装 JetBrains Toolbox 和任意 JetBrains IDE 之后,例如 IntelliJ IDEA然后运行 `where.exe idea`,你将得到 IDEA 的可执行路径。这是 Toolbox 在数据目录下维护的 JetBrains IDEs 启动脚本Toolbox 会将脚本目录添加到系统环境变量中,从而允许你像使用 `code .` 一样使用 `idea .`,或其他 JetBrains IDEs。
因此,在安装 JetBrains Toolbox 之后,`where.exe` 方案也对 JetBrains IDEs 有效了。
### 全盘查找
开发中。
## IDE 版本检查方案
检查已安装的 IDE 的版本与对应的最新版本,从而判断是否可以更新。检查过程不可避免地需要访问网络接口。
### Visual Studio Code
VSCode 的版本列表接口为 `https://update.code.visualstudio.com/api/releases/stable`。接口返回一个简单的字符串列表,每一项都是 VSCode 版本号,其中第一个就是最新版本了。
然后,只需要通过 `code --version`,从输出中提取已安装版本号。
### JetBrains IDEs
JetBrains IDEs 的版本数据接口为 `https://data.services.jetbrains.com/products`。该接口返回的数据非常庞大且复杂,并且没有接口文档。
根据经验,传递查询参数 `type=release` 可以只获取正式版的版本数据,`code=IU` 可以只获取 IDEA 的版本数据,其他参数组合暂不知晓。
然后,想要获取已安装的 JetBrains IDEs 的版本则存在困难。
* 如果使用 JetBrains Toolbox那么 `state.json` 中会记录每个 JetBrains IDE 的版本。
* 否则,需要前往每个 JetBrains IDE 的安装目录,读取其中的数据文件,或以 `--version` 参数调用其中的**脚本**。
* JetBrains Toolbox 生成的脚本**无法通过传入 `--version` 来获取版本**。

@@ -1,5 +1,7 @@
* [百科主页](/Home.md) * [百科主页](/Home.md)
* **结构** * **结构**
* [基本 Electron 架构](/Structure-BasicElectronApp.md) * [基本 Electron 架构](/Structure-BasicElectronApp.md)
* **方案**
* [IDE 检查与版本检查](/Solution-IDECheckAndVersion.md)
* **问题** * **问题**
* [IDE 检查与版本检查](/Problem-IDECheckAndVersion.md) * [IDE 检查与版本检查](/Problem-IDECheckAndVersion.md)