Skip to content

Commit 00498ce

Browse files
fix(jetsocat): embed Windows icon and version metadata
1 parent b50e5d0 commit 00498ce

4 files changed

Lines changed: 97 additions & 0 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jetsocat/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ version.workspace = true
44
authors = ["Devolutions Inc. <infos@devolutions.net>"]
55
edition = "2024"
66
description = "(Web)Socket toolkit for jet protocol related operations"
7+
build = "build.rs"
78
publish = false
89

910
[lints]
@@ -81,3 +82,6 @@ features = [
8182
"Win32_Globalization",
8283
]
8384

85+
[target.'cfg(windows)'.build-dependencies]
86+
embed-resource = "3.0"
87+

jetsocat/build.rs

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
fn main() {
2+
#[cfg(target_os = "windows")]
3+
win::embed_resources();
4+
}
5+
6+
#[cfg(target_os = "windows")]
7+
mod win {
8+
use std::{env, fs};
9+
10+
pub(super) fn embed_resources() {
11+
let out_dir = env::var("OUT_DIR").expect("failed to get OUT_DIR");
12+
let version_rc_file = format!("{out_dir}/version.rc");
13+
let version_rc_data = generate_version_rc();
14+
fs::write(&version_rc_file, version_rc_data).expect("failed to write version.rc");
15+
16+
println!("cargo:rerun-if-changed=resources.rc");
17+
println!("cargo:rerun-if-changed=../package/WindowsManaged/Resources/DevolutionsGateway.ico");
18+
19+
embed_resource::compile(&version_rc_file, embed_resource::NONE)
20+
.manifest_required()
21+
.expect("failed to compile version.rc");
22+
embed_resource::compile("resources.rc", embed_resource::NONE)
23+
.manifest_required()
24+
.expect("failed to embed resources.rc");
25+
}
26+
27+
fn generate_version_rc() -> String {
28+
let output_name = "jetsocat";
29+
let filename = format!("{output_name}.exe");
30+
let company_name = "Devolutions Inc.";
31+
let legal_copyright = format!("Copyright 2020-2026 {company_name}");
32+
33+
let mut version_number = env::var("CARGO_PKG_VERSION").expect("failed to get CARGO_PKG_VERSION");
34+
version_number.push_str(".0");
35+
let version_commas = version_number.replace('.', ",");
36+
let file_description = "jetsocat";
37+
let file_version = version_number.clone();
38+
let internal_name = filename.clone();
39+
let original_filename = filename;
40+
let product_name = "jetsocat";
41+
let product_version = version_number;
42+
let vs_file_version = version_commas.clone();
43+
let vs_product_version = version_commas;
44+
45+
format!(
46+
r#"#include <winresrc.h>
47+
VS_VERSION_INFO VERSIONINFO
48+
FILEVERSION {vs_file_version}
49+
PRODUCTVERSION {vs_product_version}
50+
FILEFLAGSMASK 0x3fL
51+
#ifdef _DEBUG
52+
FILEFLAGS 0x1L
53+
#else
54+
FILEFLAGS 0x0L
55+
#endif
56+
FILEOS 0x40004L
57+
FILETYPE 0x1L
58+
FILESUBTYPE 0x0L
59+
BEGIN
60+
BLOCK "StringFileInfo"
61+
BEGIN
62+
BLOCK "040904b0"
63+
BEGIN
64+
VALUE "CompanyName", "{company_name}"
65+
VALUE "FileDescription", "{file_description}"
66+
VALUE "FileVersion", "{file_version}"
67+
VALUE "InternalName", "{internal_name}"
68+
VALUE "LegalCopyright", "{legal_copyright}"
69+
VALUE "OriginalFilename", "{original_filename}"
70+
VALUE "ProductName", "{product_name}"
71+
VALUE "ProductVersion", "{product_version}"
72+
END
73+
END
74+
BLOCK "VarFileInfo"
75+
BEGIN
76+
VALUE "Translation", 0x409, 1200
77+
END
78+
END"#,
79+
vs_file_version = vs_file_version,
80+
vs_product_version = vs_product_version,
81+
company_name = company_name,
82+
file_description = file_description,
83+
file_version = file_version,
84+
internal_name = internal_name,
85+
legal_copyright = legal_copyright,
86+
original_filename = original_filename,
87+
product_name = product_name,
88+
product_version = product_version
89+
)
90+
}
91+
}

jetsocat/resources.rc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
101 ICON "../package/WindowsManaged/Resources/DevolutionsGateway.ico"

0 commit comments

Comments
 (0)