#executable #icons #metadata #projects #sdk #build-script #windows

build winres

创建并设置可执行文件的Windows图标和元数据

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

Download history 45247/week @ 2024-03-26 48318/week @ 2024-04-02 35814/week @ 2024-04-09 45846/week @ 2024-04-16 46505/week @ 2024-04-23 43141/week @ 2024-04-30 38112/week @ 2024-05-07 42523/week @ 2024-05-14 42445/week @ 2024-05-21 45830/week @ 2024-05-28 41358/week @ 2024-06-04 36435/week @ 2024-06-11 36634/week @ 2024-06-18 41074/week @ 2024-06-25 38117/week @ 2024-07-02 29401/week @ 2024-07-09

每月下载量 151,796
138 个crate中使用(117 个直接使用)

MIT 许可证

36KB
506

winres

一个简单的库,用于简化向Windows可执行文件和动态库添加元信息和图标。

文档

工具包

在开始之前,您需要安装适当的工具。

如果您使用的是与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资源管理器的文件属性中

FileDescriptionProductNameProductVersionOriginalFilenameLegalCopyright

有关可执行文件/库的版本信息部分的更多详细信息,请参阅 MSDN

关于本项目

我主要编写了这个crate用于我的个人项目,尽管我在我的个人电脑上测试了它,但我不知道它在每个地方的行为是否相同。

简而言之,我非常依赖于您的错误报告和功能建议来改进这个crate。

依赖项

约235-485KB
约11K SLoC