- Published on
vfox你也许值得拥有的开发环境管理器
在windows上管理开发环境
在管理多个不同版本sdk的时候,asdf是一个不错的工具!
在macos和linux上管理nodejs, java, rust等不同语言的开发环境,省去了同时安装nvm,sdkman等多个sdk管理软件的工夫。
但是!作为开发环境同时散布在windows,linux,macos三个平台上的笨蛋开发者,asdf就不太够用了,毕竟它不支持windows
一番搜索,发现了vfox这只小狐狸!
vfox初见
文档非常完善, 安装使用都非常方便。
得益于插件基于lua开发,在windows上也可以运行。
安装vfox
winget vfox
安装插件
vfox add nodejs
安装sdk
# 直接安装
vfox install nodejs@22.14.0
或者...
搜索版本vfox search nodejs
后再安装
切换sdk
vfox use nodejs@22
开发插件
因为平时在使用的vagrant管理本地虚拟机环境,就想用vfox安装vagrant,发现还没有这个插件
🥲也是,lua脚本相比shell脚本还是太小众了,你看看隔壁asdf,插件数量直接起飞
还好开发一个插件也不复杂,手搓一个算了
初始化
vfox提供插件模板vfox-plugin-template
创建后,可以看到, 只要支持几个预设的hook就可以使用了
为了本地开发方便, 我们使用软链接,把本地插件放到vfox的插件目录下
New-Item -ItemType SymbolicLink -Path "C:\Users\11633\.version-fox\vagrant" -Target "$(PluginDirectoryPath)"
查看插件有没有正常显示
vfox list
踩坑
查看vagrant发布页面vagrant-release, 实现搜索功能还是很简单的
可惜,vagrant在windows和macos下只提供exe和dmg安装包,常规下载binary并添加环境变量的方式就不行了
但是煤油关系, 我们可以用os.exec
直接执行cmd命令来运行软件包来安装呀🤔
-- /qn 静默安装
-- /L*V 设置日志
local install_cmd = "sudo msiexec.exe /i INSTALLER /qn /norestart /L*V INSTALL_PATH"
os.exec(install_cmd)
然后光速安装失败🥲
定位问题
TIP
- 静默安装失败可以把/qn静默关掉,一边运行图形化安装程序,一边查看安装日志
- 在安装的时候,如果想查看更多参数,也可以用orca工具查看软件包提供的设置参数
查看安装日志发现,首先LicenseAccepted值没有设置为1, 在图形界面下,我们会在对话框里点击接受软件协议许可,那我们就把property加上,
local property = "LicenseAccepted=1 INSTALLDIR=..."
再次尝试安装,还是失败了,发现是权限问题,在图形界面下,安装器会请求管理员权限,跳出弹窗
这个时候有两种方法可以解决权限问题,使用提权脚本或者是sudo for windows
提权脚本实在是有点长,就暂时选择了sudo for windows的方案
缺点是比较旧版本的windows就使用不了了
安装sudo for windows
安装指南见https://learn.microsoft.com/en-us/windows/sudo/
使用
sudo notepad.exe
可以看到弹出的UAC确认窗口
在windows上安装脚本
vfox install vagrant@2.4.3
安装成功
# 设置版本
vfox use vagrant@2.4.3
# 确认版本已切换
vfox list
# All installed sdk versions
# ├─┬dotnet
# │ └──v8.0.13
# ├─┬java
# │ └──v8.0.342+7
# ├─┬maven
# │ └──v3.9.9
# ├─┬nodejs
# │ ├──v22.14.0
# │ ├──v18.20.8
# │ ├──v16.20.2
# │ └──v14.21.3
# └─┬vagrant
# └──v2.4.3
vagrant -v
# Vagrant 2.4.3
最后
vfox作为一个跨平台的管理软件,还是非常优秀的,作为全栈开发使用起来非常方便,暂时还没有发现什么问题。
不过对于非binary的软件要开发插件,还是需要一番折腾😣
可能的优化
- 开发者体验优化:提供命令本地link插件
- 用户体验:声明式的配置用于新机器的初始化安装