From e4353fca97aec1b52d376313075ce4ce713220a0 Mon Sep 17 00:00:00 2001 From: ppc Date: Sat, 10 Jan 2026 10:09:01 +0000 Subject: [PATCH] add windows resource embeddings --- Cargo.lock | 95 ++++++++++++++++++++++++++++++++++++++++- amnet-server/Cargo.toml | 4 ++ amnet-server/build.rs | 32 ++++++++++++++ 3 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 amnet-server/build.rs diff --git a/Cargo.lock b/Cargo.lock index a32a0f1..efe06dc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -16,6 +16,7 @@ dependencies = [ "tracing", "tracing-subscriber", "windows-sys 0.61.2", + "winresource", ] [[package]] @@ -140,6 +141,12 @@ dependencies = [ "const-random", ] +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + [[package]] name = "form_urlencoded" version = "1.2.2" @@ -199,6 +206,12 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + [[package]] name = "hostname" version = "0.4.2" @@ -292,6 +305,16 @@ dependencies = [ "tower-service", ] +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", +] + [[package]] name = "itoa" version = "1.0.17" @@ -367,7 +390,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" dependencies = [ "dlv-list", - "hashbrown", + "hashbrown 0.14.5", ] [[package]] @@ -476,6 +499,15 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serde_spanned" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +dependencies = [ + "serde_core", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -573,6 +605,45 @@ dependencies = [ "syn", ] +[[package]] +name = "toml" +version = "0.9.11+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_parser" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_writer" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" + [[package]] name = "tower" version = "0.5.2" @@ -687,6 +758,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -782,6 +859,22 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" +[[package]] +name = "winnow" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" + +[[package]] +name = "winresource" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b021990998587d4438bb672b5c5f034cbc927f51b45e3807ab7323645ef4899" +dependencies = [ + "toml", + "version_check", +] + [[package]] name = "zmij" version = "1.0.11" diff --git a/amnet-server/Cargo.toml b/amnet-server/Cargo.toml index 95dd36f..9752c64 100644 --- a/amnet-server/Cargo.toml +++ b/amnet-server/Cargo.toml @@ -1,6 +1,7 @@ [package] name = "amnet" edition = "2024" +build = "build.rs" version.workspace = true authors.workspace = true @@ -25,3 +26,6 @@ tower = "0.5.2" tower-http = { version = "0.6.8", features = ["cors", "trace"] } windows-sys = { version = "0.61.2", features = ["Win32_System_Console", "Win32_UI_Input_KeyboardAndMouse"] } tracing-subscriber = "0.3.22" + +[build-dependencies] +winresource = "0.1" \ No newline at end of file diff --git a/amnet-server/build.rs b/amnet-server/build.rs new file mode 100644 index 0000000..b26417b --- /dev/null +++ b/amnet-server/build.rs @@ -0,0 +1,32 @@ +fn main() { + if std::env::var("CARGO_CFG_TARGET_OS").unwrap_or_default() == "windows" { + set_windows_resource_version(); + } +} + +fn set_windows_resource_version() { + let version_str = env!("CARGO_PKG_VERSION"); + let version_parts: Vec<&str> = version_str.split('.').collect(); + let mut normalized_parts = vec!["0", "0", "0", "0"]; + + for (i, part) in version_parts.iter().enumerate().take(4) { + normalized_parts[i] = part; + } + + let version_display = normalized_parts.join("."); + + let mut res = winresource::WindowsResource::new(); + + res.set("FileVersion", &version_display); + res.set("ProductVersion", "2.0.0.0"); + res.set("ProductName", "AMNet"); + res.set("FileDescription", "AMNet Server"); + res.set("CompanyName", "ppc"); + res.set("InternalName", "amnet-server"); + res.set("OriginalFilename", "amnet.dll"); + res.set("LegalCopyright", "Copyright 2026 (c) ppc"); + + if let Err(e) = res.compile() { + println!("cargo:warning=Failed to set Windows resource information: {}", e); + } +}