mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-28 03:58:45 -06:00
* M14: give Windows PDF files a dedicated document icon Embed the document icon as resource 2 through the existing Windows resource build and select it in both PDF association registrations. Keep the asset reproducible and carry its required licence notices in Windows packages. Formatting, strict Clippy, 1,842 existing workspace tests, all 30 WASM crate checks, assets, layering and parity pass. The Windows x64 release package checks pass, and the contributor confirmed the icon in Explorer. Co-authored-by: Codex <noreply@openai.com> * Refresh catalog hashes after merging main --------- Co-authored-by: Codex <noreply@openai.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>
38 lines
1.8 KiB
Rust
38 lines
1.8 KiB
Rust
//! Windows only: embed the app icon and version info (VERSIONINFO) into `pdfcraft.exe`, so it
|
|
//! shows in Explorer, the taskbar, the Start menu and Alt-Tab. A separate PDF document icon
|
|
//! uses resource ID 2; the installer references it as `pdfcraft.exe,-2`.
|
|
//!
|
|
//! On every other target this does nothing. A missing resource compiler is a warning, so a
|
|
//! cross-compile from macOS or Linux still links, unless `PDFCRAFT_REQUIRE_WINRES=1` turns it
|
|
//! into an error (for release builds).
|
|
|
|
#[path = "src/windows_manifest.rs"]
|
|
mod windows_manifest;
|
|
|
|
fn main() {
|
|
println!("cargo:rerun-if-changed=build.rs");
|
|
println!("cargo:rerun-if-changed=../../assets/app-icon/pdfcraft.ico");
|
|
println!("cargo:rerun-if-changed=../../assets/app-icon/pdfcraft-document.ico");
|
|
println!("cargo:rerun-if-changed=src/windows_manifest.rs");
|
|
println!("cargo:rerun-if-env-changed=PDFCRAFT_REQUIRE_WINRES");
|
|
if std::env::var("CARGO_CFG_TARGET_OS").as_deref() != Ok("windows") {
|
|
return;
|
|
}
|
|
let mut res = winresource::WindowsResource::new();
|
|
res.set_icon("../../assets/app-icon/pdfcraft.ico")
|
|
.set_icon_with_id("../../assets/app-icon/pdfcraft-document.ico", "2")
|
|
.set_manifest(windows_manifest::WINDOWS_MANIFEST)
|
|
.set("ProductName", "PdfCraft")
|
|
.set("FileDescription", "PdfCraft PDF workbench")
|
|
.set("LegalCopyright", "Copyright (c) the PdfCraft contributors. MIT OR Apache-2.0.")
|
|
.set("OriginalFilename", "pdfcraft.exe")
|
|
.set("InternalName", "pdfcraft");
|
|
if let Err(e) = res.compile() {
|
|
if std::env::var_os("PDFCRAFT_REQUIRE_WINRES").is_some() {
|
|
println!("cargo::error=embedding Windows resources failed: {e}");
|
|
return;
|
|
}
|
|
println!("cargo:warning=pdfcraft.exe built without icon/version resources: {e}");
|
|
}
|
|
}
|