12个版本
使用旧的Rust 2015
0.1.12 | 2021年9月28日 |
---|---|
0.1.11 | 2019年6月20日 |
0.1.9 | 2019年3月25日 |
0.1.8 | 2018年11月26日 |
0.1.0 | 2016年7月28日 |
在 Windows APIs 中排名第8
每月下载量 151,796
在 138 个crate中使用(117 个直接使用)
36KB
506 行
winres
一个简单的库,用于简化向Windows可执行文件和动态库添加元信息和图标。
工具包
在开始之前,您需要安装适当的工具。
rc.exe
来自 Windows SDKwindres.exe
和ar.exe
来自 minGW64
如果您使用的是与MSVC ABI兼容的Rust,则需要Windows SDK;如果您使用的是GNU ABI,则需要minGW64。
Windows SDK可以在注册表中找到,minGW64需要在路径中。
使用winres
首先,您需要在您的crate(build.rs
)中添加一个构建脚本,通过将其添加到crate的Cargo.toml
文件中来实现
[package]
#...
build = "build.rs"
[build-dependencies]
winres = "0.1"
接下来,您需要编写一个构建脚本。下面是一个简短的示例。
// build.rs
extern crate winres;
fn main() {
if cfg!(target_os = "windows") {
let mut res = winres::WindowsResource::new();
res.set_icon("test.ico");
res.compile().unwrap();
}
}
就是这样。文件 test.ico
应位于与 build.rs
相同的目录中。元信息(如程序版本和描述)来自 Cargo.toml
的 [package]
部分。
请注意,在非Windows平台上使用此crate的行为是未定义的。它不包含防止这样做的方法。尽管如此,它仍然可以编译;但是,如上所示,build.rs
应包含一个 cfg
选项。
另一种可能性是将 cfg
作为指令使用,以避免在Unix平台上完全构建 winres
。这将节省构建时间。因此,之前的示例可以如下所示
[package]
#...
build = "build.rs"
[target.'cfg(windows)'.build-dependencies]
winres = "0.1"
接下来,您需要编写一个构建脚本。下面是一个简短的示例。
// build.rs
#[cfg(windows)]
extern crate winres;
#[cfg(windows)]
fn main() {
let mut res = winres::WindowsResource::new();
res.set_icon("test.ico");
res.compile().unwrap();
}
#[cfg(unix)]
fn main() {
}
附加选项
为了方便起见,winres
会解析 Cargo.toml
中的 package.metadata.winres
部分
[package.metadata.winres]
OriginalFilename = "PROGRAM.EXE"
LegalCopyright = "Copyright © 2016"
#...
本节可能包含任意字符串键值对,这些键值对将被包含在可执行文件/库文件的版本信息部分。
以下键具有特殊含义,并将显示在Windows资源管理器的文件属性中
FileDescription
,ProductName
,ProductVersion
,OriginalFilename
和 LegalCopyright
有关可执行文件/库的版本信息部分的更多详细信息,请参阅 MSDN。
关于本项目
我主要编写了这个crate用于我的个人项目,尽管我在我的个人电脑上测试了它,但我不知道它在每个地方的行为是否相同。
简而言之,我非常依赖于您的错误报告和功能建议来改进这个crate。
依赖项
约235-485KB
约11K SLoC