Zigm是一个用C#开发的Zig语言版本管理工具,类似于nvm或pyenv,旨在帮助开发者轻松下载、安装和管理不同版本的Zig编译器。通过Zigm,你可以快速切换不同版本的Zig,方便进行版本测试和兼容性验证。
- ✅ 自动检测当前系统架构和操作系统
- ✅ 支持官方Zig JSON API获取版本信息
- ✅ 支持系统已安装Zig的检测(包括Windows非环境变量安装)
- ✅ 支持多版本Zig的安装和管理
- ✅ 支持通过环境变量快速切换Zig版本
- ✅ 支持多语言(中文、英文、繁体中文)
- ✅ AOT兼容的JSON序列化
- ✅ 配置文件本地化到程序目录
- ✅ 交互式命令行界面
- ✅ 支持系统级和用户级环境变量设置
| 平台 | 最低要求 | 推荐配置 |
|---|---|---|
| Windows | Windows (Aot 支持版本,跟随.Net Aot) | Windows 11 |
| Linux | Ubuntu (Aot 支持版本,跟随.Net Aot) | Ubuntu 22.04+ |
| macOS | macOS (Aot 支持版本,跟随.Net Aot) | macOS 14+ |
| .NET | .NET 10.0 | .NET 10.0+ |
| 架构 | x64 | x64/arm64 |
- 从GitHub Releases下载对应平台的发布包
- 解压到任意目录
- 将解压目录添加到系统PATH环境变量
- 运行
zigm help验证安装成功
# 克隆项目
git clone <repository-url>
cd Zigm
# 编译项目
dotnet build -c Release
# 发布可执行文件
dotnet publish -c Release -r <runtime-identifier> --self-contained true
# 示例:发布Windows x64版本
dotnet publish -c Release -r win-x64 --self-contained true| 平台 | 架构 | 运行时标识符 |
|---|---|---|
| Windows | x64 | win-x64 |
| Windows | arm64 | win-arm64 |
| Linux | x64 | linux-x64 |
| Linux | arm64 | linux-arm64 |
| macOS | x64 | osx-x64 |
| macOS | arm64 | osx-arm64 |
zigm helpzigm listzigm install 0.12.0# 用户级切换(仅当前用户)
zigm use 0.12.0
# 系统级切换(所有用户,需要管理员权限)
zigm use 0.12.0 --systemzigm currentzigm startzigm start- 启动基于控制台的交互式菜单
- 支持使用上下箭头键选择操作
- 支持所有命令行功能的可视化操作
zigm list- 获取并显示所有可用的Zig稳定版本
- 自动过滤当前系统和架构支持的版本
- 显示版本号和版本类型
zigm ls- 显示所有已安装的Zig版本
- 标记当前正在使用的版本
- 显示系统中检测到的Zig版本(非Zigm管理)
zigm install <version>- 下载并安装指定版本的Zig
- 自动选择适合当前系统的安装包
- 支持语义化版本号
示例:
zigm install 0.12.0
zigm install 0.11.0zigm use <version> [--system]- 切换到指定的Zig版本
- 更新环境变量PATH以使用指定版本
--system选项:设置系统级环境变量(需要管理员权限)
示例:
# 用户级切换
zigm use 0.12.0
# 系统级切换
zigm use 0.12.0 --systemzigm uninstall <version>- 卸载指定版本的Zig
- 自动清理相关文件
- 如果卸载当前版本,会清除版本设置
示例:
zigm uninstall 0.11.0zigm current- 显示当前正在使用的Zig版本
- 如果未设置,显示提示信息
zigm update- 检查并更新Zigm到最新版本
- 自动下载并替换当前可执行文件
zigm config [show|set|reset]- 管理Zigm的配置设置
子命令:
show:显示当前配置set <key> <value>:设置配置项reset:重置配置为默认值
示例:
# 显示配置
zigm config show
# 设置语言为英文
zigm config set Language en
# 设置下载超时为120秒
zigm config set DownloadTimeout 120
# 重置配置
zigm config resetzigm help- 显示所有支持的命令和描述
- 提供使用示例
配置文件位于程序目录下的 ZigmConfig 文件夹中:
- Windows:
[程序目录]\ZigmConfig\config.json - Linux/macOS:
[程序目录]/ZigmConfig/config.json
| 配置项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| StoragePath | string | ZigmConfig/zig-versions |
Zig版本存储目录 |
| AutoCheckUpdates | bool | true |
是否自动检查Zigm更新 |
| CurrentVersion | string | null |
当前使用的Zig版本 |
| DownloadTimeout | int | 300 |
下载超时时间(秒) |
| DefaultSource | string | official |
默认的Zig版本源 |
| DownloadSource | string | https://ziglang.org/download/ |
下载源URL(可设置镜像源) |
| Language | string | null |
界面语言设置 |
{
"StoragePath": "C:\\Program Files\\Zigm\\ZigmConfig\\zig-versions",
"AutoCheckUpdates": true,
"CurrentVersion": "0.12.0",
"DownloadTimeout": 300,
"DefaultSource": "official",
"DownloadSource": "https://ziglang.org/download/",
"Language": "zh-Hant"
}- 中文(默认,zh-CN)
- 英文(en, en-US)
- 繁体中文(zh-Hant)
# 切换到英文
zigm config set Language en
# 切换到繁体中文
zigm config set Language zh-Hant
# 恢复默认语言(中文)
zigm config set Language zh-CN- 如果未设置Language配置项,系统会自动使用当前操作系统的语言设置
- 支持的语言会自动切换,不支持的语言会使用默认语言(中文)
- 自动检测系统中已安装的Zig版本
- 显示在
zigm ls命令的输出中 - 支持检测Windows注册表中的Zig安装(非环境变量)
- 自动更新系统PATH环境变量
- 支持用户级和系统级环境变量设置
- 安装完成后立即生效
- 使用Zig官方提供的JSON API获取版本信息
- 确保版本信息的准确性和可靠性
- 自动过滤适合当前系统的版本
- 使用System.Text.Json源生成实现AOT兼容
- 支持发布独立可执行文件
- 减少运行时依赖
- 配置文件存储在程序目录下,不占用系统磁盘空间
- 便于迁移和备份
- 避免用户C盘堆积
Zigm/
├── ArgsConstant/ # 命令行参数定义
│ └── ArgsFirst.cs # 主参数处理类
├── Doc/ # 文档目录
│ ├── README.md # 中文文档
│ └── README-en.md # 英文文档
├── Helpers/ # 工具类
│ └── SystemHelper.cs # 系统辅助功能
├── Interactive/ # 交互式界面
│ └── InteractiveMenu.cs # 交互式菜单实现
├── Languages/ # 多语言资源
│ ├── AppLang.Designer.cs # 资源设计器
│ ├── AppLang.en-US.resx # 英文资源(US)
│ ├── AppLang.en.resx # 英文资源
│ ├── AppLang.resx # 中文资源
│ └── AppLang.zh-Hant.resx # 繁体中文资源
├── Models/ # 数据模型
│ ├── Config.cs # 配置模型
│ ├── ConfigJsonContext.cs # 配置JSON上下文(AOT)
│ ├── ZigJsonContext.cs # Zig版本JSON上下文(AOT)
│ └── ZigVersion.cs # Zig版本模型
├── Services/ # 业务服务
│ ├── ConfigService.cs # 配置服务
│ ├── EnvironmentService.cs # 环境变量服务
│ ├── LocalStorageService.cs # 本地存储服务
│ ├── SystemZigService.cs # 系统Zig检测服务
│ ├── ZigInstallerService.cs # Zig安装服务
│ ├── ZigVersionService.cs # Zig版本服务
│ └── ZigmUpdaterService.cs # Zigm更新服务
├── Program.cs # 主入口文件
└── Zigm.csproj # 项目配置文件
- 检查网络连接是否正常
- 确保有权限写入安装目录
- 尝试修改DownloadTimeout配置项增加超时时间
- 查看详细错误信息并报告
- 关闭并重新打开终端窗口
- 检查环境变量是否正确设置
- 尝试使用管理员权限运行切换命令
zigm config set DownloadSource <mirror-url>- 重新运行Zigm,会自动生成默认配置文件
- 使用
zigm config reset重置配置
- 删除Zigm程序目录
- 删除环境变量中的Zigm路径
- 删除ZigmConfig文件夹
欢迎提交Issue和Pull Request来帮助改进Zigm!
- Fork项目仓库
- 创建特性分支
- 提交更改
- 推送分支
- 提交Pull Request
本项目采用MIT许可证,详见LICENSE文件。
- 初始版本
- 支持基本的Zig版本管理功能
- 交互式界面支持
- 多语言支持
- 系统Zig检测
- AOT兼容
如有问题或建议,欢迎通过以下方式联系:
- GitHub Issues:
Zigm - 让Zig版本管理更简单!