news 2026/8/20 17:13:07

告别 gmad.exe:用 GMPublisher 三步搞定加里模组工坊发布

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
告别 gmad.exe:用 GMPublisher 三步搞定加里模组工坊发布

告别 gmad.exe:用 GMPublisher 三步搞定加里模组工坊发布

【免费下载链接】gmpublisher⚙️ Workshop Publishing Utility for Garry's Mod, written in Rust & Svelte and powered by Tauri项目地址: https://gitcode.com/gh_mirrors/gm/gmpublisher

做加里模组(Garry's Mod)内容的人,多少都经历过这样的画面:为了把一个插件传上创意工坊,得先记住gmad.exe怎么打、gmpublish.exe要配哪些参数,命令行一长串错一个字母就得重来;想下载别人的工坊合集,只能右键一个一个点订阅,再在本地翻找 GMA 文件;磁盘被几十个插件塞满,却根本不知道谁占了最大的地方。GMPublisher 就是冲着这些痛点来的——一个专门为加里模组打造的工坊发布与管理工具,用 Rust 写后端、Svelte 写界面、由 Tauri 打包成体积只有约 10MB 的跨平台桌面应用,Windows、macOS、Linux 都能跑,而且全程不依赖 Steam 官方那对命令行工具。

三步走:从拿到代码到看到界面

GMPublisher 的安装和启动分成两条路:普通用户直接下载成品,折腾派想自己编译。无论哪条路,走完都只需要三步。

第一步,拿到项目。

需要动手编译的话,先确保电脑上有 Node.js 和 Rust 环境,然后克隆仓库:

git clone https://gitcode.com/gh_mirrors/gm/gmpublisher cd gmpublisher

第二步,装依赖。

npm install

前端依赖装完后,别急着跑。项目在启动前还会执行一个额外的脚本——打开src-tauri/tauri.conf.json能看到beforeDevCommand里写着node src-tauri/copySharedLibs.js && npm run dev,它会先把 Steamworks 的动态库拷贝到合适位置,这是后面能连上 Steam 账户的关键一步,不用你手动干预。

第三步,启动开发环境。

npm run dev

Vite 会起一个本地服务,Tauri 随即打开 800×600 的窗口(最小也是这个尺寸),GMPublisher 的主界面就出来了。想打包成正式安装包,把命令换成npm run tauri build即可,产物会按tauri.conf.json里的配置生成 MSI 安装包或.app应用。

普通用户不用碰命令行。直接下载对应平台的 release 包安装,Arch Linux 用户甚至可以用 AUR 里的gmpublisher-bin一键安装,装完即用。

核心功能逐个击破:这六个能力最常用

GMPublisher 的功能都集中在左侧导航里,每个页面解决一类真实需求。下面按使用频率逐个拆开讲。

① 发布与更新:填表式的工坊上传体验

进入发布页,选择你的插件目录,GMPublisher 会自动做白名单校验(对应源码里的verify_whitelist),把不合规的文件挡在门外;然后填标题、描述、标签,选一张预览图,verify_icon会帮你确认图片格式和大小是否符合工坊要求,最后点发布。之后想改版本,直接在这个页面更新内容再走一遍流程即可,工坊条目 ID 会被记住,不用重新建条目。

② GMA 文件解压与浏览:双击即拆

GMA 是加里模组插件的打包格式。GMPublisher 内置了完整的 GMA 解析器(在src-tauri/src/gma/目录下),你可以直接浏览已安装插件的内部结构,查看预览图,甚至把任意.gma文件一键解压到指定目录。Windows 上还注册了文件关联,双击 GMA 文件就能直接拆包,再也不用为了拆个包去翻命令行。

③ 批量下载:工坊条目和合集整批拉取

下载页支持粘贴工坊链接或合集链接,自动识别里面的所有条目,然后排队下载并解压。源码里的workshop_download命令配合任务队列(src-tauri/src/steam/downloads.rs),下载和解压各用独立的工作线程池,可以同时跑多个任务,进度在界面上实时显示。

④ 插件体积分析:树状图一眼揪出"磁盘杀手"

AddonSizeAnalyzer页面会把所有已安装插件按体积画成树状图(treemap),色块越大占的空间越多,鼠标悬停还能看到对应的工坊信息。硬盘被塞满时,这一页能帮你快速定位该清理谁。

⑤ 动画 GIF 当封面图

别的工具往往只支持静态 JPG/PNG 预览图,GMPublisher 允许你上传 GIF 作为工坊图标,发布的条目自带动态效果,在商店列表里格外显眼。

⑥ 离线可用与 CLI 模式

有意思的是,GMPublisher 的很多功能并不依赖网络。GMA 解析、本地插件浏览、体积分析这些离线也能干。此外它内置了 CLI 接口:命令行传参启动时,程序会进入命令行模式而非打开窗口,目前支持解压 GMA,例如:

gmpublisher --extract myaddon.gma -o ./extracted

-o不填时默认解压到系统临时目录。这对脚本自动化来说是个不小的加分项。

分场景实战:三种人分别怎么用

场景一:你是插件作者,想发布新作品。

发布流程的核心其实是"少折腾"。你只需要在文件浏览器里选好项目目录,剩下的事情——白名单检查、图标校验、GMA 打包、工坊上传——都由界面引导完成。更新版本时无需重新经历整套流程,改完内容再发一次就行。

场景二:你是玩家,想批量搬运别人的合集。

去下载页,把合集链接粘进去,GMPublisher 自动把里面所有条目排进下载队列。下载完还能顺带解压到garrysmod/addons目录,省掉手动复制粘贴的环节。

场景三:你是清理强迫症,想看看磁盘都花在哪。

打开体积分析页,树状图上最大的那个色块就是该动手的目标。配合订阅管理页(Subscriptions)能直接看到你订阅了哪些插件、分别多大,删起来有据可依。

常见坑与避坑提醒

Q:发布时提示 Steam 未连接怎么办?

GMPublisher 通过 Steamworks SDK 与本地 Steam 客户端通信,先确认 Steam 正在运行且已登录。工具内部有is_steam_connected检查,界面会给出明确提示。

Q:Linux 上打不开?

部分发行版需要额外装系统依赖,Arch 系用户优先走 AUR 包,其他发行版建议从 release 的 ZIP 包运行,README 里也特意标注了这点。

Q:GIF 图标上传失败?

预览图有体积上限(约 1MB),尺寸和格式不合规时verify_icon会先拦截,把 GIF 压缩到限制内再传即可。

Q:开发模式下改了前端代码没反应?

确认npm run dev的终端没有被关掉,Vite 热更新依赖它持续运行;另外tauri.conf.jsondevPath指向localhost:1420,端口被占用时需先释放。

Q:工具和 Steam 自带工具冲突吗?

不冲突。GMPublisher 完全不依赖gmad.exegmpublish.exe,它自己实现了 GMA 的读写与上传逻辑,所以即使你没装 Steam 命令行工具也能正常工作。

写在最后:从"能用"到"好用"

回顾一下,GMPublisher 解决的是加里模组内容作者和玩家最日常的三件事:发得爽、下得快、管得清。它的价值不只是把命令行变成了图形界面,而是把发布、下载、解压、分析这些原本散落在不同工具里的操作收拢到了一个入口里——并且全程保持约 10MB 的小体积,这在 Tauri 应用里称得上教科书级的发挥。

如果你还只是停留在"订阅别人插件"的阶段,不妨先从下载页和体积分析页用起;等有一天你做出了自己的第一个 addon,再打开发布页,你会发现上传工坊这件事,原来可以这么顺滑。项目自带的中文语言包(i18n/zh-cn.json)也说明作者对中文用户很上心,值得一试。

【免费下载链接】gmpublisher⚙️ Workshop Publishing Utility for Garry's Mod, written in Rust & Svelte and powered by Tauri项目地址: https://gitcode.com/gh_mirrors/gm/gmpublisher

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/20 17:04:41

GPBoost源码架构深度解析:C++核心如何优雅驱动Python与R双语言

GPBoost源码架构深度解析:C核心如何优雅驱动Python与R双语言 【免费下载链接】GPBoost Tree-Boosting, Gaussian Processes, and Mixed-Effects Models 项目地址: https://gitcode.com/gh_mirrors/gp/GPBoost GPBoost是一款将梯度提升树(Tree-Boo…

作者头像 李华