#windows #resources #icons #compiler #external #file #script

build embedinator

A simple windows resource compiler that does not rely on external tools

1 unstable release

0.1.0 Nov 24, 2024

#250 in Build Utils

Download history 52/week @ 2024-11-18 86/week @ 2024-11-25 14/week @ 2024-12-09

152 downloads per month

MIT license

36KB
857 lines

embedinator

A simple utility to embed resources such as icons or manifests into a Windows executable from a cargo build script.

The advantage of crate over others such as windres is that this crate directly outputs a linkable library file instead of relying on, possibly missing, platform tools such as rc.exe and cvtres.exe.

Additionally, this crate has no other dependencies.

Example

#[cfg(windows)]
fn main() {
    embedinator::ResourceBuilder::from_env()
        .add_manifest(std::fs::read_to_string("assets/app.manifest").unwrap())
        .add_icon(32512, Icon::from_png_bytes(std::fs::read("app.png").unwrap()))
        .finish();
    println!("cargo:rerun-if-changed=app.manifest");
    println!("cargo:rerun-if-changed=app.png");
}

lib.rs:

A simple utility for embedding resources in Windows executables.

Example

#[cfg(windows)]
fn main() {
   embedinator::ResourceBuilder::from_env()
       .add_manifest(std::fs::read_to_string("assets/app.manifest").unwrap())
       .add_icon(32512, Icon::from_png_bytes(std::fs::read("app.png").unwrap()))
       .finish();
   println!("cargo:rerun-if-changed=app.manifest");
   println!("cargo:rerun-if-changed=app.png");
}

Limitations

Currently always sets the language to 0x0409 (English, US) as I don't fully understand how multilingual resource files are supposed to look like.

No runtime deps