#manifest #build-script #build #build-environment #windows

构建 embed-manifest

构建脚本库,易于嵌入 Windows 曼ifest

7 个稳定版本

1.4.0 2023年6月21日
1.3.1 2022年8月7日
1.3.0 2022年5月1日
1.2.1 2022年4月18日
1.0.0 2021年12月18日

构建工具 中排名 #127

Download history 273/week @ 2024-03-13 390/week @ 2024-03-20 727/week @ 2024-03-27 693/week @ 2024-04-03 818/week @ 2024-04-10 976/week @ 2024-04-17 805/week @ 2024-04-24 719/week @ 2024-05-01 616/week @ 2024-05-08 655/week @ 2024-05-15 627/week @ 2024-05-22 599/week @ 2024-05-29 411/week @ 2024-06-05 572/week @ 2024-06-12 402/week @ 2024-06-19 506/week @ 2024-06-26

每月下载量:1,988
用于 2 crates

MIT 许可证

73KB
1K SLoC

Rust 的 Windows Manifest 嵌入

embed-manifest crate 提供了一种简单的方法来在可执行文件中嵌入 Windows manifest,无论构建环境如何,无需依赖来自 LLVM 或 MinGW 的外部工具。

如果您需要嵌入的不仅仅是 manifest,您可能发现 winresembed-resource crate 更合适。尽管它们有额外的依赖和设置要求,可能会使它们的使用稍微复杂一些。

为什么要使用它?

Rust 编译器不会将 manifest 添加到 Windows 可执行文件中,这意味着它将运行一些兼容性选项和设置,使程序看起来像在较旧的 Windows 版本上运行。通过使用此 crate 添加应用程序 manifest,即使交叉编译

  • 具有类似于安装程序的名称的 32 位程序不会尝试以管理员身份运行。
  • 32 位程序不会显示虚拟化的文件系统和注册表视图。
  • 许多非 Unicode API 接受 UTF-8 字符串,与 Rust 使用的一致。
  • 程序看到的是真实的 Windows 版本,而不是 Windows Vista。
  • 内置的消息框和其他 UI 元素可以在高 DPI 显示器上显示而不模糊。
  • 其他功能,如 API 中的长路径名,也可以启用。

用法

要嵌入默认的 manifest,请将以下代码包含在 build.rs 构建脚本中

use embed_manifest::{embed_manifest, new_manifest};

fn main() {
    if std::env::var_os("CARGO_CFG_WINDOWS").is_some() {
        embed_manifest(new_manifest("Contoso.Sample"))
            .expect("unable to embed manifest file");
    }
    println!("cargo:rerun-if-changed=build.rs");
}

有关如何自定义嵌入的 manifest 的信息,请参阅 crate 文档

许可证

为了避免怀疑,尽管此 crate 本身是根据 MIT 许可证向您授予的,但这不会影响您自己代码的版权状态和许可,当它从 Cargo 构建脚本中使用时。

无运行时依赖