17 个版本 (7 个稳定版)
2.0.0-beta.2 | 2023年12月23日 |
---|---|
2.0.0-alpha.0 | 2023年3月29日 |
1.2.1 | 2023年4月23日 |
1.1.1 | 2023年1月21日 |
0.1.3 | 2021年2月22日 |
#1 in 游戏
1,971 每月下载次数
在 20 个crate中(13 个直接使用) 使用
66KB
1.5K SLoC
steamlocate
一个库,能够高效地定位文件系统中的任何 Steam 应用程序,以及/或 Steam 安装本身。
当您不希望程序依赖于 Steamworks API 时,最好使用此库。在某些情况下,可能更适合使用 Steamworks API,在这种情况下,我推荐出色的 steamworks 库。您不需要成为 Steamworks 合作伙伴即可从 Steamworks API 获取安装目录位置。
使用 steamlocate
只需使用 cargo
添加 steamlocate
即可。
$ cargo add steamlocate
功能标志
默认: locate
功能标志 | 描述 |
---|---|
locate |
启用在支持的平台上自动检测 Steam 安装(目前为 Windows、MacOS 和 Linux)。不支持的平台将返回运行时错误。 |
示例
定位 Steam 安装和特定游戏
SteamDir
将是您进入 API 的入口点。找到它后,您可以访问相关信息的任何部分。
let steam_dir = steamlocate::SteamDir::locate()?;
println!("Steam installation - {}", steam_dir.path().display());
// ^^ prints something like `Steam installation - C:\Program Files (x86)\Steam`
const GMOD_APP_ID: u32 = 4_000;
let (garrys_mod, _lib) = steam_dir
.find_app(GMOD_APP_ID)?
.expect("Of course we have G Mod");
assert_eq!(garrys_mod.name.as_ref().unwrap(), "Garry's Mod");
println!("{garrys_mod:#?}");
// ^^ prints something like vv
App {
app_id: 4_000,
install_dir: "GarrysMod",
name: Some("Garry's Mod"),
universe: Some(Public),
// much much more data
}
获取系统上所有库和应用的概览
您可以从 steam 目录迭代所有 Steam 的库。然后,从每个库中迭代所有其应用。
let steam_dir = steamlocate::SteamDir::locate()?;
for library in steam_dir.libraries()? {
let library = library?;
println!("Library - {}", library.path().display());
for app in library.apps() {
let app = app?;
println!(" App {} - {:?}", app.app_id, app.name);
}
}
在我的笔记本电脑上,这会打印
Library - /home/wintermute/.local/share/Steam
App 1628350 - Steam Linux Runtime 3.0 (sniper)
App 1493710 - Proton Experimental
App 4000 - Garry's Mod
Library - /home/wintermute/temp steam lib
App 391540 - Undertale
App 1714040 - Super Auto Pets
App 2348590 - Proton 8.0
贡献
除非您明确声明,否则您提交的任何有意包含在本作品中的贡献,根据 MIT 许可证定义,均应按上述方式许可,不附加任何其他条款或条件。
依赖项
~2–13MB
~109K SLoC